├── .eslintrc ├── .gitattributes ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── examples ├── base.js ├── hookable.js └── mixin.js ├── index.js ├── package-lock.json ├── package.json └── test ├── .jshintrc ├── mocha.opts └── unit.tests.js /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": "populist" 4 | } 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | package-lock.json binary 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .DS_Store 4 | coverage/ 5 | .nyc_output 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "6" 5 | - "8" 6 | - "10" 7 | - "11" 8 | 9 | before_install: 10 | - travis_retry npm install 11 | 12 | matrix: 13 | allow_failures: 14 | - node_js: "11" 15 | 16 | script: 17 | - npm test 18 | 19 | notifications: 20 | email: 21 | - travis@nodejitsu.com 22 | 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Charlie Robbins & the Contributors 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Tests](http://img.shields.io/travis/indexzero/broadway.svg?style=flat-square)](https://travis-ci.org/indexzero/broadway)[![Dependencies](https://img.shields.io/david/indexzero/broadway.svg?style=flat-square)](https://david-dm.org/indexzero/broadway)[![NPM](http://img.shields.io/npm/v/broadway.svg?style=flat-square)](http://browsenpm.org/package/broadway) 2 | 3 | # broadway 4 | 5 | _*Lightweight App extensibility and hookable middleware customization.*_ 6 | 7 | ## Usage 8 | 9 | `broadway` is designed to be the littlest possible extensibility for server applications. It is does not take any other external dependencies besides those to expose basic "start middleware". 10 | 11 | Additional functionality may be added through `.mixin(base, redefine)`: 12 | 13 | ``` js 14 | var express = require('express'), 15 | App = require('broadway'); 16 | 17 | // 18 | // Create a new base App. 19 | // 20 | var app = new App({ http: 8080 }); 21 | 22 | // 23 | // Then mixin `express` functionality later on. This 24 | // can be called multiple times. By default: it will 25 | // only define a single property on your app once. 26 | // 27 | app.mixin(express()); 28 | 29 | // 30 | // Do anything you want asynchronously before 31 | // the application starts. 32 | // 33 | app.preboot(function (app, options, next) { 34 | console.log('Starting up...'); 35 | next(); 36 | }); 37 | 38 | // 39 | // Start listening on HTTP port passed in to 40 | // App when it was created above. 41 | // 42 | app.start(function (err) { 43 | if (err) { 44 | console.error('Error on startup: %s', err.message); 45 | return process.exit(1); 46 | } 47 | 48 | console.log('Listening over HTTP on port %s', this.given.http); 49 | }); 50 | ``` 51 | 52 | ### "Hookable" middleware 53 | 54 | Because `broadway` exposes a generic hook mechanism from [understudy] it is possible to write hooks into your middleware easily. Consider the following example that defines hookable "auth" handlers into its existing authorization middleware: 55 | 56 | ``` js 57 | var express = require('express'), 58 | basicAuth = require('basic-auth'), 59 | App = require('broadway'); 60 | 61 | // 62 | // Create an app with default http options, 63 | // mixin all express functions 64 | // 65 | var app = new App({ http: 8080 }, express()); 66 | 67 | // 68 | // Define a simple "auth" middleware that only 69 | // performs Basic Auth. 70 | // 71 | app.use(function auth(req, res, next) { 72 | // 73 | // Before checking and/or parsing the Basic Auth 74 | // header allow others to attempt their auth methods. 75 | // 76 | app.perform('auth', req, res, function (done) { 77 | var creds = basicAuth(req); 78 | 79 | if (req.authed) { 80 | return done(); 81 | } 82 | else if (!creds || creds.name !== 'bob' || creds.pass !== 'secret') { 83 | res.writeHead(401, { 'WWW-Authenticate': 'Basic realm="example"' }); 84 | res.end('Unauthorized\n'); 85 | return; 86 | } 87 | 88 | done(); 89 | }, next); 90 | }); 91 | 92 | // 93 | // Hook into the new "auth middleware" defined above 94 | // to add support for the `X-AUTH-TOKEN` header. 95 | // 96 | app.before('auth', function (req, res, next) { 97 | var bearerToken = req.headers['x-auth-token']; 98 | 99 | if (bearerToken === 'golden-ticket') { 100 | req.authed = true; 101 | } 102 | 103 | next(); 104 | }); 105 | 106 | // ... continue starting the app as usual. 107 | ``` 108 | 109 | ## Tests 110 | All tests are written with [mocha] and should be run with `npm`: 111 | 112 | ``` bash 113 | $ npm test 114 | ``` 115 | 116 | #### [Charlie Robbins](https://github.com/indexzero) 117 | #### License: MIT 118 | 119 | [mocha]: http://mochajs.org/ 120 | [understudy]: https://github.com/bmeck/understudy 121 | -------------------------------------------------------------------------------- /examples/base.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | App = require('../'); 3 | 4 | // 5 | // Create an app with default http options, 6 | // mixin all express functions 7 | // 8 | var app = new App({ http: 8080 }, express()); 9 | 10 | // 11 | // Do anything you want asynchronously before 12 | // the application starts. 13 | // 14 | app.preboot(function (app, options, next) { 15 | console.log('Starting up...'); 16 | next(); 17 | }); 18 | 19 | // 20 | // Start listening on HTTP port passed in to 21 | // App when it was created above. 22 | // 23 | app.start(function (err) { 24 | if (err) { 25 | console.error('Error on startup: %s', err.message); 26 | return process.exit(1); 27 | } 28 | 29 | console.log('Listening over HTTP on port %s', this.given.http); 30 | }); 31 | -------------------------------------------------------------------------------- /examples/hookable.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | basicAuth = require('basic-auth'), 3 | App = require('../'); 4 | 5 | // 6 | // Create an app with default http options, 7 | // mixin all express functions 8 | // 9 | var app = new App({ http: 8080 }, express()); 10 | 11 | // 12 | // Define a simple "auth" middleware that only 13 | // performs Basic Auth. 14 | // 15 | app.use(function auth(req, res, next) { 16 | // 17 | // Before checking and/or parsing the Basic Auth 18 | // header allow others to attempt their auth methods. 19 | // 20 | app.perform('auth', req, res, function (done) { 21 | var creds = basicAuth(req); 22 | 23 | if (req.authed) { 24 | return done(); 25 | } else if (!creds || creds.name !== 'bob' || creds.pass !== 'secret') { 26 | res.writeHead(401, { 'WWW-Authenticate': 'Basic realm="example"' }); 27 | res.end('Unauthorized\n'); 28 | return; 29 | } 30 | 31 | done(); 32 | }, next); 33 | }); 34 | 35 | // 36 | // Hook into the new "auth middleware" defined above 37 | // to add support for the `X-AUTH-TOKEN` header. 38 | // 39 | app.before('auth', function (req, res, next) { 40 | var bearerToken = req.headers['x-auth-token']; 41 | 42 | if (bearerToken === 'golden-ticket') { 43 | req.authed = true; 44 | } 45 | 46 | next(); 47 | }); 48 | 49 | // 50 | // Start listening on HTTP port passed in 51 | // explicitly at start-time below. 52 | // 53 | app.start(function (err) { 54 | if (err) { 55 | console.error('Error on startup: %s', err.message); 56 | return process.exit(1); 57 | } 58 | 59 | console.log('Listening over HTTP on port %s', this.given.http); 60 | }); 61 | -------------------------------------------------------------------------------- /examples/mixin.js: -------------------------------------------------------------------------------- 1 | var express = require('express'), 2 | App = require('../'); 3 | 4 | // 5 | // Create a new base App. 6 | // 7 | var app = new App(); 8 | 9 | // 10 | // Then mixin `express` functionality later on. This 11 | // can be called multiple times. By default: it will 12 | // only define a single property on your app once. 13 | // 14 | app.mixin(express()); 15 | 16 | // 17 | // Do anything you want asynchronously before 18 | // the application starts. 19 | // 20 | app.preboot(function (app, options, next) { 21 | console.log('Starting up...'); 22 | next(); 23 | }); 24 | 25 | // 26 | // Start listening on HTTP port passed in 27 | // explicitly at start-time below. 28 | // 29 | app.start({ http: 8080 }, function (err) { 30 | if (err) { 31 | console.error('Error on startup: %s', err.message); 32 | return process.exit(1); 33 | } 34 | 35 | console.log('Listening over HTTP on port %s', this.given.http); 36 | }); 37 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var createServers = require('create-servers'), 2 | mixin = require('merge-descriptors'), 3 | Understudy = require('understudy'); 4 | 5 | /* 6 | * function App(given?, [base]) 7 | * Creates a new App instance with the `given` supplied; 8 | * will optionally mixin any properties on the `base` onto 9 | * this instance. 10 | * 11 | */ 12 | var App = module.exports = function App(given, base) { 13 | Understudy.call(this); 14 | this.given = given || {}; 15 | 16 | if (base) { 17 | this.mixin(base); 18 | } 19 | 20 | // 21 | // This is a simple internal shim for other config loaders 22 | // 23 | var self = this; 24 | this.config = { 25 | get: function (key) { 26 | return self.given[key]; 27 | } 28 | }; 29 | }; 30 | 31 | /* 32 | * function preboot(fn) 33 | * Adds the "start middleware" to this instance. 34 | */ 35 | App.prototype.preboot = function preboot(fn) { 36 | this.before('start', fn); 37 | }; 38 | 39 | /* 40 | * function mixin (ext, redine) 41 | * Mixes in any properties in `ext`. If `redefine` is 42 | * set to true, any properties on `ext` already existing 43 | * on this instance will be redefined. 44 | */ 45 | App.prototype.mixin = function mixin_(ext, redefine) { 46 | mixin(this, ext, redefine || false); 47 | }; 48 | 49 | /* 50 | * function start ([options], callback) 51 | * Attempts to listen on HTTP(S) servers after 52 | * executing all "start middlewares" defined by 53 | * 54 | * app.preboot(function initFn(app, options, next) { 55 | * // Do startup things here. 56 | * next(); 57 | * }); 58 | */ 59 | App.prototype.start = function start(options, callback) { 60 | if (!callback && typeof options === 'function') { 61 | callback = options; 62 | options = {}; 63 | } 64 | 65 | mixin(this.given, options, true); 66 | 67 | this.perform('setup', this, this.given, function (setup) { 68 | // 69 | // This is a no-op because we want all after "setup" hooks 70 | // to complete before any "start" hooks 71 | // 72 | setup(); 73 | }, function (err) { 74 | if (err) { return callback(err); } 75 | this.perform('start', this, this.given, this._listen, callback); 76 | }); 77 | }; 78 | 79 | /* 80 | * function close (callback) 81 | * Closes all HTTP(S) servers on the App, 82 | * if they are defined. 83 | */ 84 | App.prototype.close = function close(callback) { 85 | if (!this.servers) { 86 | return callback(new Error('No servers to close.')); 87 | } 88 | 89 | this.perform('close', this, this.given, function (next) { 90 | const servers = Object.values(this.servers).reduce((all, serverOrServers) => all.concat(serverOrServers), []); 91 | let closed = 0; 92 | 93 | /* 94 | * Invokes the callback once all the servers have 95 | * closed. 96 | */ 97 | function onClosed() { 98 | if (++closed === servers.length) { 99 | return void next(); 100 | } 101 | } 102 | 103 | servers.forEach(function closeServer(server) { 104 | server.close(onClosed); 105 | }); 106 | }, callback); 107 | }; 108 | 109 | /* 110 | * function _listen (callback) 111 | * Starts up an HTTP and/or HTTPS server depending 112 | * on the respective options on this instance. 113 | */ 114 | App.prototype._listen = function _listen(callback) { 115 | var self = this; 116 | if (typeof this.handle !== 'function') { 117 | return callback(new Error('A handle function must be defined.')); 118 | } 119 | 120 | var ports = { 121 | http: this.config.get('http'), 122 | https: this.config.get('https') 123 | }; 124 | 125 | createServers({ 126 | http: typeof ports.http !== 'undefined' ? ports.http : this.given.http, 127 | https: typeof ports.https !== 'undefined' ? ports.https : this.given.https, 128 | // 129 | // Remark: is not doing a `bind` a performance optimization 130 | // from express? 131 | // 132 | // https://github.com/strongloop/express/blob/master/lib/express.js#L28 133 | // 134 | handler: this.handle.bind(this) 135 | }, function onListen(err, servers) { 136 | if (err) { return callback(err); } 137 | self.servers = servers; 138 | callback(); 139 | }); 140 | }; 141 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "broadway", 3 | "version": "4.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.0.0", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", 10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/generator": { 17 | "version": "7.5.0", 18 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz", 19 | "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/types": "^7.5.0", 23 | "jsesc": "^2.5.1", 24 | "lodash": "^4.17.11", 25 | "source-map": "^0.5.0", 26 | "trim-right": "^1.0.1" 27 | } 28 | }, 29 | "@babel/helper-function-name": { 30 | "version": "7.1.0", 31 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", 32 | "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", 33 | "dev": true, 34 | "requires": { 35 | "@babel/helper-get-function-arity": "^7.0.0", 36 | "@babel/template": "^7.1.0", 37 | "@babel/types": "^7.0.0" 38 | } 39 | }, 40 | "@babel/helper-get-function-arity": { 41 | "version": "7.0.0", 42 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", 43 | "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", 44 | "dev": true, 45 | "requires": { 46 | "@babel/types": "^7.0.0" 47 | } 48 | }, 49 | "@babel/helper-split-export-declaration": { 50 | "version": "7.4.4", 51 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", 52 | "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", 53 | "dev": true, 54 | "requires": { 55 | "@babel/types": "^7.4.4" 56 | } 57 | }, 58 | "@babel/highlight": { 59 | "version": "7.5.0", 60 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 61 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 62 | "dev": true, 63 | "requires": { 64 | "chalk": "^2.0.0", 65 | "esutils": "^2.0.2", 66 | "js-tokens": "^4.0.0" 67 | }, 68 | "dependencies": { 69 | "js-tokens": { 70 | "version": "4.0.0", 71 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 72 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 73 | "dev": true 74 | } 75 | } 76 | }, 77 | "@babel/parser": { 78 | "version": "7.5.0", 79 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz", 80 | "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==", 81 | "dev": true 82 | }, 83 | "@babel/template": { 84 | "version": "7.4.4", 85 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", 86 | "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", 87 | "dev": true, 88 | "requires": { 89 | "@babel/code-frame": "^7.0.0", 90 | "@babel/parser": "^7.4.4", 91 | "@babel/types": "^7.4.4" 92 | } 93 | }, 94 | "@babel/traverse": { 95 | "version": "7.5.0", 96 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz", 97 | "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==", 98 | "dev": true, 99 | "requires": { 100 | "@babel/code-frame": "^7.0.0", 101 | "@babel/generator": "^7.5.0", 102 | "@babel/helper-function-name": "^7.1.0", 103 | "@babel/helper-split-export-declaration": "^7.4.4", 104 | "@babel/parser": "^7.5.0", 105 | "@babel/types": "^7.5.0", 106 | "debug": "^4.1.0", 107 | "globals": "^11.1.0", 108 | "lodash": "^4.17.11" 109 | }, 110 | "dependencies": { 111 | "debug": { 112 | "version": "4.1.1", 113 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 114 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 115 | "dev": true, 116 | "requires": { 117 | "ms": "^2.1.1" 118 | } 119 | } 120 | } 121 | }, 122 | "@babel/types": { 123 | "version": "7.5.0", 124 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz", 125 | "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==", 126 | "dev": true, 127 | "requires": { 128 | "esutils": "^2.0.2", 129 | "lodash": "^4.17.11", 130 | "to-fast-properties": "^2.0.0" 131 | } 132 | }, 133 | "accepts": { 134 | "version": "1.3.7", 135 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 136 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 137 | "dev": true, 138 | "requires": { 139 | "mime-types": "~2.1.24", 140 | "negotiator": "0.6.2" 141 | } 142 | }, 143 | "acorn": { 144 | "version": "5.7.3", 145 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", 146 | "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", 147 | "dev": true 148 | }, 149 | "acorn-jsx": { 150 | "version": "3.0.1", 151 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 152 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 153 | "dev": true, 154 | "requires": { 155 | "acorn": "^3.0.4" 156 | }, 157 | "dependencies": { 158 | "acorn": { 159 | "version": "3.3.0", 160 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 161 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 162 | "dev": true 163 | } 164 | } 165 | }, 166 | "ajv": { 167 | "version": "5.5.2", 168 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 169 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", 170 | "dev": true, 171 | "requires": { 172 | "co": "^4.6.0", 173 | "fast-deep-equal": "^1.0.0", 174 | "fast-json-stable-stringify": "^2.0.0", 175 | "json-schema-traverse": "^0.3.0" 176 | } 177 | }, 178 | "ajv-keywords": { 179 | "version": "2.1.1", 180 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", 181 | "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", 182 | "dev": true 183 | }, 184 | "ansi-colors": { 185 | "version": "3.2.3", 186 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", 187 | "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", 188 | "dev": true 189 | }, 190 | "ansi-escapes": { 191 | "version": "3.2.0", 192 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 193 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 194 | "dev": true 195 | }, 196 | "ansi-regex": { 197 | "version": "2.1.1", 198 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 199 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 200 | "dev": true 201 | }, 202 | "ansi-styles": { 203 | "version": "2.2.1", 204 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 205 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 206 | "dev": true 207 | }, 208 | "append-transform": { 209 | "version": "1.0.0", 210 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", 211 | "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", 212 | "dev": true, 213 | "requires": { 214 | "default-require-extensions": "^2.0.0" 215 | } 216 | }, 217 | "archy": { 218 | "version": "1.0.0", 219 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 220 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 221 | "dev": true 222 | }, 223 | "argparse": { 224 | "version": "1.0.10", 225 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 226 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 227 | "dev": true, 228 | "requires": { 229 | "sprintf-js": "~1.0.2" 230 | } 231 | }, 232 | "array-flatten": { 233 | "version": "1.1.1", 234 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 235 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", 236 | "dev": true 237 | }, 238 | "babel-code-frame": { 239 | "version": "6.26.0", 240 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 241 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 242 | "dev": true, 243 | "requires": { 244 | "chalk": "^1.1.3", 245 | "esutils": "^2.0.2", 246 | "js-tokens": "^3.0.2" 247 | }, 248 | "dependencies": { 249 | "chalk": { 250 | "version": "1.1.3", 251 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 252 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 253 | "dev": true, 254 | "requires": { 255 | "ansi-styles": "^2.2.1", 256 | "escape-string-regexp": "^1.0.2", 257 | "has-ansi": "^2.0.0", 258 | "strip-ansi": "^3.0.0", 259 | "supports-color": "^2.0.0" 260 | } 261 | }, 262 | "strip-ansi": { 263 | "version": "3.0.1", 264 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 265 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 266 | "dev": true, 267 | "requires": { 268 | "ansi-regex": "^2.0.0" 269 | } 270 | } 271 | } 272 | }, 273 | "balanced-match": { 274 | "version": "1.0.0", 275 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 276 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 277 | "dev": true 278 | }, 279 | "basic-auth": { 280 | "version": "1.1.0", 281 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", 282 | "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", 283 | "dev": true 284 | }, 285 | "body-parser": { 286 | "version": "1.19.0", 287 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 288 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 289 | "dev": true, 290 | "requires": { 291 | "bytes": "3.1.0", 292 | "content-type": "~1.0.4", 293 | "debug": "2.6.9", 294 | "depd": "~1.1.2", 295 | "http-errors": "1.7.2", 296 | "iconv-lite": "0.4.24", 297 | "on-finished": "~2.3.0", 298 | "qs": "6.7.0", 299 | "raw-body": "2.4.0", 300 | "type-is": "~1.6.17" 301 | }, 302 | "dependencies": { 303 | "debug": { 304 | "version": "2.6.9", 305 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 306 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 307 | "dev": true, 308 | "requires": { 309 | "ms": "2.0.0" 310 | } 311 | }, 312 | "ms": { 313 | "version": "2.0.0", 314 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 315 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 316 | "dev": true 317 | } 318 | } 319 | }, 320 | "brace-expansion": { 321 | "version": "1.1.11", 322 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 323 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 324 | "dev": true, 325 | "requires": { 326 | "balanced-match": "^1.0.0", 327 | "concat-map": "0.0.1" 328 | } 329 | }, 330 | "browser-stdout": { 331 | "version": "1.3.1", 332 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 333 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 334 | "dev": true 335 | }, 336 | "buffer-from": { 337 | "version": "1.1.1", 338 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 339 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 340 | "dev": true 341 | }, 342 | "bytes": { 343 | "version": "3.1.0", 344 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 345 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 346 | "dev": true 347 | }, 348 | "caching-transform": { 349 | "version": "3.0.2", 350 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", 351 | "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", 352 | "dev": true, 353 | "requires": { 354 | "hasha": "^3.0.0", 355 | "make-dir": "^2.0.0", 356 | "package-hash": "^3.0.0", 357 | "write-file-atomic": "^2.4.2" 358 | } 359 | }, 360 | "caller-path": { 361 | "version": "0.1.0", 362 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 363 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 364 | "dev": true, 365 | "requires": { 366 | "callsites": "^0.2.0" 367 | } 368 | }, 369 | "callsites": { 370 | "version": "0.2.0", 371 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 372 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 373 | "dev": true 374 | }, 375 | "camelcase": { 376 | "version": "4.1.0", 377 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 378 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 379 | "dev": true 380 | }, 381 | "chalk": { 382 | "version": "2.4.2", 383 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 384 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 385 | "dev": true, 386 | "requires": { 387 | "ansi-styles": "^3.2.1", 388 | "escape-string-regexp": "^1.0.5", 389 | "supports-color": "^5.3.0" 390 | }, 391 | "dependencies": { 392 | "ansi-styles": { 393 | "version": "3.2.1", 394 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 395 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 396 | "dev": true, 397 | "requires": { 398 | "color-convert": "^1.9.0" 399 | } 400 | }, 401 | "supports-color": { 402 | "version": "5.5.0", 403 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 404 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 405 | "dev": true, 406 | "requires": { 407 | "has-flag": "^3.0.0" 408 | } 409 | } 410 | } 411 | }, 412 | "chardet": { 413 | "version": "0.4.2", 414 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", 415 | "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", 416 | "dev": true 417 | }, 418 | "circular-json": { 419 | "version": "0.3.3", 420 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 421 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 422 | "dev": true 423 | }, 424 | "cli-cursor": { 425 | "version": "2.1.0", 426 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 427 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 428 | "dev": true, 429 | "requires": { 430 | "restore-cursor": "^2.0.0" 431 | } 432 | }, 433 | "cli-width": { 434 | "version": "2.2.0", 435 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 436 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 437 | "dev": true 438 | }, 439 | "cliui": { 440 | "version": "3.2.0", 441 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", 442 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 443 | "dev": true, 444 | "requires": { 445 | "string-width": "^1.0.1", 446 | "strip-ansi": "^3.0.1", 447 | "wrap-ansi": "^2.0.0" 448 | }, 449 | "dependencies": { 450 | "is-fullwidth-code-point": { 451 | "version": "1.0.0", 452 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 453 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 454 | "dev": true, 455 | "requires": { 456 | "number-is-nan": "^1.0.0" 457 | } 458 | }, 459 | "string-width": { 460 | "version": "1.0.2", 461 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 462 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 463 | "dev": true, 464 | "requires": { 465 | "code-point-at": "^1.0.0", 466 | "is-fullwidth-code-point": "^1.0.0", 467 | "strip-ansi": "^3.0.0" 468 | } 469 | }, 470 | "strip-ansi": { 471 | "version": "3.0.1", 472 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 473 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 474 | "dev": true, 475 | "requires": { 476 | "ansi-regex": "^2.0.0" 477 | } 478 | } 479 | } 480 | }, 481 | "co": { 482 | "version": "4.6.0", 483 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 484 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 485 | "dev": true 486 | }, 487 | "code-point-at": { 488 | "version": "1.1.0", 489 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 490 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 491 | "dev": true 492 | }, 493 | "color-convert": { 494 | "version": "1.9.3", 495 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 496 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 497 | "dev": true, 498 | "requires": { 499 | "color-name": "1.1.3" 500 | } 501 | }, 502 | "color-name": { 503 | "version": "1.1.3", 504 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 505 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 506 | "dev": true 507 | }, 508 | "commander": { 509 | "version": "2.20.0", 510 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", 511 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", 512 | "dev": true, 513 | "optional": true 514 | }, 515 | "commondir": { 516 | "version": "1.0.1", 517 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 518 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 519 | "dev": true 520 | }, 521 | "concat-map": { 522 | "version": "0.0.1", 523 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 524 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 525 | "dev": true 526 | }, 527 | "concat-stream": { 528 | "version": "1.6.2", 529 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 530 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 531 | "dev": true, 532 | "requires": { 533 | "buffer-from": "^1.0.0", 534 | "inherits": "^2.0.3", 535 | "readable-stream": "^2.2.2", 536 | "typedarray": "^0.0.6" 537 | } 538 | }, 539 | "connected": { 540 | "version": "0.0.2", 541 | "resolved": "https://registry.npmjs.org/connected/-/connected-0.0.2.tgz", 542 | "integrity": "sha1-e1dVshbOMf+rzMOOn04d/Bw7fG0=" 543 | }, 544 | "content-disposition": { 545 | "version": "0.5.3", 546 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 547 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 548 | "dev": true, 549 | "requires": { 550 | "safe-buffer": "5.1.2" 551 | } 552 | }, 553 | "content-type": { 554 | "version": "1.0.4", 555 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 556 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 557 | "dev": true 558 | }, 559 | "convert-source-map": { 560 | "version": "1.6.0", 561 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", 562 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", 563 | "dev": true, 564 | "requires": { 565 | "safe-buffer": "~5.1.1" 566 | } 567 | }, 568 | "cookie": { 569 | "version": "0.4.0", 570 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 571 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", 572 | "dev": true 573 | }, 574 | "cookie-signature": { 575 | "version": "1.0.6", 576 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 577 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 578 | "dev": true 579 | }, 580 | "core-util-is": { 581 | "version": "1.0.2", 582 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 583 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 584 | "dev": true 585 | }, 586 | "cp-file": { 587 | "version": "6.2.0", 588 | "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", 589 | "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", 590 | "dev": true, 591 | "requires": { 592 | "graceful-fs": "^4.1.2", 593 | "make-dir": "^2.0.0", 594 | "nested-error-stacks": "^2.0.0", 595 | "pify": "^4.0.1", 596 | "safe-buffer": "^5.0.1" 597 | }, 598 | "dependencies": { 599 | "pify": { 600 | "version": "4.0.1", 601 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 602 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 603 | "dev": true 604 | } 605 | } 606 | }, 607 | "create-servers": { 608 | "version": "3.0.1", 609 | "resolved": "https://registry.npmjs.org/create-servers/-/create-servers-3.0.1.tgz", 610 | "integrity": "sha512-5smLr9K7kpy5tt285cpy72QNvdwQOOUyTGEDdxOBjbpt+WWlle1F28gIPkhgJV6+ZXTdzx5UrD5kiXd9+5vbiQ==", 611 | "requires": { 612 | "connected": "~0.0.2", 613 | "errs": "~0.3.0", 614 | "object-assign": "^4.1.0" 615 | } 616 | }, 617 | "cross-spawn": { 618 | "version": "5.1.0", 619 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 620 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 621 | "dev": true, 622 | "requires": { 623 | "lru-cache": "^4.0.1", 624 | "shebang-command": "^1.2.0", 625 | "which": "^1.2.9" 626 | } 627 | }, 628 | "debug": { 629 | "version": "3.2.6", 630 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 631 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 632 | "dev": true, 633 | "requires": { 634 | "ms": "^2.1.1" 635 | } 636 | }, 637 | "decamelize": { 638 | "version": "1.2.0", 639 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 640 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 641 | "dev": true 642 | }, 643 | "deep-is": { 644 | "version": "0.1.3", 645 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 646 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 647 | "dev": true 648 | }, 649 | "default-require-extensions": { 650 | "version": "2.0.0", 651 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", 652 | "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", 653 | "dev": true, 654 | "requires": { 655 | "strip-bom": "^3.0.0" 656 | } 657 | }, 658 | "define-properties": { 659 | "version": "1.1.3", 660 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 661 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 662 | "dev": true, 663 | "requires": { 664 | "object-keys": "^1.0.12" 665 | } 666 | }, 667 | "depd": { 668 | "version": "1.1.2", 669 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 670 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 671 | "dev": true 672 | }, 673 | "destroy": { 674 | "version": "1.0.4", 675 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 676 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 677 | "dev": true 678 | }, 679 | "diff": { 680 | "version": "3.5.0", 681 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 682 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 683 | "dev": true 684 | }, 685 | "doctrine": { 686 | "version": "2.1.0", 687 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 688 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 689 | "dev": true, 690 | "requires": { 691 | "esutils": "^2.0.2" 692 | } 693 | }, 694 | "ee-first": { 695 | "version": "1.1.1", 696 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 697 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 698 | "dev": true 699 | }, 700 | "emoji-regex": { 701 | "version": "7.0.3", 702 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 703 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 704 | "dev": true 705 | }, 706 | "encodeurl": { 707 | "version": "1.0.2", 708 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 709 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 710 | "dev": true 711 | }, 712 | "end-of-stream": { 713 | "version": "1.4.1", 714 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 715 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 716 | "dev": true, 717 | "requires": { 718 | "once": "^1.4.0" 719 | } 720 | }, 721 | "error-ex": { 722 | "version": "1.3.2", 723 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 724 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 725 | "dev": true, 726 | "requires": { 727 | "is-arrayish": "^0.2.1" 728 | } 729 | }, 730 | "errs": { 731 | "version": "0.3.2", 732 | "resolved": "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz", 733 | "integrity": "sha1-eYCZstvTfKK8dJ5TinwTB9C1BJk=" 734 | }, 735 | "es-abstract": { 736 | "version": "1.13.0", 737 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", 738 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", 739 | "dev": true, 740 | "requires": { 741 | "es-to-primitive": "^1.2.0", 742 | "function-bind": "^1.1.1", 743 | "has": "^1.0.3", 744 | "is-callable": "^1.1.4", 745 | "is-regex": "^1.0.4", 746 | "object-keys": "^1.0.12" 747 | } 748 | }, 749 | "es-to-primitive": { 750 | "version": "1.2.0", 751 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 752 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 753 | "dev": true, 754 | "requires": { 755 | "is-callable": "^1.1.4", 756 | "is-date-object": "^1.0.1", 757 | "is-symbol": "^1.0.2" 758 | } 759 | }, 760 | "es6-error": { 761 | "version": "4.1.1", 762 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 763 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 764 | "dev": true 765 | }, 766 | "escape-html": { 767 | "version": "1.0.3", 768 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 769 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 770 | "dev": true 771 | }, 772 | "escape-string-regexp": { 773 | "version": "1.0.5", 774 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 775 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 776 | "dev": true 777 | }, 778 | "eslint": { 779 | "version": "4.19.1", 780 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", 781 | "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", 782 | "dev": true, 783 | "requires": { 784 | "ajv": "^5.3.0", 785 | "babel-code-frame": "^6.22.0", 786 | "chalk": "^2.1.0", 787 | "concat-stream": "^1.6.0", 788 | "cross-spawn": "^5.1.0", 789 | "debug": "^3.1.0", 790 | "doctrine": "^2.1.0", 791 | "eslint-scope": "^3.7.1", 792 | "eslint-visitor-keys": "^1.0.0", 793 | "espree": "^3.5.4", 794 | "esquery": "^1.0.0", 795 | "esutils": "^2.0.2", 796 | "file-entry-cache": "^2.0.0", 797 | "functional-red-black-tree": "^1.0.1", 798 | "glob": "^7.1.2", 799 | "globals": "^11.0.1", 800 | "ignore": "^3.3.3", 801 | "imurmurhash": "^0.1.4", 802 | "inquirer": "^3.0.6", 803 | "is-resolvable": "^1.0.0", 804 | "js-yaml": "^3.9.1", 805 | "json-stable-stringify-without-jsonify": "^1.0.1", 806 | "levn": "^0.3.0", 807 | "lodash": "^4.17.4", 808 | "minimatch": "^3.0.2", 809 | "mkdirp": "^0.5.1", 810 | "natural-compare": "^1.4.0", 811 | "optionator": "^0.8.2", 812 | "path-is-inside": "^1.0.2", 813 | "pluralize": "^7.0.0", 814 | "progress": "^2.0.0", 815 | "regexpp": "^1.0.1", 816 | "require-uncached": "^1.0.3", 817 | "semver": "^5.3.0", 818 | "strip-ansi": "^4.0.0", 819 | "strip-json-comments": "~2.0.1", 820 | "table": "4.0.2", 821 | "text-table": "~0.2.0" 822 | } 823 | }, 824 | "eslint-config-populist": { 825 | "version": "4.2.0", 826 | "resolved": "https://registry.npmjs.org/eslint-config-populist/-/eslint-config-populist-4.2.0.tgz", 827 | "integrity": "sha512-9+FuXyMjVHrJKr50gjLdCou3L/i08sOjoF8eB/Mhzt9Nxz6ulTjkRpvD9Btg8q3d1KfuGGULC2lOJG9cXwRqoQ==", 828 | "dev": true, 829 | "requires": { 830 | "eslint": "^4.3.0", 831 | "eslint-find-rules": "^3.1.1", 832 | "eslint-plugin-json": "^1.2.0", 833 | "eslint-plugin-mocha": "^4.8.0" 834 | } 835 | }, 836 | "eslint-find-rules": { 837 | "version": "3.3.1", 838 | "resolved": "https://registry.npmjs.org/eslint-find-rules/-/eslint-find-rules-3.3.1.tgz", 839 | "integrity": "sha512-07lurNxr53r0EgiuPR0JuybU3p1eIOnmA4FBmVGCvi0OtMIUod7CIjOmwKmU5VYkSMDyC/nPT/iWVNU7V4uTlg==", 840 | "dev": true, 841 | "requires": { 842 | "cliui": "^3.2.0", 843 | "eslint-rule-documentation": "^1.0.0", 844 | "path-is-absolute": "^1.0.1", 845 | "which": "^1.2.8", 846 | "window-size": "0.3.0", 847 | "yargs": "^8.0.1" 848 | } 849 | }, 850 | "eslint-plugin-json": { 851 | "version": "1.4.0", 852 | "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz", 853 | "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==", 854 | "dev": true, 855 | "requires": { 856 | "vscode-json-languageservice": "^3.2.1" 857 | } 858 | }, 859 | "eslint-plugin-mocha": { 860 | "version": "4.12.1", 861 | "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-4.12.1.tgz", 862 | "integrity": "sha512-hxWtYHvLA0p/PKymRfDYh9Mxt5dYkg2Goy1vZDarTEEYfELP9ksga7kKG1NUKSQy27C8Qjc7YrSWTLUhOEOksA==", 863 | "dev": true, 864 | "requires": { 865 | "ramda": "^0.25.0" 866 | } 867 | }, 868 | "eslint-rule-documentation": { 869 | "version": "1.0.23", 870 | "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz", 871 | "integrity": "sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==", 872 | "dev": true 873 | }, 874 | "eslint-scope": { 875 | "version": "3.7.3", 876 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", 877 | "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", 878 | "dev": true, 879 | "requires": { 880 | "esrecurse": "^4.1.0", 881 | "estraverse": "^4.1.1" 882 | } 883 | }, 884 | "eslint-visitor-keys": { 885 | "version": "1.0.0", 886 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 887 | "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", 888 | "dev": true 889 | }, 890 | "espree": { 891 | "version": "3.5.4", 892 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", 893 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", 894 | "dev": true, 895 | "requires": { 896 | "acorn": "^5.5.0", 897 | "acorn-jsx": "^3.0.0" 898 | } 899 | }, 900 | "esprima": { 901 | "version": "4.0.1", 902 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 903 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 904 | "dev": true 905 | }, 906 | "esquery": { 907 | "version": "1.0.1", 908 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 909 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 910 | "dev": true, 911 | "requires": { 912 | "estraverse": "^4.0.0" 913 | } 914 | }, 915 | "esrecurse": { 916 | "version": "4.2.1", 917 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 918 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 919 | "dev": true, 920 | "requires": { 921 | "estraverse": "^4.1.0" 922 | } 923 | }, 924 | "estraverse": { 925 | "version": "4.2.0", 926 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 927 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 928 | "dev": true 929 | }, 930 | "esutils": { 931 | "version": "2.0.2", 932 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 933 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 934 | "dev": true 935 | }, 936 | "etag": { 937 | "version": "1.8.1", 938 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 939 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 940 | "dev": true 941 | }, 942 | "execa": { 943 | "version": "0.7.0", 944 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 945 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 946 | "dev": true, 947 | "requires": { 948 | "cross-spawn": "^5.0.1", 949 | "get-stream": "^3.0.0", 950 | "is-stream": "^1.1.0", 951 | "npm-run-path": "^2.0.0", 952 | "p-finally": "^1.0.0", 953 | "signal-exit": "^3.0.0", 954 | "strip-eof": "^1.0.0" 955 | } 956 | }, 957 | "express": { 958 | "version": "4.17.1", 959 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 960 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 961 | "dev": true, 962 | "requires": { 963 | "accepts": "~1.3.7", 964 | "array-flatten": "1.1.1", 965 | "body-parser": "1.19.0", 966 | "content-disposition": "0.5.3", 967 | "content-type": "~1.0.4", 968 | "cookie": "0.4.0", 969 | "cookie-signature": "1.0.6", 970 | "debug": "2.6.9", 971 | "depd": "~1.1.2", 972 | "encodeurl": "~1.0.2", 973 | "escape-html": "~1.0.3", 974 | "etag": "~1.8.1", 975 | "finalhandler": "~1.1.2", 976 | "fresh": "0.5.2", 977 | "merge-descriptors": "1.0.1", 978 | "methods": "~1.1.2", 979 | "on-finished": "~2.3.0", 980 | "parseurl": "~1.3.3", 981 | "path-to-regexp": "0.1.7", 982 | "proxy-addr": "~2.0.5", 983 | "qs": "6.7.0", 984 | "range-parser": "~1.2.1", 985 | "safe-buffer": "5.1.2", 986 | "send": "0.17.1", 987 | "serve-static": "1.14.1", 988 | "setprototypeof": "1.1.1", 989 | "statuses": "~1.5.0", 990 | "type-is": "~1.6.18", 991 | "utils-merge": "1.0.1", 992 | "vary": "~1.1.2" 993 | }, 994 | "dependencies": { 995 | "debug": { 996 | "version": "2.6.9", 997 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 998 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 999 | "dev": true, 1000 | "requires": { 1001 | "ms": "2.0.0" 1002 | } 1003 | }, 1004 | "ms": { 1005 | "version": "2.0.0", 1006 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1007 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1008 | "dev": true 1009 | } 1010 | } 1011 | }, 1012 | "external-editor": { 1013 | "version": "2.2.0", 1014 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", 1015 | "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", 1016 | "dev": true, 1017 | "requires": { 1018 | "chardet": "^0.4.0", 1019 | "iconv-lite": "^0.4.17", 1020 | "tmp": "^0.0.33" 1021 | } 1022 | }, 1023 | "fast-deep-equal": { 1024 | "version": "1.1.0", 1025 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", 1026 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", 1027 | "dev": true 1028 | }, 1029 | "fast-json-stable-stringify": { 1030 | "version": "2.0.0", 1031 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 1032 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 1033 | "dev": true 1034 | }, 1035 | "fast-levenshtein": { 1036 | "version": "2.0.6", 1037 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1038 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1039 | "dev": true 1040 | }, 1041 | "figures": { 1042 | "version": "2.0.0", 1043 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1044 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1045 | "dev": true, 1046 | "requires": { 1047 | "escape-string-regexp": "^1.0.5" 1048 | } 1049 | }, 1050 | "file-entry-cache": { 1051 | "version": "2.0.0", 1052 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1053 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 1054 | "dev": true, 1055 | "requires": { 1056 | "flat-cache": "^1.2.1", 1057 | "object-assign": "^4.0.1" 1058 | } 1059 | }, 1060 | "finalhandler": { 1061 | "version": "1.1.2", 1062 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1063 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1064 | "dev": true, 1065 | "requires": { 1066 | "debug": "2.6.9", 1067 | "encodeurl": "~1.0.2", 1068 | "escape-html": "~1.0.3", 1069 | "on-finished": "~2.3.0", 1070 | "parseurl": "~1.3.3", 1071 | "statuses": "~1.5.0", 1072 | "unpipe": "~1.0.0" 1073 | }, 1074 | "dependencies": { 1075 | "debug": { 1076 | "version": "2.6.9", 1077 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1078 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1079 | "dev": true, 1080 | "requires": { 1081 | "ms": "2.0.0" 1082 | } 1083 | }, 1084 | "ms": { 1085 | "version": "2.0.0", 1086 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1087 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1088 | "dev": true 1089 | } 1090 | } 1091 | }, 1092 | "find-cache-dir": { 1093 | "version": "2.1.0", 1094 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", 1095 | "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", 1096 | "dev": true, 1097 | "requires": { 1098 | "commondir": "^1.0.1", 1099 | "make-dir": "^2.0.0", 1100 | "pkg-dir": "^3.0.0" 1101 | } 1102 | }, 1103 | "find-up": { 1104 | "version": "2.1.0", 1105 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1106 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1107 | "dev": true, 1108 | "requires": { 1109 | "locate-path": "^2.0.0" 1110 | } 1111 | }, 1112 | "flat": { 1113 | "version": "4.1.0", 1114 | "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", 1115 | "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", 1116 | "dev": true, 1117 | "requires": { 1118 | "is-buffer": "~2.0.3" 1119 | } 1120 | }, 1121 | "flat-cache": { 1122 | "version": "1.3.4", 1123 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", 1124 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", 1125 | "dev": true, 1126 | "requires": { 1127 | "circular-json": "^0.3.1", 1128 | "graceful-fs": "^4.1.2", 1129 | "rimraf": "~2.6.2", 1130 | "write": "^0.2.1" 1131 | } 1132 | }, 1133 | "foreground-child": { 1134 | "version": "1.5.6", 1135 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", 1136 | "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", 1137 | "dev": true, 1138 | "requires": { 1139 | "cross-spawn": "^4", 1140 | "signal-exit": "^3.0.0" 1141 | }, 1142 | "dependencies": { 1143 | "cross-spawn": { 1144 | "version": "4.0.2", 1145 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", 1146 | "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", 1147 | "dev": true, 1148 | "requires": { 1149 | "lru-cache": "^4.0.1", 1150 | "which": "^1.2.9" 1151 | } 1152 | } 1153 | } 1154 | }, 1155 | "forwarded": { 1156 | "version": "0.1.2", 1157 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1158 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", 1159 | "dev": true 1160 | }, 1161 | "fresh": { 1162 | "version": "0.5.2", 1163 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1164 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 1165 | "dev": true 1166 | }, 1167 | "fs.realpath": { 1168 | "version": "1.0.0", 1169 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1170 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1171 | "dev": true 1172 | }, 1173 | "function-bind": { 1174 | "version": "1.1.1", 1175 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1176 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1177 | "dev": true 1178 | }, 1179 | "functional-red-black-tree": { 1180 | "version": "1.0.1", 1181 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1182 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1183 | "dev": true 1184 | }, 1185 | "get-caller-file": { 1186 | "version": "1.0.3", 1187 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", 1188 | "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", 1189 | "dev": true 1190 | }, 1191 | "get-stream": { 1192 | "version": "3.0.0", 1193 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1194 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 1195 | "dev": true 1196 | }, 1197 | "glob": { 1198 | "version": "7.1.4", 1199 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 1200 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 1201 | "dev": true, 1202 | "requires": { 1203 | "fs.realpath": "^1.0.0", 1204 | "inflight": "^1.0.4", 1205 | "inherits": "2", 1206 | "minimatch": "^3.0.4", 1207 | "once": "^1.3.0", 1208 | "path-is-absolute": "^1.0.0" 1209 | } 1210 | }, 1211 | "globals": { 1212 | "version": "11.12.0", 1213 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1214 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1215 | "dev": true 1216 | }, 1217 | "graceful-fs": { 1218 | "version": "4.2.0", 1219 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", 1220 | "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", 1221 | "dev": true 1222 | }, 1223 | "growl": { 1224 | "version": "1.10.5", 1225 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1226 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1227 | "dev": true 1228 | }, 1229 | "handlebars": { 1230 | "version": "4.1.2", 1231 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", 1232 | "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", 1233 | "dev": true, 1234 | "requires": { 1235 | "neo-async": "^2.6.0", 1236 | "optimist": "^0.6.1", 1237 | "source-map": "^0.6.1", 1238 | "uglify-js": "^3.1.4" 1239 | }, 1240 | "dependencies": { 1241 | "source-map": { 1242 | "version": "0.6.1", 1243 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1244 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1245 | "dev": true 1246 | } 1247 | } 1248 | }, 1249 | "has": { 1250 | "version": "1.0.3", 1251 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1252 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1253 | "dev": true, 1254 | "requires": { 1255 | "function-bind": "^1.1.1" 1256 | } 1257 | }, 1258 | "has-ansi": { 1259 | "version": "2.0.0", 1260 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1261 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1262 | "dev": true, 1263 | "requires": { 1264 | "ansi-regex": "^2.0.0" 1265 | } 1266 | }, 1267 | "has-flag": { 1268 | "version": "3.0.0", 1269 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1270 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1271 | "dev": true 1272 | }, 1273 | "has-symbols": { 1274 | "version": "1.0.0", 1275 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1276 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1277 | "dev": true 1278 | }, 1279 | "hasha": { 1280 | "version": "3.0.0", 1281 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", 1282 | "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", 1283 | "dev": true, 1284 | "requires": { 1285 | "is-stream": "^1.0.1" 1286 | } 1287 | }, 1288 | "he": { 1289 | "version": "1.2.0", 1290 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1291 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1292 | "dev": true 1293 | }, 1294 | "hosted-git-info": { 1295 | "version": "2.7.1", 1296 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", 1297 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", 1298 | "dev": true 1299 | }, 1300 | "http-errors": { 1301 | "version": "1.7.2", 1302 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1303 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1304 | "dev": true, 1305 | "requires": { 1306 | "depd": "~1.1.2", 1307 | "inherits": "2.0.3", 1308 | "setprototypeof": "1.1.1", 1309 | "statuses": ">= 1.5.0 < 2", 1310 | "toidentifier": "1.0.0" 1311 | }, 1312 | "dependencies": { 1313 | "inherits": { 1314 | "version": "2.0.3", 1315 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1316 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1317 | "dev": true 1318 | } 1319 | } 1320 | }, 1321 | "iconv-lite": { 1322 | "version": "0.4.24", 1323 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1324 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1325 | "dev": true, 1326 | "requires": { 1327 | "safer-buffer": ">= 2.1.2 < 3" 1328 | } 1329 | }, 1330 | "ignore": { 1331 | "version": "3.3.10", 1332 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", 1333 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", 1334 | "dev": true 1335 | }, 1336 | "imurmurhash": { 1337 | "version": "0.1.4", 1338 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1339 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1340 | "dev": true 1341 | }, 1342 | "inflight": { 1343 | "version": "1.0.6", 1344 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1345 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1346 | "dev": true, 1347 | "requires": { 1348 | "once": "^1.3.0", 1349 | "wrappy": "1" 1350 | } 1351 | }, 1352 | "inherits": { 1353 | "version": "2.0.4", 1354 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1355 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1356 | "dev": true 1357 | }, 1358 | "inquirer": { 1359 | "version": "3.3.0", 1360 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", 1361 | "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", 1362 | "dev": true, 1363 | "requires": { 1364 | "ansi-escapes": "^3.0.0", 1365 | "chalk": "^2.0.0", 1366 | "cli-cursor": "^2.1.0", 1367 | "cli-width": "^2.0.0", 1368 | "external-editor": "^2.0.4", 1369 | "figures": "^2.0.0", 1370 | "lodash": "^4.3.0", 1371 | "mute-stream": "0.0.7", 1372 | "run-async": "^2.2.0", 1373 | "rx-lite": "^4.0.8", 1374 | "rx-lite-aggregates": "^4.0.8", 1375 | "string-width": "^2.1.0", 1376 | "strip-ansi": "^4.0.0", 1377 | "through": "^2.3.6" 1378 | } 1379 | }, 1380 | "invert-kv": { 1381 | "version": "1.0.0", 1382 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 1383 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", 1384 | "dev": true 1385 | }, 1386 | "ipaddr.js": { 1387 | "version": "1.9.0", 1388 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 1389 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", 1390 | "dev": true 1391 | }, 1392 | "is-arrayish": { 1393 | "version": "0.2.1", 1394 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1395 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1396 | "dev": true 1397 | }, 1398 | "is-buffer": { 1399 | "version": "2.0.3", 1400 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", 1401 | "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", 1402 | "dev": true 1403 | }, 1404 | "is-callable": { 1405 | "version": "1.1.4", 1406 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1407 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1408 | "dev": true 1409 | }, 1410 | "is-date-object": { 1411 | "version": "1.0.1", 1412 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1413 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1414 | "dev": true 1415 | }, 1416 | "is-fullwidth-code-point": { 1417 | "version": "2.0.0", 1418 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1419 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1420 | "dev": true 1421 | }, 1422 | "is-promise": { 1423 | "version": "2.1.0", 1424 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1425 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1426 | "dev": true 1427 | }, 1428 | "is-regex": { 1429 | "version": "1.0.4", 1430 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1431 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1432 | "dev": true, 1433 | "requires": { 1434 | "has": "^1.0.1" 1435 | } 1436 | }, 1437 | "is-resolvable": { 1438 | "version": "1.1.0", 1439 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", 1440 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", 1441 | "dev": true 1442 | }, 1443 | "is-stream": { 1444 | "version": "1.1.0", 1445 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1446 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1447 | "dev": true 1448 | }, 1449 | "is-symbol": { 1450 | "version": "1.0.2", 1451 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1452 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1453 | "dev": true, 1454 | "requires": { 1455 | "has-symbols": "^1.0.0" 1456 | } 1457 | }, 1458 | "isarray": { 1459 | "version": "1.0.0", 1460 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1461 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1462 | "dev": true 1463 | }, 1464 | "isexe": { 1465 | "version": "2.0.0", 1466 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1467 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1468 | "dev": true 1469 | }, 1470 | "istanbul-lib-coverage": { 1471 | "version": "2.0.5", 1472 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", 1473 | "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", 1474 | "dev": true 1475 | }, 1476 | "istanbul-lib-hook": { 1477 | "version": "2.0.7", 1478 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", 1479 | "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", 1480 | "dev": true, 1481 | "requires": { 1482 | "append-transform": "^1.0.0" 1483 | } 1484 | }, 1485 | "istanbul-lib-instrument": { 1486 | "version": "3.3.0", 1487 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", 1488 | "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", 1489 | "dev": true, 1490 | "requires": { 1491 | "@babel/generator": "^7.4.0", 1492 | "@babel/parser": "^7.4.3", 1493 | "@babel/template": "^7.4.0", 1494 | "@babel/traverse": "^7.4.3", 1495 | "@babel/types": "^7.4.0", 1496 | "istanbul-lib-coverage": "^2.0.5", 1497 | "semver": "^6.0.0" 1498 | }, 1499 | "dependencies": { 1500 | "semver": { 1501 | "version": "6.2.0", 1502 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", 1503 | "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", 1504 | "dev": true 1505 | } 1506 | } 1507 | }, 1508 | "istanbul-lib-report": { 1509 | "version": "2.0.8", 1510 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", 1511 | "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", 1512 | "dev": true, 1513 | "requires": { 1514 | "istanbul-lib-coverage": "^2.0.5", 1515 | "make-dir": "^2.1.0", 1516 | "supports-color": "^6.1.0" 1517 | }, 1518 | "dependencies": { 1519 | "supports-color": { 1520 | "version": "6.1.0", 1521 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 1522 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 1523 | "dev": true, 1524 | "requires": { 1525 | "has-flag": "^3.0.0" 1526 | } 1527 | } 1528 | } 1529 | }, 1530 | "istanbul-lib-source-maps": { 1531 | "version": "3.0.6", 1532 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", 1533 | "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", 1534 | "dev": true, 1535 | "requires": { 1536 | "debug": "^4.1.1", 1537 | "istanbul-lib-coverage": "^2.0.5", 1538 | "make-dir": "^2.1.0", 1539 | "rimraf": "^2.6.3", 1540 | "source-map": "^0.6.1" 1541 | }, 1542 | "dependencies": { 1543 | "debug": { 1544 | "version": "4.1.1", 1545 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1546 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1547 | "dev": true, 1548 | "requires": { 1549 | "ms": "^2.1.1" 1550 | } 1551 | }, 1552 | "source-map": { 1553 | "version": "0.6.1", 1554 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1555 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1556 | "dev": true 1557 | } 1558 | } 1559 | }, 1560 | "istanbul-reports": { 1561 | "version": "2.2.6", 1562 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", 1563 | "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", 1564 | "dev": true, 1565 | "requires": { 1566 | "handlebars": "^4.1.2" 1567 | } 1568 | }, 1569 | "js-tokens": { 1570 | "version": "3.0.2", 1571 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1572 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1573 | "dev": true 1574 | }, 1575 | "js-yaml": { 1576 | "version": "3.13.1", 1577 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1578 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1579 | "dev": true, 1580 | "requires": { 1581 | "argparse": "^1.0.7", 1582 | "esprima": "^4.0.0" 1583 | } 1584 | }, 1585 | "jsesc": { 1586 | "version": "2.5.2", 1587 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1588 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1589 | "dev": true 1590 | }, 1591 | "json-parse-better-errors": { 1592 | "version": "1.0.2", 1593 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1594 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1595 | "dev": true 1596 | }, 1597 | "json-schema-traverse": { 1598 | "version": "0.3.1", 1599 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 1600 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 1601 | "dev": true 1602 | }, 1603 | "json-stable-stringify-without-jsonify": { 1604 | "version": "1.0.1", 1605 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1606 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1607 | "dev": true 1608 | }, 1609 | "jsonc-parser": { 1610 | "version": "2.1.0", 1611 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.1.0.tgz", 1612 | "integrity": "sha512-n9GrT8rrr2fhvBbANa1g+xFmgGK5X91KFeDwlKQ3+SJfmH5+tKv/M/kahx/TXOMflfWHKGKqKyfHQaLKTNzJ6w==", 1613 | "dev": true 1614 | }, 1615 | "lcid": { 1616 | "version": "1.0.0", 1617 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 1618 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 1619 | "dev": true, 1620 | "requires": { 1621 | "invert-kv": "^1.0.0" 1622 | } 1623 | }, 1624 | "levn": { 1625 | "version": "0.3.0", 1626 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1627 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1628 | "dev": true, 1629 | "requires": { 1630 | "prelude-ls": "~1.1.2", 1631 | "type-check": "~0.3.2" 1632 | } 1633 | }, 1634 | "load-json-file": { 1635 | "version": "2.0.0", 1636 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1637 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1638 | "dev": true, 1639 | "requires": { 1640 | "graceful-fs": "^4.1.2", 1641 | "parse-json": "^2.2.0", 1642 | "pify": "^2.0.0", 1643 | "strip-bom": "^3.0.0" 1644 | } 1645 | }, 1646 | "locate-path": { 1647 | "version": "2.0.0", 1648 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1649 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1650 | "dev": true, 1651 | "requires": { 1652 | "p-locate": "^2.0.0", 1653 | "path-exists": "^3.0.0" 1654 | } 1655 | }, 1656 | "lodash": { 1657 | "version": "4.17.15", 1658 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1659 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1660 | "dev": true 1661 | }, 1662 | "lodash.flattendeep": { 1663 | "version": "4.4.0", 1664 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 1665 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 1666 | "dev": true 1667 | }, 1668 | "log-symbols": { 1669 | "version": "2.2.0", 1670 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 1671 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 1672 | "dev": true, 1673 | "requires": { 1674 | "chalk": "^2.0.1" 1675 | } 1676 | }, 1677 | "lru-cache": { 1678 | "version": "4.1.5", 1679 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 1680 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 1681 | "dev": true, 1682 | "requires": { 1683 | "pseudomap": "^1.0.2", 1684 | "yallist": "^2.1.2" 1685 | } 1686 | }, 1687 | "make-dir": { 1688 | "version": "2.1.0", 1689 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1690 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1691 | "dev": true, 1692 | "requires": { 1693 | "pify": "^4.0.1", 1694 | "semver": "^5.6.0" 1695 | }, 1696 | "dependencies": { 1697 | "pify": { 1698 | "version": "4.0.1", 1699 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 1700 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 1701 | "dev": true 1702 | } 1703 | } 1704 | }, 1705 | "map-age-cleaner": { 1706 | "version": "0.1.3", 1707 | "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", 1708 | "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", 1709 | "dev": true, 1710 | "requires": { 1711 | "p-defer": "^1.0.0" 1712 | } 1713 | }, 1714 | "media-typer": { 1715 | "version": "0.3.0", 1716 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1717 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 1718 | "dev": true 1719 | }, 1720 | "mem": { 1721 | "version": "1.1.0", 1722 | "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", 1723 | "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", 1724 | "dev": true, 1725 | "requires": { 1726 | "mimic-fn": "^1.0.0" 1727 | } 1728 | }, 1729 | "merge-descriptors": { 1730 | "version": "1.0.1", 1731 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1732 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1733 | }, 1734 | "merge-source-map": { 1735 | "version": "1.1.0", 1736 | "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", 1737 | "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", 1738 | "dev": true, 1739 | "requires": { 1740 | "source-map": "^0.6.1" 1741 | }, 1742 | "dependencies": { 1743 | "source-map": { 1744 | "version": "0.6.1", 1745 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1746 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1747 | "dev": true 1748 | } 1749 | } 1750 | }, 1751 | "methods": { 1752 | "version": "1.1.2", 1753 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1754 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 1755 | "dev": true 1756 | }, 1757 | "mime": { 1758 | "version": "1.6.0", 1759 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1760 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1761 | "dev": true 1762 | }, 1763 | "mime-db": { 1764 | "version": "1.40.0", 1765 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 1766 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", 1767 | "dev": true 1768 | }, 1769 | "mime-types": { 1770 | "version": "2.1.24", 1771 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 1772 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 1773 | "dev": true, 1774 | "requires": { 1775 | "mime-db": "1.40.0" 1776 | } 1777 | }, 1778 | "mimic-fn": { 1779 | "version": "1.2.0", 1780 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1781 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1782 | "dev": true 1783 | }, 1784 | "minimatch": { 1785 | "version": "3.0.4", 1786 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1787 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1788 | "dev": true, 1789 | "requires": { 1790 | "brace-expansion": "^1.1.7" 1791 | } 1792 | }, 1793 | "minimist": { 1794 | "version": "0.0.8", 1795 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1796 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1797 | "dev": true 1798 | }, 1799 | "mkdirp": { 1800 | "version": "0.5.1", 1801 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1802 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1803 | "dev": true, 1804 | "requires": { 1805 | "minimist": "0.0.8" 1806 | } 1807 | }, 1808 | "mocha": { 1809 | "version": "6.1.4", 1810 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", 1811 | "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", 1812 | "dev": true, 1813 | "requires": { 1814 | "ansi-colors": "3.2.3", 1815 | "browser-stdout": "1.3.1", 1816 | "debug": "3.2.6", 1817 | "diff": "3.5.0", 1818 | "escape-string-regexp": "1.0.5", 1819 | "find-up": "3.0.0", 1820 | "glob": "7.1.3", 1821 | "growl": "1.10.5", 1822 | "he": "1.2.0", 1823 | "js-yaml": "3.13.1", 1824 | "log-symbols": "2.2.0", 1825 | "minimatch": "3.0.4", 1826 | "mkdirp": "0.5.1", 1827 | "ms": "2.1.1", 1828 | "node-environment-flags": "1.0.5", 1829 | "object.assign": "4.1.0", 1830 | "strip-json-comments": "2.0.1", 1831 | "supports-color": "6.0.0", 1832 | "which": "1.3.1", 1833 | "wide-align": "1.1.3", 1834 | "yargs": "13.2.2", 1835 | "yargs-parser": "13.0.0", 1836 | "yargs-unparser": "1.5.0" 1837 | }, 1838 | "dependencies": { 1839 | "ansi-regex": { 1840 | "version": "4.1.0", 1841 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1842 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1843 | "dev": true 1844 | }, 1845 | "camelcase": { 1846 | "version": "5.3.1", 1847 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 1848 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 1849 | "dev": true 1850 | }, 1851 | "cliui": { 1852 | "version": "4.1.0", 1853 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", 1854 | "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", 1855 | "dev": true, 1856 | "requires": { 1857 | "string-width": "^2.1.1", 1858 | "strip-ansi": "^4.0.0", 1859 | "wrap-ansi": "^2.0.0" 1860 | }, 1861 | "dependencies": { 1862 | "string-width": { 1863 | "version": "2.1.1", 1864 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1865 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1866 | "dev": true, 1867 | "requires": { 1868 | "is-fullwidth-code-point": "^2.0.0", 1869 | "strip-ansi": "^4.0.0" 1870 | } 1871 | } 1872 | } 1873 | }, 1874 | "cross-spawn": { 1875 | "version": "6.0.5", 1876 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1877 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1878 | "dev": true, 1879 | "requires": { 1880 | "nice-try": "^1.0.4", 1881 | "path-key": "^2.0.1", 1882 | "semver": "^5.5.0", 1883 | "shebang-command": "^1.2.0", 1884 | "which": "^1.2.9" 1885 | } 1886 | }, 1887 | "execa": { 1888 | "version": "1.0.0", 1889 | "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", 1890 | "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", 1891 | "dev": true, 1892 | "requires": { 1893 | "cross-spawn": "^6.0.0", 1894 | "get-stream": "^4.0.0", 1895 | "is-stream": "^1.1.0", 1896 | "npm-run-path": "^2.0.0", 1897 | "p-finally": "^1.0.0", 1898 | "signal-exit": "^3.0.0", 1899 | "strip-eof": "^1.0.0" 1900 | } 1901 | }, 1902 | "find-up": { 1903 | "version": "3.0.0", 1904 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1905 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1906 | "dev": true, 1907 | "requires": { 1908 | "locate-path": "^3.0.0" 1909 | } 1910 | }, 1911 | "get-caller-file": { 1912 | "version": "2.0.5", 1913 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1914 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1915 | "dev": true 1916 | }, 1917 | "get-stream": { 1918 | "version": "4.1.0", 1919 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 1920 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 1921 | "dev": true, 1922 | "requires": { 1923 | "pump": "^3.0.0" 1924 | } 1925 | }, 1926 | "glob": { 1927 | "version": "7.1.3", 1928 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 1929 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 1930 | "dev": true, 1931 | "requires": { 1932 | "fs.realpath": "^1.0.0", 1933 | "inflight": "^1.0.4", 1934 | "inherits": "2", 1935 | "minimatch": "^3.0.4", 1936 | "once": "^1.3.0", 1937 | "path-is-absolute": "^1.0.0" 1938 | } 1939 | }, 1940 | "invert-kv": { 1941 | "version": "2.0.0", 1942 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", 1943 | "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", 1944 | "dev": true 1945 | }, 1946 | "lcid": { 1947 | "version": "2.0.0", 1948 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", 1949 | "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", 1950 | "dev": true, 1951 | "requires": { 1952 | "invert-kv": "^2.0.0" 1953 | } 1954 | }, 1955 | "locate-path": { 1956 | "version": "3.0.0", 1957 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1958 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1959 | "dev": true, 1960 | "requires": { 1961 | "p-locate": "^3.0.0", 1962 | "path-exists": "^3.0.0" 1963 | } 1964 | }, 1965 | "mem": { 1966 | "version": "4.3.0", 1967 | "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", 1968 | "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", 1969 | "dev": true, 1970 | "requires": { 1971 | "map-age-cleaner": "^0.1.1", 1972 | "mimic-fn": "^2.0.0", 1973 | "p-is-promise": "^2.0.0" 1974 | } 1975 | }, 1976 | "mimic-fn": { 1977 | "version": "2.1.0", 1978 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1979 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1980 | "dev": true 1981 | }, 1982 | "ms": { 1983 | "version": "2.1.1", 1984 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1985 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 1986 | "dev": true 1987 | }, 1988 | "os-locale": { 1989 | "version": "3.1.0", 1990 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", 1991 | "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", 1992 | "dev": true, 1993 | "requires": { 1994 | "execa": "^1.0.0", 1995 | "lcid": "^2.0.0", 1996 | "mem": "^4.0.0" 1997 | } 1998 | }, 1999 | "p-limit": { 2000 | "version": "2.2.0", 2001 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", 2002 | "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", 2003 | "dev": true, 2004 | "requires": { 2005 | "p-try": "^2.0.0" 2006 | } 2007 | }, 2008 | "p-locate": { 2009 | "version": "3.0.0", 2010 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2011 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2012 | "dev": true, 2013 | "requires": { 2014 | "p-limit": "^2.0.0" 2015 | } 2016 | }, 2017 | "p-try": { 2018 | "version": "2.2.0", 2019 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2020 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2021 | "dev": true 2022 | }, 2023 | "require-main-filename": { 2024 | "version": "2.0.0", 2025 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 2026 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 2027 | "dev": true 2028 | }, 2029 | "string-width": { 2030 | "version": "3.1.0", 2031 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2032 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2033 | "dev": true, 2034 | "requires": { 2035 | "emoji-regex": "^7.0.1", 2036 | "is-fullwidth-code-point": "^2.0.0", 2037 | "strip-ansi": "^5.1.0" 2038 | }, 2039 | "dependencies": { 2040 | "strip-ansi": { 2041 | "version": "5.2.0", 2042 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2043 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2044 | "dev": true, 2045 | "requires": { 2046 | "ansi-regex": "^4.1.0" 2047 | } 2048 | } 2049 | } 2050 | }, 2051 | "supports-color": { 2052 | "version": "6.0.0", 2053 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", 2054 | "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", 2055 | "dev": true, 2056 | "requires": { 2057 | "has-flag": "^3.0.0" 2058 | } 2059 | }, 2060 | "y18n": { 2061 | "version": "4.0.0", 2062 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 2063 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 2064 | "dev": true 2065 | }, 2066 | "yargs": { 2067 | "version": "13.2.2", 2068 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", 2069 | "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", 2070 | "dev": true, 2071 | "requires": { 2072 | "cliui": "^4.0.0", 2073 | "find-up": "^3.0.0", 2074 | "get-caller-file": "^2.0.1", 2075 | "os-locale": "^3.1.0", 2076 | "require-directory": "^2.1.1", 2077 | "require-main-filename": "^2.0.0", 2078 | "set-blocking": "^2.0.0", 2079 | "string-width": "^3.0.0", 2080 | "which-module": "^2.0.0", 2081 | "y18n": "^4.0.0", 2082 | "yargs-parser": "^13.0.0" 2083 | } 2084 | }, 2085 | "yargs-parser": { 2086 | "version": "13.0.0", 2087 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", 2088 | "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", 2089 | "dev": true, 2090 | "requires": { 2091 | "camelcase": "^5.0.0", 2092 | "decamelize": "^1.2.0" 2093 | } 2094 | } 2095 | } 2096 | }, 2097 | "ms": { 2098 | "version": "2.1.2", 2099 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2100 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2101 | "dev": true 2102 | }, 2103 | "mute-stream": { 2104 | "version": "0.0.7", 2105 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 2106 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 2107 | "dev": true 2108 | }, 2109 | "natural-compare": { 2110 | "version": "1.4.0", 2111 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2112 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2113 | "dev": true 2114 | }, 2115 | "negotiator": { 2116 | "version": "0.6.2", 2117 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2118 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 2119 | "dev": true 2120 | }, 2121 | "neo-async": { 2122 | "version": "2.6.1", 2123 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", 2124 | "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", 2125 | "dev": true 2126 | }, 2127 | "nested-error-stacks": { 2128 | "version": "2.1.0", 2129 | "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", 2130 | "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", 2131 | "dev": true 2132 | }, 2133 | "nice-try": { 2134 | "version": "1.0.5", 2135 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2136 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 2137 | "dev": true 2138 | }, 2139 | "node-environment-flags": { 2140 | "version": "1.0.5", 2141 | "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", 2142 | "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", 2143 | "dev": true, 2144 | "requires": { 2145 | "object.getownpropertydescriptors": "^2.0.3", 2146 | "semver": "^5.7.0" 2147 | } 2148 | }, 2149 | "normalize-package-data": { 2150 | "version": "2.5.0", 2151 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2152 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2153 | "dev": true, 2154 | "requires": { 2155 | "hosted-git-info": "^2.1.4", 2156 | "resolve": "^1.10.0", 2157 | "semver": "2 || 3 || 4 || 5", 2158 | "validate-npm-package-license": "^3.0.1" 2159 | } 2160 | }, 2161 | "npm-run-path": { 2162 | "version": "2.0.2", 2163 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2164 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2165 | "dev": true, 2166 | "requires": { 2167 | "path-key": "^2.0.0" 2168 | } 2169 | }, 2170 | "number-is-nan": { 2171 | "version": "1.0.1", 2172 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2173 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2174 | "dev": true 2175 | }, 2176 | "nyc": { 2177 | "version": "14.1.1", 2178 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", 2179 | "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", 2180 | "dev": true, 2181 | "requires": { 2182 | "archy": "^1.0.0", 2183 | "caching-transform": "^3.0.2", 2184 | "convert-source-map": "^1.6.0", 2185 | "cp-file": "^6.2.0", 2186 | "find-cache-dir": "^2.1.0", 2187 | "find-up": "^3.0.0", 2188 | "foreground-child": "^1.5.6", 2189 | "glob": "^7.1.3", 2190 | "istanbul-lib-coverage": "^2.0.5", 2191 | "istanbul-lib-hook": "^2.0.7", 2192 | "istanbul-lib-instrument": "^3.3.0", 2193 | "istanbul-lib-report": "^2.0.8", 2194 | "istanbul-lib-source-maps": "^3.0.6", 2195 | "istanbul-reports": "^2.2.4", 2196 | "js-yaml": "^3.13.1", 2197 | "make-dir": "^2.1.0", 2198 | "merge-source-map": "^1.1.0", 2199 | "resolve-from": "^4.0.0", 2200 | "rimraf": "^2.6.3", 2201 | "signal-exit": "^3.0.2", 2202 | "spawn-wrap": "^1.4.2", 2203 | "test-exclude": "^5.2.3", 2204 | "uuid": "^3.3.2", 2205 | "yargs": "^13.2.2", 2206 | "yargs-parser": "^13.0.0" 2207 | }, 2208 | "dependencies": { 2209 | "ansi-regex": { 2210 | "version": "4.1.0", 2211 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2212 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2213 | "dev": true 2214 | }, 2215 | "ansi-styles": { 2216 | "version": "3.2.1", 2217 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2218 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2219 | "dev": true, 2220 | "requires": { 2221 | "color-convert": "^1.9.0" 2222 | } 2223 | }, 2224 | "camelcase": { 2225 | "version": "5.3.1", 2226 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 2227 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 2228 | "dev": true 2229 | }, 2230 | "cliui": { 2231 | "version": "5.0.0", 2232 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 2233 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 2234 | "dev": true, 2235 | "requires": { 2236 | "string-width": "^3.1.0", 2237 | "strip-ansi": "^5.2.0", 2238 | "wrap-ansi": "^5.1.0" 2239 | } 2240 | }, 2241 | "cross-spawn": { 2242 | "version": "6.0.5", 2243 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 2244 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 2245 | "dev": true, 2246 | "requires": { 2247 | "nice-try": "^1.0.4", 2248 | "path-key": "^2.0.1", 2249 | "semver": "^5.5.0", 2250 | "shebang-command": "^1.2.0", 2251 | "which": "^1.2.9" 2252 | } 2253 | }, 2254 | "execa": { 2255 | "version": "1.0.0", 2256 | "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", 2257 | "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", 2258 | "dev": true, 2259 | "requires": { 2260 | "cross-spawn": "^6.0.0", 2261 | "get-stream": "^4.0.0", 2262 | "is-stream": "^1.1.0", 2263 | "npm-run-path": "^2.0.0", 2264 | "p-finally": "^1.0.0", 2265 | "signal-exit": "^3.0.0", 2266 | "strip-eof": "^1.0.0" 2267 | } 2268 | }, 2269 | "find-up": { 2270 | "version": "3.0.0", 2271 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 2272 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 2273 | "dev": true, 2274 | "requires": { 2275 | "locate-path": "^3.0.0" 2276 | } 2277 | }, 2278 | "get-caller-file": { 2279 | "version": "2.0.5", 2280 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2281 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2282 | "dev": true 2283 | }, 2284 | "get-stream": { 2285 | "version": "4.1.0", 2286 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 2287 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 2288 | "dev": true, 2289 | "requires": { 2290 | "pump": "^3.0.0" 2291 | } 2292 | }, 2293 | "invert-kv": { 2294 | "version": "2.0.0", 2295 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", 2296 | "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", 2297 | "dev": true 2298 | }, 2299 | "lcid": { 2300 | "version": "2.0.0", 2301 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", 2302 | "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", 2303 | "dev": true, 2304 | "requires": { 2305 | "invert-kv": "^2.0.0" 2306 | } 2307 | }, 2308 | "locate-path": { 2309 | "version": "3.0.0", 2310 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2311 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2312 | "dev": true, 2313 | "requires": { 2314 | "p-locate": "^3.0.0", 2315 | "path-exists": "^3.0.0" 2316 | } 2317 | }, 2318 | "mem": { 2319 | "version": "4.3.0", 2320 | "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", 2321 | "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", 2322 | "dev": true, 2323 | "requires": { 2324 | "map-age-cleaner": "^0.1.1", 2325 | "mimic-fn": "^2.0.0", 2326 | "p-is-promise": "^2.0.0" 2327 | } 2328 | }, 2329 | "mimic-fn": { 2330 | "version": "2.1.0", 2331 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2332 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2333 | "dev": true 2334 | }, 2335 | "os-locale": { 2336 | "version": "3.1.0", 2337 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", 2338 | "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", 2339 | "dev": true, 2340 | "requires": { 2341 | "execa": "^1.0.0", 2342 | "lcid": "^2.0.0", 2343 | "mem": "^4.0.0" 2344 | } 2345 | }, 2346 | "p-limit": { 2347 | "version": "2.2.0", 2348 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", 2349 | "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", 2350 | "dev": true, 2351 | "requires": { 2352 | "p-try": "^2.0.0" 2353 | } 2354 | }, 2355 | "p-locate": { 2356 | "version": "3.0.0", 2357 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2358 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2359 | "dev": true, 2360 | "requires": { 2361 | "p-limit": "^2.0.0" 2362 | } 2363 | }, 2364 | "p-try": { 2365 | "version": "2.2.0", 2366 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2367 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2368 | "dev": true 2369 | }, 2370 | "require-main-filename": { 2371 | "version": "2.0.0", 2372 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 2373 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 2374 | "dev": true 2375 | }, 2376 | "resolve-from": { 2377 | "version": "4.0.0", 2378 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2379 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2380 | "dev": true 2381 | }, 2382 | "string-width": { 2383 | "version": "3.1.0", 2384 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2385 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2386 | "dev": true, 2387 | "requires": { 2388 | "emoji-regex": "^7.0.1", 2389 | "is-fullwidth-code-point": "^2.0.0", 2390 | "strip-ansi": "^5.1.0" 2391 | } 2392 | }, 2393 | "strip-ansi": { 2394 | "version": "5.2.0", 2395 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2396 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2397 | "dev": true, 2398 | "requires": { 2399 | "ansi-regex": "^4.1.0" 2400 | } 2401 | }, 2402 | "wrap-ansi": { 2403 | "version": "5.1.0", 2404 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 2405 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 2406 | "dev": true, 2407 | "requires": { 2408 | "ansi-styles": "^3.2.0", 2409 | "string-width": "^3.0.0", 2410 | "strip-ansi": "^5.0.0" 2411 | } 2412 | }, 2413 | "y18n": { 2414 | "version": "4.0.0", 2415 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 2416 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 2417 | "dev": true 2418 | }, 2419 | "yargs": { 2420 | "version": "13.2.4", 2421 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", 2422 | "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", 2423 | "dev": true, 2424 | "requires": { 2425 | "cliui": "^5.0.0", 2426 | "find-up": "^3.0.0", 2427 | "get-caller-file": "^2.0.1", 2428 | "os-locale": "^3.1.0", 2429 | "require-directory": "^2.1.1", 2430 | "require-main-filename": "^2.0.0", 2431 | "set-blocking": "^2.0.0", 2432 | "string-width": "^3.0.0", 2433 | "which-module": "^2.0.0", 2434 | "y18n": "^4.0.0", 2435 | "yargs-parser": "^13.1.0" 2436 | } 2437 | }, 2438 | "yargs-parser": { 2439 | "version": "13.1.1", 2440 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", 2441 | "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", 2442 | "dev": true, 2443 | "requires": { 2444 | "camelcase": "^5.0.0", 2445 | "decamelize": "^1.2.0" 2446 | } 2447 | } 2448 | } 2449 | }, 2450 | "object-assign": { 2451 | "version": "4.1.1", 2452 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2453 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2454 | }, 2455 | "object-keys": { 2456 | "version": "1.1.1", 2457 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2458 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2459 | "dev": true 2460 | }, 2461 | "object.assign": { 2462 | "version": "4.1.0", 2463 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2464 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2465 | "dev": true, 2466 | "requires": { 2467 | "define-properties": "^1.1.2", 2468 | "function-bind": "^1.1.1", 2469 | "has-symbols": "^1.0.0", 2470 | "object-keys": "^1.0.11" 2471 | } 2472 | }, 2473 | "object.getownpropertydescriptors": { 2474 | "version": "2.0.3", 2475 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", 2476 | "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", 2477 | "dev": true, 2478 | "requires": { 2479 | "define-properties": "^1.1.2", 2480 | "es-abstract": "^1.5.1" 2481 | } 2482 | }, 2483 | "on-finished": { 2484 | "version": "2.3.0", 2485 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2486 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2487 | "dev": true, 2488 | "requires": { 2489 | "ee-first": "1.1.1" 2490 | } 2491 | }, 2492 | "once": { 2493 | "version": "1.4.0", 2494 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2495 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2496 | "dev": true, 2497 | "requires": { 2498 | "wrappy": "1" 2499 | } 2500 | }, 2501 | "onetime": { 2502 | "version": "2.0.1", 2503 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 2504 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 2505 | "dev": true, 2506 | "requires": { 2507 | "mimic-fn": "^1.0.0" 2508 | } 2509 | }, 2510 | "optimist": { 2511 | "version": "0.6.1", 2512 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 2513 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 2514 | "dev": true, 2515 | "requires": { 2516 | "minimist": "~0.0.1", 2517 | "wordwrap": "~0.0.2" 2518 | }, 2519 | "dependencies": { 2520 | "wordwrap": { 2521 | "version": "0.0.3", 2522 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 2523 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", 2524 | "dev": true 2525 | } 2526 | } 2527 | }, 2528 | "optionator": { 2529 | "version": "0.8.2", 2530 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 2531 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 2532 | "dev": true, 2533 | "requires": { 2534 | "deep-is": "~0.1.3", 2535 | "fast-levenshtein": "~2.0.4", 2536 | "levn": "~0.3.0", 2537 | "prelude-ls": "~1.1.2", 2538 | "type-check": "~0.3.2", 2539 | "wordwrap": "~1.0.0" 2540 | } 2541 | }, 2542 | "os-homedir": { 2543 | "version": "1.0.2", 2544 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2545 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2546 | "dev": true 2547 | }, 2548 | "os-locale": { 2549 | "version": "2.1.0", 2550 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", 2551 | "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", 2552 | "dev": true, 2553 | "requires": { 2554 | "execa": "^0.7.0", 2555 | "lcid": "^1.0.0", 2556 | "mem": "^1.1.0" 2557 | } 2558 | }, 2559 | "os-tmpdir": { 2560 | "version": "1.0.2", 2561 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2562 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2563 | "dev": true 2564 | }, 2565 | "p-defer": { 2566 | "version": "1.0.0", 2567 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", 2568 | "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", 2569 | "dev": true 2570 | }, 2571 | "p-finally": { 2572 | "version": "1.0.0", 2573 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2574 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 2575 | "dev": true 2576 | }, 2577 | "p-is-promise": { 2578 | "version": "2.1.0", 2579 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", 2580 | "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", 2581 | "dev": true 2582 | }, 2583 | "p-limit": { 2584 | "version": "1.3.0", 2585 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2586 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2587 | "dev": true, 2588 | "requires": { 2589 | "p-try": "^1.0.0" 2590 | } 2591 | }, 2592 | "p-locate": { 2593 | "version": "2.0.0", 2594 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2595 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2596 | "dev": true, 2597 | "requires": { 2598 | "p-limit": "^1.1.0" 2599 | } 2600 | }, 2601 | "p-try": { 2602 | "version": "1.0.0", 2603 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2604 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2605 | "dev": true 2606 | }, 2607 | "package-hash": { 2608 | "version": "3.0.0", 2609 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", 2610 | "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", 2611 | "dev": true, 2612 | "requires": { 2613 | "graceful-fs": "^4.1.15", 2614 | "hasha": "^3.0.0", 2615 | "lodash.flattendeep": "^4.4.0", 2616 | "release-zalgo": "^1.0.0" 2617 | } 2618 | }, 2619 | "parse-json": { 2620 | "version": "2.2.0", 2621 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2622 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2623 | "dev": true, 2624 | "requires": { 2625 | "error-ex": "^1.2.0" 2626 | } 2627 | }, 2628 | "parseurl": { 2629 | "version": "1.3.3", 2630 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2631 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 2632 | "dev": true 2633 | }, 2634 | "path-exists": { 2635 | "version": "3.0.0", 2636 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2637 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2638 | "dev": true 2639 | }, 2640 | "path-is-absolute": { 2641 | "version": "1.0.1", 2642 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2643 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2644 | "dev": true 2645 | }, 2646 | "path-is-inside": { 2647 | "version": "1.0.2", 2648 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2649 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 2650 | "dev": true 2651 | }, 2652 | "path-key": { 2653 | "version": "2.0.1", 2654 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2655 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2656 | "dev": true 2657 | }, 2658 | "path-parse": { 2659 | "version": "1.0.6", 2660 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2661 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2662 | "dev": true 2663 | }, 2664 | "path-to-regexp": { 2665 | "version": "0.1.7", 2666 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2667 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 2668 | "dev": true 2669 | }, 2670 | "path-type": { 2671 | "version": "2.0.0", 2672 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2673 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2674 | "dev": true, 2675 | "requires": { 2676 | "pify": "^2.0.0" 2677 | } 2678 | }, 2679 | "pify": { 2680 | "version": "2.3.0", 2681 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2682 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2683 | "dev": true 2684 | }, 2685 | "pkg-dir": { 2686 | "version": "3.0.0", 2687 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 2688 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", 2689 | "dev": true, 2690 | "requires": { 2691 | "find-up": "^3.0.0" 2692 | }, 2693 | "dependencies": { 2694 | "find-up": { 2695 | "version": "3.0.0", 2696 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 2697 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 2698 | "dev": true, 2699 | "requires": { 2700 | "locate-path": "^3.0.0" 2701 | } 2702 | }, 2703 | "locate-path": { 2704 | "version": "3.0.0", 2705 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2706 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2707 | "dev": true, 2708 | "requires": { 2709 | "p-locate": "^3.0.0", 2710 | "path-exists": "^3.0.0" 2711 | } 2712 | }, 2713 | "p-limit": { 2714 | "version": "2.2.0", 2715 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", 2716 | "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", 2717 | "dev": true, 2718 | "requires": { 2719 | "p-try": "^2.0.0" 2720 | } 2721 | }, 2722 | "p-locate": { 2723 | "version": "3.0.0", 2724 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2725 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2726 | "dev": true, 2727 | "requires": { 2728 | "p-limit": "^2.0.0" 2729 | } 2730 | }, 2731 | "p-try": { 2732 | "version": "2.2.0", 2733 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2734 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2735 | "dev": true 2736 | } 2737 | } 2738 | }, 2739 | "pluralize": { 2740 | "version": "7.0.0", 2741 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", 2742 | "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", 2743 | "dev": true 2744 | }, 2745 | "prelude-ls": { 2746 | "version": "1.1.2", 2747 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 2748 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 2749 | "dev": true 2750 | }, 2751 | "process-nextick-args": { 2752 | "version": "2.0.1", 2753 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2754 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2755 | "dev": true 2756 | }, 2757 | "progress": { 2758 | "version": "2.0.3", 2759 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2760 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2761 | "dev": true 2762 | }, 2763 | "proxy-addr": { 2764 | "version": "2.0.5", 2765 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 2766 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 2767 | "dev": true, 2768 | "requires": { 2769 | "forwarded": "~0.1.2", 2770 | "ipaddr.js": "1.9.0" 2771 | } 2772 | }, 2773 | "pseudomap": { 2774 | "version": "1.0.2", 2775 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2776 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 2777 | "dev": true 2778 | }, 2779 | "pump": { 2780 | "version": "3.0.0", 2781 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2782 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2783 | "dev": true, 2784 | "requires": { 2785 | "end-of-stream": "^1.1.0", 2786 | "once": "^1.3.1" 2787 | } 2788 | }, 2789 | "qs": { 2790 | "version": "6.7.0", 2791 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 2792 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", 2793 | "dev": true 2794 | }, 2795 | "ramda": { 2796 | "version": "0.25.0", 2797 | "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", 2798 | "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", 2799 | "dev": true 2800 | }, 2801 | "range-parser": { 2802 | "version": "1.2.1", 2803 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2804 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 2805 | "dev": true 2806 | }, 2807 | "raw-body": { 2808 | "version": "2.4.0", 2809 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 2810 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 2811 | "dev": true, 2812 | "requires": { 2813 | "bytes": "3.1.0", 2814 | "http-errors": "1.7.2", 2815 | "iconv-lite": "0.4.24", 2816 | "unpipe": "1.0.0" 2817 | } 2818 | }, 2819 | "read-pkg": { 2820 | "version": "2.0.0", 2821 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2822 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2823 | "dev": true, 2824 | "requires": { 2825 | "load-json-file": "^2.0.0", 2826 | "normalize-package-data": "^2.3.2", 2827 | "path-type": "^2.0.0" 2828 | } 2829 | }, 2830 | "read-pkg-up": { 2831 | "version": "2.0.0", 2832 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2833 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2834 | "dev": true, 2835 | "requires": { 2836 | "find-up": "^2.0.0", 2837 | "read-pkg": "^2.0.0" 2838 | } 2839 | }, 2840 | "readable-stream": { 2841 | "version": "2.3.6", 2842 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2843 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2844 | "dev": true, 2845 | "requires": { 2846 | "core-util-is": "~1.0.0", 2847 | "inherits": "~2.0.3", 2848 | "isarray": "~1.0.0", 2849 | "process-nextick-args": "~2.0.0", 2850 | "safe-buffer": "~5.1.1", 2851 | "string_decoder": "~1.1.1", 2852 | "util-deprecate": "~1.0.1" 2853 | } 2854 | }, 2855 | "regexpp": { 2856 | "version": "1.1.0", 2857 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", 2858 | "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", 2859 | "dev": true 2860 | }, 2861 | "release-zalgo": { 2862 | "version": "1.0.0", 2863 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 2864 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 2865 | "dev": true, 2866 | "requires": { 2867 | "es6-error": "^4.0.1" 2868 | } 2869 | }, 2870 | "require-directory": { 2871 | "version": "2.1.1", 2872 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2873 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2874 | "dev": true 2875 | }, 2876 | "require-main-filename": { 2877 | "version": "1.0.1", 2878 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 2879 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 2880 | "dev": true 2881 | }, 2882 | "require-uncached": { 2883 | "version": "1.0.3", 2884 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 2885 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 2886 | "dev": true, 2887 | "requires": { 2888 | "caller-path": "^0.1.0", 2889 | "resolve-from": "^1.0.0" 2890 | } 2891 | }, 2892 | "resolve": { 2893 | "version": "1.11.1", 2894 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", 2895 | "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", 2896 | "dev": true, 2897 | "requires": { 2898 | "path-parse": "^1.0.6" 2899 | } 2900 | }, 2901 | "resolve-from": { 2902 | "version": "1.0.1", 2903 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 2904 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 2905 | "dev": true 2906 | }, 2907 | "restore-cursor": { 2908 | "version": "2.0.0", 2909 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 2910 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 2911 | "dev": true, 2912 | "requires": { 2913 | "onetime": "^2.0.0", 2914 | "signal-exit": "^3.0.2" 2915 | } 2916 | }, 2917 | "rimraf": { 2918 | "version": "2.6.3", 2919 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 2920 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 2921 | "dev": true, 2922 | "requires": { 2923 | "glob": "^7.1.3" 2924 | } 2925 | }, 2926 | "run-async": { 2927 | "version": "2.3.0", 2928 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 2929 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 2930 | "dev": true, 2931 | "requires": { 2932 | "is-promise": "^2.1.0" 2933 | } 2934 | }, 2935 | "rx-lite": { 2936 | "version": "4.0.8", 2937 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 2938 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", 2939 | "dev": true 2940 | }, 2941 | "rx-lite-aggregates": { 2942 | "version": "4.0.8", 2943 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 2944 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", 2945 | "dev": true, 2946 | "requires": { 2947 | "rx-lite": "*" 2948 | } 2949 | }, 2950 | "safe-buffer": { 2951 | "version": "5.1.2", 2952 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2953 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2954 | "dev": true 2955 | }, 2956 | "safer-buffer": { 2957 | "version": "2.1.2", 2958 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2959 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2960 | "dev": true 2961 | }, 2962 | "semver": { 2963 | "version": "5.7.0", 2964 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 2965 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 2966 | "dev": true 2967 | }, 2968 | "send": { 2969 | "version": "0.17.1", 2970 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 2971 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 2972 | "dev": true, 2973 | "requires": { 2974 | "debug": "2.6.9", 2975 | "depd": "~1.1.2", 2976 | "destroy": "~1.0.4", 2977 | "encodeurl": "~1.0.2", 2978 | "escape-html": "~1.0.3", 2979 | "etag": "~1.8.1", 2980 | "fresh": "0.5.2", 2981 | "http-errors": "~1.7.2", 2982 | "mime": "1.6.0", 2983 | "ms": "2.1.1", 2984 | "on-finished": "~2.3.0", 2985 | "range-parser": "~1.2.1", 2986 | "statuses": "~1.5.0" 2987 | }, 2988 | "dependencies": { 2989 | "debug": { 2990 | "version": "2.6.9", 2991 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2992 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2993 | "dev": true, 2994 | "requires": { 2995 | "ms": "2.0.0" 2996 | }, 2997 | "dependencies": { 2998 | "ms": { 2999 | "version": "2.0.0", 3000 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3001 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3002 | "dev": true 3003 | } 3004 | } 3005 | }, 3006 | "ms": { 3007 | "version": "2.1.1", 3008 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 3009 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", 3010 | "dev": true 3011 | } 3012 | } 3013 | }, 3014 | "serve-static": { 3015 | "version": "1.14.1", 3016 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 3017 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 3018 | "dev": true, 3019 | "requires": { 3020 | "encodeurl": "~1.0.2", 3021 | "escape-html": "~1.0.3", 3022 | "parseurl": "~1.3.3", 3023 | "send": "0.17.1" 3024 | } 3025 | }, 3026 | "set-blocking": { 3027 | "version": "2.0.0", 3028 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3029 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 3030 | "dev": true 3031 | }, 3032 | "setprototypeof": { 3033 | "version": "1.1.1", 3034 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 3035 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 3036 | "dev": true 3037 | }, 3038 | "shebang-command": { 3039 | "version": "1.2.0", 3040 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3041 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3042 | "dev": true, 3043 | "requires": { 3044 | "shebang-regex": "^1.0.0" 3045 | } 3046 | }, 3047 | "shebang-regex": { 3048 | "version": "1.0.0", 3049 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3050 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3051 | "dev": true 3052 | }, 3053 | "signal-exit": { 3054 | "version": "3.0.2", 3055 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3056 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 3057 | "dev": true 3058 | }, 3059 | "slice-ansi": { 3060 | "version": "1.0.0", 3061 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 3062 | "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 3063 | "dev": true, 3064 | "requires": { 3065 | "is-fullwidth-code-point": "^2.0.0" 3066 | } 3067 | }, 3068 | "source-map": { 3069 | "version": "0.5.7", 3070 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3071 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3072 | "dev": true 3073 | }, 3074 | "spawn-wrap": { 3075 | "version": "1.4.2", 3076 | "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", 3077 | "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", 3078 | "dev": true, 3079 | "requires": { 3080 | "foreground-child": "^1.5.6", 3081 | "mkdirp": "^0.5.0", 3082 | "os-homedir": "^1.0.1", 3083 | "rimraf": "^2.6.2", 3084 | "signal-exit": "^3.0.2", 3085 | "which": "^1.3.0" 3086 | } 3087 | }, 3088 | "spdx-correct": { 3089 | "version": "3.1.0", 3090 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 3091 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 3092 | "dev": true, 3093 | "requires": { 3094 | "spdx-expression-parse": "^3.0.0", 3095 | "spdx-license-ids": "^3.0.0" 3096 | } 3097 | }, 3098 | "spdx-exceptions": { 3099 | "version": "2.2.0", 3100 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 3101 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 3102 | "dev": true 3103 | }, 3104 | "spdx-expression-parse": { 3105 | "version": "3.0.0", 3106 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 3107 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 3108 | "dev": true, 3109 | "requires": { 3110 | "spdx-exceptions": "^2.1.0", 3111 | "spdx-license-ids": "^3.0.0" 3112 | } 3113 | }, 3114 | "spdx-license-ids": { 3115 | "version": "3.0.4", 3116 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", 3117 | "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", 3118 | "dev": true 3119 | }, 3120 | "sprintf-js": { 3121 | "version": "1.0.3", 3122 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3123 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3124 | "dev": true 3125 | }, 3126 | "statuses": { 3127 | "version": "1.5.0", 3128 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3129 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 3130 | "dev": true 3131 | }, 3132 | "string-width": { 3133 | "version": "2.1.1", 3134 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3135 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3136 | "dev": true, 3137 | "requires": { 3138 | "is-fullwidth-code-point": "^2.0.0", 3139 | "strip-ansi": "^4.0.0" 3140 | } 3141 | }, 3142 | "string_decoder": { 3143 | "version": "1.1.1", 3144 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3145 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3146 | "dev": true, 3147 | "requires": { 3148 | "safe-buffer": "~5.1.0" 3149 | } 3150 | }, 3151 | "strip-ansi": { 3152 | "version": "4.0.0", 3153 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3154 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3155 | "dev": true, 3156 | "requires": { 3157 | "ansi-regex": "^3.0.0" 3158 | }, 3159 | "dependencies": { 3160 | "ansi-regex": { 3161 | "version": "3.0.0", 3162 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 3163 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 3164 | "dev": true 3165 | } 3166 | } 3167 | }, 3168 | "strip-bom": { 3169 | "version": "3.0.0", 3170 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3171 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3172 | "dev": true 3173 | }, 3174 | "strip-eof": { 3175 | "version": "1.0.0", 3176 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3177 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 3178 | "dev": true 3179 | }, 3180 | "strip-json-comments": { 3181 | "version": "2.0.1", 3182 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3183 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 3184 | "dev": true 3185 | }, 3186 | "supports-color": { 3187 | "version": "2.0.0", 3188 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 3189 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 3190 | "dev": true 3191 | }, 3192 | "table": { 3193 | "version": "4.0.2", 3194 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", 3195 | "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", 3196 | "dev": true, 3197 | "requires": { 3198 | "ajv": "^5.2.3", 3199 | "ajv-keywords": "^2.1.0", 3200 | "chalk": "^2.1.0", 3201 | "lodash": "^4.17.4", 3202 | "slice-ansi": "1.0.0", 3203 | "string-width": "^2.1.1" 3204 | } 3205 | }, 3206 | "test-exclude": { 3207 | "version": "5.2.3", 3208 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", 3209 | "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", 3210 | "dev": true, 3211 | "requires": { 3212 | "glob": "^7.1.3", 3213 | "minimatch": "^3.0.4", 3214 | "read-pkg-up": "^4.0.0", 3215 | "require-main-filename": "^2.0.0" 3216 | }, 3217 | "dependencies": { 3218 | "find-up": { 3219 | "version": "3.0.0", 3220 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 3221 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 3222 | "dev": true, 3223 | "requires": { 3224 | "locate-path": "^3.0.0" 3225 | } 3226 | }, 3227 | "load-json-file": { 3228 | "version": "4.0.0", 3229 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 3230 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 3231 | "dev": true, 3232 | "requires": { 3233 | "graceful-fs": "^4.1.2", 3234 | "parse-json": "^4.0.0", 3235 | "pify": "^3.0.0", 3236 | "strip-bom": "^3.0.0" 3237 | } 3238 | }, 3239 | "locate-path": { 3240 | "version": "3.0.0", 3241 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 3242 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 3243 | "dev": true, 3244 | "requires": { 3245 | "p-locate": "^3.0.0", 3246 | "path-exists": "^3.0.0" 3247 | } 3248 | }, 3249 | "p-limit": { 3250 | "version": "2.2.0", 3251 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", 3252 | "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", 3253 | "dev": true, 3254 | "requires": { 3255 | "p-try": "^2.0.0" 3256 | } 3257 | }, 3258 | "p-locate": { 3259 | "version": "3.0.0", 3260 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 3261 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 3262 | "dev": true, 3263 | "requires": { 3264 | "p-limit": "^2.0.0" 3265 | } 3266 | }, 3267 | "p-try": { 3268 | "version": "2.2.0", 3269 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3270 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3271 | "dev": true 3272 | }, 3273 | "parse-json": { 3274 | "version": "4.0.0", 3275 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 3276 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 3277 | "dev": true, 3278 | "requires": { 3279 | "error-ex": "^1.3.1", 3280 | "json-parse-better-errors": "^1.0.1" 3281 | } 3282 | }, 3283 | "path-type": { 3284 | "version": "3.0.0", 3285 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 3286 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 3287 | "dev": true, 3288 | "requires": { 3289 | "pify": "^3.0.0" 3290 | } 3291 | }, 3292 | "pify": { 3293 | "version": "3.0.0", 3294 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 3295 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 3296 | "dev": true 3297 | }, 3298 | "read-pkg": { 3299 | "version": "3.0.0", 3300 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 3301 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 3302 | "dev": true, 3303 | "requires": { 3304 | "load-json-file": "^4.0.0", 3305 | "normalize-package-data": "^2.3.2", 3306 | "path-type": "^3.0.0" 3307 | } 3308 | }, 3309 | "read-pkg-up": { 3310 | "version": "4.0.0", 3311 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", 3312 | "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", 3313 | "dev": true, 3314 | "requires": { 3315 | "find-up": "^3.0.0", 3316 | "read-pkg": "^3.0.0" 3317 | } 3318 | }, 3319 | "require-main-filename": { 3320 | "version": "2.0.0", 3321 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 3322 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 3323 | "dev": true 3324 | } 3325 | } 3326 | }, 3327 | "text-table": { 3328 | "version": "0.2.0", 3329 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3330 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3331 | "dev": true 3332 | }, 3333 | "through": { 3334 | "version": "2.3.8", 3335 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3336 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 3337 | "dev": true 3338 | }, 3339 | "tmp": { 3340 | "version": "0.0.33", 3341 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3342 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3343 | "dev": true, 3344 | "requires": { 3345 | "os-tmpdir": "~1.0.2" 3346 | } 3347 | }, 3348 | "to-fast-properties": { 3349 | "version": "2.0.0", 3350 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3351 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 3352 | "dev": true 3353 | }, 3354 | "toidentifier": { 3355 | "version": "1.0.0", 3356 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 3357 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 3358 | "dev": true 3359 | }, 3360 | "trim-right": { 3361 | "version": "1.0.1", 3362 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 3363 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 3364 | "dev": true 3365 | }, 3366 | "type-check": { 3367 | "version": "0.3.2", 3368 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 3369 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 3370 | "dev": true, 3371 | "requires": { 3372 | "prelude-ls": "~1.1.2" 3373 | } 3374 | }, 3375 | "type-is": { 3376 | "version": "1.6.18", 3377 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3378 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3379 | "dev": true, 3380 | "requires": { 3381 | "media-typer": "0.3.0", 3382 | "mime-types": "~2.1.24" 3383 | } 3384 | }, 3385 | "typedarray": { 3386 | "version": "0.0.6", 3387 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3388 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 3389 | "dev": true 3390 | }, 3391 | "uglify-js": { 3392 | "version": "3.6.0", 3393 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", 3394 | "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", 3395 | "dev": true, 3396 | "optional": true, 3397 | "requires": { 3398 | "commander": "~2.20.0", 3399 | "source-map": "~0.6.1" 3400 | }, 3401 | "dependencies": { 3402 | "source-map": { 3403 | "version": "0.6.1", 3404 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3405 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3406 | "dev": true, 3407 | "optional": true 3408 | } 3409 | } 3410 | }, 3411 | "understudy": { 3412 | "version": "4.1.0", 3413 | "resolved": "https://registry.npmjs.org/understudy/-/understudy-4.1.0.tgz", 3414 | "integrity": "sha1-ttbpYkzLt/ouUZafW+LHSOlp70o=" 3415 | }, 3416 | "unpipe": { 3417 | "version": "1.0.0", 3418 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3419 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 3420 | "dev": true 3421 | }, 3422 | "util-deprecate": { 3423 | "version": "1.0.2", 3424 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3425 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3426 | "dev": true 3427 | }, 3428 | "utils-merge": { 3429 | "version": "1.0.1", 3430 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3431 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 3432 | "dev": true 3433 | }, 3434 | "uuid": { 3435 | "version": "3.3.2", 3436 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 3437 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", 3438 | "dev": true 3439 | }, 3440 | "validate-npm-package-license": { 3441 | "version": "3.0.4", 3442 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3443 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3444 | "dev": true, 3445 | "requires": { 3446 | "spdx-correct": "^3.0.0", 3447 | "spdx-expression-parse": "^3.0.0" 3448 | } 3449 | }, 3450 | "vary": { 3451 | "version": "1.1.2", 3452 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3453 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 3454 | "dev": true 3455 | }, 3456 | "vscode-json-languageservice": { 3457 | "version": "3.3.0", 3458 | "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-3.3.0.tgz", 3459 | "integrity": "sha512-upq1PhwDItazdtRJ/R7uU0Fgrf9iaYa1xLK4WFLExR0DgbPojd0YgMpfyknVyXGlxsg3fJQ0H7J++QeByXHh9w==", 3460 | "dev": true, 3461 | "requires": { 3462 | "jsonc-parser": "^2.1.0", 3463 | "vscode-languageserver-types": "^3.15.0-next.2", 3464 | "vscode-nls": "^4.1.1", 3465 | "vscode-uri": "^2.0.1" 3466 | } 3467 | }, 3468 | "vscode-languageserver-types": { 3469 | "version": "3.15.0-next.2", 3470 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz", 3471 | "integrity": "sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==", 3472 | "dev": true 3473 | }, 3474 | "vscode-nls": { 3475 | "version": "4.1.1", 3476 | "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.1.tgz", 3477 | "integrity": "sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==", 3478 | "dev": true 3479 | }, 3480 | "vscode-uri": { 3481 | "version": "2.0.2", 3482 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.0.2.tgz", 3483 | "integrity": "sha512-VebpIxm9tG0fG2sBOhnsSPzDYuNUPP1UQW4K3mwthlca4e4f3d6HKq3HkITC2OPFomOaB7pHTSjcpdFWjfYTzg==", 3484 | "dev": true 3485 | }, 3486 | "which": { 3487 | "version": "1.3.1", 3488 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3489 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3490 | "dev": true, 3491 | "requires": { 3492 | "isexe": "^2.0.0" 3493 | } 3494 | }, 3495 | "which-module": { 3496 | "version": "2.0.0", 3497 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 3498 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 3499 | "dev": true 3500 | }, 3501 | "wide-align": { 3502 | "version": "1.1.3", 3503 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3504 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3505 | "dev": true, 3506 | "requires": { 3507 | "string-width": "^1.0.2 || 2" 3508 | } 3509 | }, 3510 | "window-size": { 3511 | "version": "0.3.0", 3512 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.3.0.tgz", 3513 | "integrity": "sha1-uPC2bjJdIhYHUeSWM35EtFtydUY=", 3514 | "dev": true 3515 | }, 3516 | "wordwrap": { 3517 | "version": "1.0.0", 3518 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 3519 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 3520 | "dev": true 3521 | }, 3522 | "wrap-ansi": { 3523 | "version": "2.1.0", 3524 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 3525 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 3526 | "dev": true, 3527 | "requires": { 3528 | "string-width": "^1.0.1", 3529 | "strip-ansi": "^3.0.1" 3530 | }, 3531 | "dependencies": { 3532 | "is-fullwidth-code-point": { 3533 | "version": "1.0.0", 3534 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 3535 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 3536 | "dev": true, 3537 | "requires": { 3538 | "number-is-nan": "^1.0.0" 3539 | } 3540 | }, 3541 | "string-width": { 3542 | "version": "1.0.2", 3543 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 3544 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 3545 | "dev": true, 3546 | "requires": { 3547 | "code-point-at": "^1.0.0", 3548 | "is-fullwidth-code-point": "^1.0.0", 3549 | "strip-ansi": "^3.0.0" 3550 | } 3551 | }, 3552 | "strip-ansi": { 3553 | "version": "3.0.1", 3554 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 3555 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 3556 | "dev": true, 3557 | "requires": { 3558 | "ansi-regex": "^2.0.0" 3559 | } 3560 | } 3561 | } 3562 | }, 3563 | "wrappy": { 3564 | "version": "1.0.2", 3565 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3566 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3567 | "dev": true 3568 | }, 3569 | "write": { 3570 | "version": "0.2.1", 3571 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 3572 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 3573 | "dev": true, 3574 | "requires": { 3575 | "mkdirp": "^0.5.1" 3576 | } 3577 | }, 3578 | "write-file-atomic": { 3579 | "version": "2.4.3", 3580 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 3581 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 3582 | "dev": true, 3583 | "requires": { 3584 | "graceful-fs": "^4.1.11", 3585 | "imurmurhash": "^0.1.4", 3586 | "signal-exit": "^3.0.2" 3587 | } 3588 | }, 3589 | "y18n": { 3590 | "version": "3.2.1", 3591 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 3592 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", 3593 | "dev": true 3594 | }, 3595 | "yallist": { 3596 | "version": "2.1.2", 3597 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3598 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 3599 | "dev": true 3600 | }, 3601 | "yargs": { 3602 | "version": "8.0.2", 3603 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", 3604 | "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", 3605 | "dev": true, 3606 | "requires": { 3607 | "camelcase": "^4.1.0", 3608 | "cliui": "^3.2.0", 3609 | "decamelize": "^1.1.1", 3610 | "get-caller-file": "^1.0.1", 3611 | "os-locale": "^2.0.0", 3612 | "read-pkg-up": "^2.0.0", 3613 | "require-directory": "^2.1.1", 3614 | "require-main-filename": "^1.0.1", 3615 | "set-blocking": "^2.0.0", 3616 | "string-width": "^2.0.0", 3617 | "which-module": "^2.0.0", 3618 | "y18n": "^3.2.1", 3619 | "yargs-parser": "^7.0.0" 3620 | } 3621 | }, 3622 | "yargs-parser": { 3623 | "version": "7.0.0", 3624 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", 3625 | "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", 3626 | "dev": true, 3627 | "requires": { 3628 | "camelcase": "^4.1.0" 3629 | } 3630 | }, 3631 | "yargs-unparser": { 3632 | "version": "1.5.0", 3633 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", 3634 | "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", 3635 | "dev": true, 3636 | "requires": { 3637 | "flat": "^4.1.0", 3638 | "lodash": "^4.17.11", 3639 | "yargs": "^12.0.5" 3640 | }, 3641 | "dependencies": { 3642 | "camelcase": { 3643 | "version": "5.3.1", 3644 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 3645 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 3646 | "dev": true 3647 | }, 3648 | "cliui": { 3649 | "version": "4.1.0", 3650 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", 3651 | "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", 3652 | "dev": true, 3653 | "requires": { 3654 | "string-width": "^2.1.1", 3655 | "strip-ansi": "^4.0.0", 3656 | "wrap-ansi": "^2.0.0" 3657 | } 3658 | }, 3659 | "cross-spawn": { 3660 | "version": "6.0.5", 3661 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 3662 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 3663 | "dev": true, 3664 | "requires": { 3665 | "nice-try": "^1.0.4", 3666 | "path-key": "^2.0.1", 3667 | "semver": "^5.5.0", 3668 | "shebang-command": "^1.2.0", 3669 | "which": "^1.2.9" 3670 | } 3671 | }, 3672 | "execa": { 3673 | "version": "1.0.0", 3674 | "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", 3675 | "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", 3676 | "dev": true, 3677 | "requires": { 3678 | "cross-spawn": "^6.0.0", 3679 | "get-stream": "^4.0.0", 3680 | "is-stream": "^1.1.0", 3681 | "npm-run-path": "^2.0.0", 3682 | "p-finally": "^1.0.0", 3683 | "signal-exit": "^3.0.0", 3684 | "strip-eof": "^1.0.0" 3685 | } 3686 | }, 3687 | "find-up": { 3688 | "version": "3.0.0", 3689 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 3690 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 3691 | "dev": true, 3692 | "requires": { 3693 | "locate-path": "^3.0.0" 3694 | } 3695 | }, 3696 | "get-stream": { 3697 | "version": "4.1.0", 3698 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 3699 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 3700 | "dev": true, 3701 | "requires": { 3702 | "pump": "^3.0.0" 3703 | } 3704 | }, 3705 | "invert-kv": { 3706 | "version": "2.0.0", 3707 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", 3708 | "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", 3709 | "dev": true 3710 | }, 3711 | "lcid": { 3712 | "version": "2.0.0", 3713 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", 3714 | "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", 3715 | "dev": true, 3716 | "requires": { 3717 | "invert-kv": "^2.0.0" 3718 | } 3719 | }, 3720 | "locate-path": { 3721 | "version": "3.0.0", 3722 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 3723 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 3724 | "dev": true, 3725 | "requires": { 3726 | "p-locate": "^3.0.0", 3727 | "path-exists": "^3.0.0" 3728 | } 3729 | }, 3730 | "mem": { 3731 | "version": "4.3.0", 3732 | "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", 3733 | "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", 3734 | "dev": true, 3735 | "requires": { 3736 | "map-age-cleaner": "^0.1.1", 3737 | "mimic-fn": "^2.0.0", 3738 | "p-is-promise": "^2.0.0" 3739 | } 3740 | }, 3741 | "mimic-fn": { 3742 | "version": "2.1.0", 3743 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 3744 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 3745 | "dev": true 3746 | }, 3747 | "os-locale": { 3748 | "version": "3.1.0", 3749 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", 3750 | "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", 3751 | "dev": true, 3752 | "requires": { 3753 | "execa": "^1.0.0", 3754 | "lcid": "^2.0.0", 3755 | "mem": "^4.0.0" 3756 | } 3757 | }, 3758 | "p-limit": { 3759 | "version": "2.2.0", 3760 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", 3761 | "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", 3762 | "dev": true, 3763 | "requires": { 3764 | "p-try": "^2.0.0" 3765 | } 3766 | }, 3767 | "p-locate": { 3768 | "version": "3.0.0", 3769 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 3770 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 3771 | "dev": true, 3772 | "requires": { 3773 | "p-limit": "^2.0.0" 3774 | } 3775 | }, 3776 | "p-try": { 3777 | "version": "2.2.0", 3778 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3779 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3780 | "dev": true 3781 | }, 3782 | "yargs": { 3783 | "version": "12.0.5", 3784 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", 3785 | "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", 3786 | "dev": true, 3787 | "requires": { 3788 | "cliui": "^4.0.0", 3789 | "decamelize": "^1.2.0", 3790 | "find-up": "^3.0.0", 3791 | "get-caller-file": "^1.0.1", 3792 | "os-locale": "^3.0.0", 3793 | "require-directory": "^2.1.1", 3794 | "require-main-filename": "^1.0.1", 3795 | "set-blocking": "^2.0.0", 3796 | "string-width": "^2.0.0", 3797 | "which-module": "^2.0.0", 3798 | "y18n": "^3.2.1 || ^4.0.0", 3799 | "yargs-parser": "^11.1.1" 3800 | } 3801 | }, 3802 | "yargs-parser": { 3803 | "version": "11.1.1", 3804 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", 3805 | "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", 3806 | "dev": true, 3807 | "requires": { 3808 | "camelcase": "^5.0.0", 3809 | "decamelize": "^1.2.0" 3810 | } 3811 | } 3812 | } 3813 | } 3814 | } 3815 | } 3816 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "broadway", 3 | "version": "4.1.0", 4 | "description": "Lightweight App extensibility and hookable middleware customization.", 5 | "author": "Charlie Robbins ", 6 | "license": "SEE LICENSE IN LICENSE", 7 | "repository": { 8 | "url": "http://github.com/flatiron/broadway.git", 9 | "type": "git" 10 | }, 11 | "main": "./lib", 12 | "engines": { 13 | "node": ">= 8" 14 | }, 15 | "devDependencies": { 16 | "basic-auth": "^1.0.0", 17 | "eslint-config-populist": "^4.2.0", 18 | "express": "^4.12.3", 19 | "mocha": "^6.1.4", 20 | "nyc": "^14.1.1" 21 | }, 22 | "dependencies": { 23 | "create-servers": "^3.0.1", 24 | "merge-descriptors": "^1.0.0", 25 | "understudy": "^4.0.0" 26 | }, 27 | "scripts": { 28 | "mocha": "mocha -w -R spec", 29 | "cover": "nyc mocha", 30 | "pretest": "eslint --fix index.js test/ examples/", 31 | "test": "npm run cover" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /test/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "expr": true, 3 | "bitwise": false, 4 | "camelcase": true, 5 | "curly": false, 6 | "eqeqeq": true, 7 | "freeze": true, 8 | "immed": true, 9 | "indent": 2, 10 | "latedef": "nofunc", 11 | "laxbreak": true, 12 | "laxcomma": true, 13 | "newcap": true, 14 | "noarg": true, 15 | "node": true, 16 | "strict": true, 17 | "trailing": true, 18 | "undef": true, 19 | "globals": { 20 | "it": true, 21 | "describe": true, 22 | "before": true, 23 | "after": true, 24 | "beforeEach": true, 25 | "afterEach": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --reporter spec 2 | -t 10000 3 | -------------------------------------------------------------------------------- /test/unit.tests.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'), 2 | express = require('express'), 3 | App = require('../'); 4 | 5 | /* 6 | * Simple helper function that creates a basic 7 | * app that mixes in express. 8 | */ 9 | function expressApp(port) { 10 | var options = typeof port === 'number' 11 | ? { http: port } 12 | : port; 13 | 14 | return new App(options, express()); 15 | } 16 | 17 | /* 18 | * Simple helper function which returns a function 19 | * that pushes onto `steps` to ensure ordering 20 | */ 21 | function pushStep(steps, str) { 22 | return function (app, opts, next) { 23 | steps.push(str); 24 | next(); 25 | }; 26 | } 27 | 28 | describe('broadway', function () { 29 | it('should define the correct interface', function () { 30 | var app = new App(); 31 | assert.ok(app.preboot); 32 | assert.ok(app.mixin); 33 | assert.ok(app.start); 34 | assert.ok(app.close); 35 | assert.ok(app.config.get); 36 | assert.ok(app.perform); 37 | assert.ok(app._listen); 38 | }); 39 | 40 | describe('new App(options?, [base])', function () { 41 | it('should accept only options', function () { 42 | var app = new App({ http: 8080 }); 43 | assert.equal(app.given.http, 8080); 44 | }); 45 | 46 | it('should accept options and a base', function () { 47 | var base = { method: function () {} }, 48 | app = new App({ http: 8080 }, base); 49 | 50 | assert.equal(app.given.http, 8080); 51 | assert.equal(app.method, base.method); 52 | }); 53 | 54 | it('should define a config shim', function () { 55 | var app = new App({ http: 8080 }); 56 | assert.equal(app.config.get('http'), 8080); 57 | }); 58 | }); 59 | 60 | describe('.preboot(fn)', function () { 61 | it('should be called on an sync start', function (done) { 62 | var app = expressApp(8082); 63 | 64 | // Override this for testing purposes. 65 | app._listen = function (callback) { callback(); }; 66 | 67 | var count = 0; 68 | app.preboot(function (app, options, next) { 69 | count++; 70 | next(); 71 | }); 72 | 73 | app.start(function (err) { 74 | assert.ok(!err); 75 | assert.equal(count, 1); 76 | done(); 77 | }); 78 | }); 79 | 80 | it('blocks server listeners if a preboot fails', function (done) { 81 | var app = expressApp(8082); 82 | var listenWasCalled = false; 83 | app._listen = function (callback) { 84 | listenWasCalled = true; 85 | callback(); 86 | }; 87 | 88 | app.preboot(function (_, __, next) { 89 | next(new Error('Something failed')); 90 | }); 91 | 92 | app.start(function (err) { 93 | assert.ok(err); 94 | assert.equal(listenWasCalled, false); 95 | done(); 96 | }); 97 | }); 98 | }); 99 | 100 | describe('.start([options], callback', function () { 101 | it('should mixin any options provided', function (done) { 102 | var app = new App(); 103 | 104 | // Override this for testing purposes. 105 | app._listen = function (callback) { callback(); }; 106 | 107 | app.start({ http: 8080 }, function (err) { 108 | assert.ok(!err); 109 | assert.equal(app.given.http, 8080); 110 | done(); 111 | }); 112 | }); 113 | 114 | it('should still successfully start with configured options when config function is overwritten', function (done) { 115 | var app = expressApp(4444); 116 | app.config = { get: function () {} }; 117 | app.start(function (err) { 118 | assert.ok(!err); 119 | assert(app.given.http, 4444); 120 | app.close(done); 121 | }); 122 | }); 123 | 124 | it('should listen on any port provided', function (done) { 125 | var app = expressApp(8081); 126 | 127 | app.start(function (err) { 128 | assert.ok(!err); 129 | assert.ok(app.servers); 130 | assert.ok(app.servers.http); 131 | app.close(done); 132 | }); 133 | }); 134 | 135 | it('should listen on port 0', function (done) { 136 | var app = expressApp(0); 137 | 138 | app.start(function (err) { 139 | assert.ok(!err); 140 | assert.ok(app.servers); 141 | assert.ok(app.servers.http); 142 | assert.equal(typeof app.servers.http.address().port, 'number'); 143 | app.close(done); 144 | }); 145 | }); 146 | 147 | it('supports multiple servers of the same type', done => { 148 | const app = new App({ http: [8081, 8082] }, express()); 149 | 150 | app.start(err => { 151 | assert.ok(!err); 152 | assert.equal(app.servers.http.length, 2); 153 | app.close(done); 154 | }); 155 | }); 156 | 157 | it('should error if `app.handle` is not defined', function (done) { 158 | var app = new App({ http: 8082 }); 159 | app.start(function (err) { 160 | assert.equal(err.message, 'A handle function must be defined.'); 161 | done(); 162 | }); 163 | }); 164 | 165 | it('should error if a `.before("preboot")` errors', function (done) { 166 | var app = new App({ http: 8090 }); 167 | app.before('setup', function (app, options, callback) { 168 | return callback(new Error('Bad setup preboot')); 169 | }); 170 | 171 | app.start(function (err) { 172 | assert.ok(err); 173 | assert.equal(err.message, 'Bad setup preboot'); 174 | done(); 175 | }); 176 | }); 177 | 178 | it('{before}setup{after} THEN {before}start{after})', function (done) { 179 | var app = new App(); 180 | var steps = []; 181 | 182 | // Override this for testing purposes. 183 | app._listen = function (callback) { callback(); }; 184 | 185 | app.before('setup', pushStep(steps, 'before setup')); 186 | app.after('setup', pushStep(steps, 'after setup')); 187 | app.preboot(pushStep(steps, 'before start (preboot)')); 188 | app.before('start', pushStep(steps, 'before start (explicit)')); 189 | app.after('start', pushStep(steps, 'after start')); 190 | 191 | app.start(function (err) { 192 | assert.ok(!err); 193 | assert.deepEqual(steps, [ 194 | 'before setup', 195 | 'after setup', 196 | 'before start (preboot)', 197 | 'before start (explicit)', 198 | 'after start' 199 | ]); 200 | 201 | done(); 202 | }); 203 | }); 204 | }); 205 | 206 | describe('.close(callback)', function () { 207 | it('should close a single HTTP server', function (done) { 208 | var app = expressApp(8083); 209 | app.start(function (err) { 210 | assert.ok(!err); 211 | app.close(function (err) { 212 | assert.ok(!err); 213 | done(); 214 | }); 215 | }); 216 | }); 217 | 218 | it('should allow special hooks to be called before close if defined', function (done) { 219 | var app = expressApp(8088); 220 | var called = false; 221 | app.before('close', function (app, options, next) { 222 | called = true; 223 | setImmediate(next); 224 | }); 225 | app.start(function (err) { 226 | assert.ok(!err); 227 | app.close(function (err) { 228 | assert.ok(!err); 229 | assert.ok(called); 230 | done(); 231 | }); 232 | }); 233 | }); 234 | 235 | it('should close HTTP and HTTPS servers'); 236 | 237 | it('should respnd with an error if a server fails', function (done) { 238 | var apps = { 239 | first: expressApp(8084), 240 | second: expressApp(8084) 241 | }; 242 | 243 | apps.first.start(function (err) { 244 | assert.ok(!err); 245 | apps.second.start(function (err) { 246 | assert.ok(!err.https); 247 | assert.ok(err.http); 248 | assert.equal(err.http.code, 'EADDRINUSE'); 249 | 250 | apps.first.close(done); 251 | }); 252 | }); 253 | }); 254 | 255 | it('should respond with an error if no servers exist', function (done) { 256 | var app = expressApp(8085); 257 | 258 | // Override this for testing purposes. 259 | app._listen = function (callback) { callback(); }; 260 | 261 | app.start(function (err) { 262 | assert.ok(!err); 263 | app.close(function (err) { 264 | assert.equal(err.message, 'No servers to close.'); 265 | done(); 266 | }); 267 | }); 268 | }); 269 | }); 270 | }); 271 | --------------------------------------------------------------------------------