diff --git a/bin/_mocha b/bin/_mocha index 55529a7df8..cc2d6e9a8a 100755 --- a/bin/_mocha +++ b/bin/_mocha @@ -58,7 +58,7 @@ const exit = code => { // https://github.com/joyent/node/issues/6247 is just one bug example // https://github.com/visionmedia/mocha/issues/333 has a good discussion const done = () => { - if (!(draining--)) { + if (!draining--) { process.exit(clampedCode); } }; @@ -150,9 +150,16 @@ const images = { // options program - .version(JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8')).version) + .version( + JSON.parse( + fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8') + ).version + ) .usage('[debug] [options] [files]') - .option('-A, --async-only', 'force all tests to take a callback (async) or return a promise') + .option( + '-A, --async-only', + 'force all tests to take a callback (async) or return a promise' + ) .option('-c, --colors', 'force enabling of colors') .option('-C, --no-colors', 'force disabling of colors') .option('-G, --growl', 'enable growl notification support') @@ -168,24 +175,53 @@ program .option('-r, --require ', 'require the given module') .option('-s, --slow ', '"slow" test threshold in milliseconds [75]') .option('-t, --timeout ', 'set test-case timeout in milliseconds [2000]') - .option('-u, --ui ', `specify user-interface (${interfaceNames.join('|')})`, 'bdd') + .option( + '-u, --ui ', + `specify user-interface (${interfaceNames.join('|')})`, + 'bdd' + ) .option('-w, --watch', 'watch files for changes') .option('--check-leaks', 'check for global variable leaks') .option('--full-trace', 'display the full stack trace') - .option('--compilers :,...', 'use the given module(s) to compile files', list, []) + .option( + '--compilers :,...', + 'use the given module(s) to compile files', + list, + [] + ) .option('--debug-brk', "enable node's debugger breaking on the first line") - .option('--globals ', 'allow the given comma-delimited global [names]', list, []) + .option( + '--globals ', + 'allow the given comma-delimited global [names]', + list, + [] + ) .option('--es_staging', 'enable all staged features') - .option('--harmony<_classes,_generators,...>', 'all node --harmony* flags are available') - .option('--preserve-symlinks', 'Instructs the module loader to preserve symbolic links when resolving and caching modules') + .option( + '--harmony<_classes,_generators,...>', + 'all node --harmony* flags are available' + ) + .option( + '--preserve-symlinks', + 'Instructs the module loader to preserve symbolic links when resolving and caching modules' + ) .option('--icu-data-dir', 'include ICU data') - .option('--inline-diffs', 'display actual/expected differences inline within each string') + .option( + '--inline-diffs', + 'display actual/expected differences inline within each string' + ) .option('--no-diff', 'do not show a diff on failure') .option('--inspect', 'activate devtools in chrome') - .option('--inspect-brk', 'activate devtools in chrome and break on the first line') + .option( + '--inspect-brk', + 'activate devtools in chrome and break on the first line' + ) .option('--interfaces', 'display available interfaces') .option('--no-deprecation', 'silence deprecation warnings') - .option('--exit', 'force shutdown of the event loop after test run: mocha will call process.exit') + .option( + '--exit', + 'force shutdown of the event loop after test run: mocha will call process.exit' + ) .option('--no-timeouts', 'disables timeouts, given implicitly with --debug') .option('--no-warnings', 'silence all node process warnings') .option('--opts ', 'specify opts path', 'test/mocha.opts') @@ -195,18 +231,37 @@ program .option('--log-timer-events', 'Time events including external callbacks') .option('--recursive', 'include sub directories') .option('--reporters', 'display available reporters') - .option('--retries ', 'set numbers of time to retry a failed test case') - .option('--throw-deprecation', 'throw an exception anytime a deprecated function is used') + .option( + '--retries ', + 'set numbers of time to retry a failed test case' + ) + .option( + '--throw-deprecation', + 'throw an exception anytime a deprecated function is used' + ) .option('--trace', 'trace function calls') .option('--trace-deprecation', 'show stack traces on deprecations') .option('--trace-warnings', 'show stack traces on node process warnings') .option('--use_strict', 'enforce strict mode') - .option('--watch-extensions ,...', 'additional extensions to monitor with --watch', list, []) + .option( + '--watch-extensions ,...', + 'additional extensions to monitor with --watch', + list, + [] + ) .option('--delay', 'wait for async suite definition') .option('--allow-uncaught', 'enable uncaught errors to propagate') .option('--forbid-only', 'causes test marked with only to fail the suite') - .option('--forbid-pending', 'causes pending tests and test marked with skip to fail the suite') - .option('--file ', 'include a file to be ran during the suite', collect, []) + .option( + '--forbid-pending', + 'causes pending tests and test marked with skip to fail the suite' + ) + .option( + '--file ', + 'include a file to be ran during the suite', + collect, + [] + ) .option('--exclude ', 'a file or glob pattern to ignore', collect, []); program._name = 'mocha'; @@ -447,7 +502,7 @@ if (program.forbidPending) mocha.forbidPending(); if (program.compilers.length > 0) { require('util').deprecate(() => {}, - '"--compilers" will be removed in a future version of Mocha; see https://git.io/vdcSr for more info')(); + '"--compilers" will be removed in a future version of Mocha; see https://git.io/vdcSr for more info')(); } const extensions = ['js']; program.compilers.forEach(c => { @@ -489,7 +544,9 @@ args.forEach(arg => { newFiles = utils.lookupFiles(arg, extensions, program.recursive); } catch (err) { if (err.message.indexOf('cannot resolve path') === 0) { - console.error(`Warning: Could not find any test files matching pattern: ${arg}`); + console.error( + `Warning: Could not find any test files matching pattern: ${arg}` + ); return; } @@ -500,7 +557,9 @@ args.forEach(arg => { if (typeof newFiles === 'string') { newFiles = [newFiles]; } - newFiles = newFiles.filter(fileName => program.exclude.every(pattern => !minimatch(fileName, pattern))); + newFiles = newFiles.filter(fileName => + program.exclude.every(pattern => !minimatch(fileName, pattern)) + ); } files = files.concat(newFiles); @@ -538,7 +597,7 @@ if (program.watch) { process.exit(130); }); - const watchFiles = utils.files(cwd, [ 'js' ].concat(program.watchExtensions)); + const watchFiles = utils.files(cwd, ['js'].concat(program.watchExtensions)); let runAgain = false; loadAndRun = () => { @@ -585,7 +644,7 @@ if (program.watch) { } }); } else { -// load + // load mocha.files = files; runner = mocha.run(program.exit ? exit : exitLater); diff --git a/bin/options.js b/bin/options.js index ac835bf833..41f7222a62 100644 --- a/bin/options.js +++ b/bin/options.js @@ -16,17 +16,22 @@ module.exports = getOptions; * Get options. */ -function getOptions () { - if (process.argv.length === 3 && (process.argv[2] === '-h' || process.argv[2] === '--help')) { +function getOptions() { + if ( + process.argv.length === 3 && + (process.argv[2] === '-h' || process.argv[2] === '--help') + ) { return; } - const optsPath = process.argv.indexOf('--opts') === -1 - ? 'test/mocha.opts' - : process.argv[process.argv.indexOf('--opts') + 1]; + const optsPath = + process.argv.indexOf('--opts') === -1 + ? 'test/mocha.opts' + : process.argv[process.argv.indexOf('--opts') + 1]; try { - const opts = fs.readFileSync(optsPath, 'utf8') + const opts = fs + .readFileSync(optsPath, 'utf8') .replace(/\\\s/g, '%20') .split(/\s/) .filter(Boolean) diff --git a/browser-entry.js b/browser-entry.js index 2d1aeecea5..ad422e6c5b 100644 --- a/browser-entry.js +++ b/browser-entry.js @@ -17,7 +17,7 @@ var Mocha = require('./lib/mocha'); * @return {undefined} */ -var mocha = new Mocha({ reporter: 'html' }); +var mocha = new Mocha({reporter: 'html'}); /** * Save timer references to avoid Sinon interfering (see GH-237). @@ -38,12 +38,12 @@ var originalOnerrorHandler = global.onerror; * Revert to original onerror handler if previously defined. */ -process.removeListener = function (e, fn) { +process.removeListener = function(e, fn) { if (e === 'uncaughtException') { if (originalOnerrorHandler) { global.onerror = originalOnerrorHandler; } else { - global.onerror = function () {}; + global.onerror = function() {}; } var i = uncaughtExceptionHandlers.indexOf(fn); if (i !== -1) { @@ -56,9 +56,9 @@ process.removeListener = function (e, fn) { * Implements uncaughtException listener. */ -process.on = function (e, fn) { +process.on = function(e, fn) { if (e === 'uncaughtException') { - global.onerror = function (err, url, line) { + global.onerror = function(err, url, line) { fn(new Error(err + ' (' + url + ':' + line + ')')); return !mocha.allowUncaught; }; @@ -74,9 +74,9 @@ mocha.suite.removeAllListeners('pre-require'); var immediateQueue = []; var immediateTimeout; -function timeslice () { +function timeslice() { var immediateStart = new Date().getTime(); - while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) { + while (immediateQueue.length && new Date().getTime() - immediateStart < 100) { immediateQueue.shift()(); } if (immediateQueue.length) { @@ -90,7 +90,7 @@ function timeslice () { * High-performance override of Runner.immediately. */ -Mocha.Runner.immediately = function (callback) { +Mocha.Runner.immediately = function(callback) { immediateQueue.push(callback); if (!immediateTimeout) { immediateTimeout = setTimeout(timeslice, 0); @@ -102,8 +102,8 @@ Mocha.Runner.immediately = function (callback) { * This is useful when running tests in a browser because window.onerror will * only receive the 'message' attribute of the Error. */ -mocha.throwError = function (err) { - uncaughtExceptionHandlers.forEach(function (fn) { +mocha.throwError = function(err) { + uncaughtExceptionHandlers.forEach(function(fn) { fn(err); }); throw err; @@ -114,7 +114,7 @@ mocha.throwError = function (err) { * Normally this would happen in Mocha.prototype.loadFiles. */ -mocha.ui = function (ui) { +mocha.ui = function(ui) { Mocha.prototype.ui.call(this, ui); this.suite.emit('pre-require', global, null, this); return this; @@ -124,9 +124,9 @@ mocha.ui = function (ui) { * Setup mocha with the given setting options. */ -mocha.setup = function (opts) { +mocha.setup = function(opts) { if (typeof opts === 'string') { - opts = { ui: opts }; + opts = {ui: opts}; } for (var opt in opts) { if (opts.hasOwnProperty(opt)) { @@ -140,7 +140,7 @@ mocha.setup = function (opts) { * Run mocha, returning the Runner. */ -mocha.run = function (fn) { +mocha.run = function(fn) { var options = mocha.options; mocha.globals('location'); @@ -155,10 +155,14 @@ mocha.run = function (fn) { mocha.invert(); } - return Mocha.prototype.run.call(mocha, function (err) { + return Mocha.prototype.run.call(mocha, function(err) { // The DOM Document is not available in Web Workers. var document = global.document; - if (document && document.getElementById('mocha') && options.noHighlighting !== true) { + if ( + document && + document.getElementById('mocha') && + options.noHighlighting !== true + ) { Mocha.utils.highlightTags('code'); } if (fn) { diff --git a/karma.conf.js b/karma.conf.js index 1db52054f1..1ccbb2bbbf 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -16,11 +16,7 @@ const browserPlatformPairs = { module.exports = config => { let bundleDirpath; const cfg = { - frameworks: [ - 'browserify', - 'expect', - 'mocha' - ], + frameworks: ['browserify', 'expect', 'mocha'], files: [ // we use the BDD interface for all of the tests that // aren't interface-specific. @@ -32,8 +28,9 @@ module.exports = config => { }, browserify: { debug: true, - configure: function configure (b) { - b.ignore('glob') + configure: function configure(b) { + b + .ignore('glob') .ignore('fs') .ignore('path') .ignore('supports-color') @@ -43,8 +40,10 @@ module.exports = config => { } if (bundleDirpath) { // write bundle to directory for debugging - fs.writeFileSync(path.join(bundleDirpath, - `mocha.${Date.now()}.js`), content); + fs.writeFileSync( + path.join(bundleDirpath, `mocha.${Date.now()}.js`), + content + ); } }); } @@ -155,7 +154,7 @@ module.exports = config => { config.set(cfg); }; -function addSauceTests (cfg) { +function addSauceTests(cfg) { cfg.reporters.push('saucelabs'); const browsers = Object.keys(browserPlatformPairs); cfg.browsers = cfg.browsers.concat(browsers); diff --git a/lib/browser/progress.js b/lib/browser/progress.js index 2b23656b99..0dcb341898 100644 --- a/lib/browser/progress.js +++ b/lib/browser/progress.js @@ -9,7 +9,7 @@ module.exports = Progress; /** * Initialize a new `Progress` indicator. */ -function Progress () { +function Progress() { this.percent = 0; this.size(0); this.fontSize(11); @@ -23,7 +23,7 @@ function Progress () { * @param {number} size * @return {Progress} Progress instance. */ -Progress.prototype.size = function (size) { +Progress.prototype.size = function(size) { this._size = size; return this; }; @@ -35,7 +35,7 @@ Progress.prototype.size = function (size) { * @param {string} text * @return {Progress} Progress instance. */ -Progress.prototype.text = function (text) { +Progress.prototype.text = function(text) { this._text = text; return this; }; @@ -47,7 +47,7 @@ Progress.prototype.text = function (text) { * @param {number} size * @return {Progress} Progress instance. */ -Progress.prototype.fontSize = function (size) { +Progress.prototype.fontSize = function(size) { this._fontSize = size; return this; }; @@ -58,7 +58,7 @@ Progress.prototype.fontSize = function (size) { * @param {string} family * @return {Progress} Progress instance. */ -Progress.prototype.font = function (family) { +Progress.prototype.font = function(family) { this._font = family; return this; }; @@ -69,7 +69,7 @@ Progress.prototype.font = function (family) { * @param {number} n * @return {Progress} Progress instance. */ -Progress.prototype.update = function (n) { +Progress.prototype.update = function(n) { this.percent = n; return this; }; @@ -80,7 +80,7 @@ Progress.prototype.update = function (n) { * @param {CanvasRenderingContext2d} ctx * @return {Progress} Progress instance. */ -Progress.prototype.draw = function (ctx) { +Progress.prototype.draw = function(ctx) { try { var percent = Math.min(this.percent, 100); var size = this._size; diff --git a/lib/browser/tty.js b/lib/browser/tty.js index c77f7e99a6..e903365023 100644 --- a/lib/browser/tty.js +++ b/lib/browser/tty.js @@ -1,10 +1,10 @@ 'use strict'; -exports.isatty = function isatty () { +exports.isatty = function isatty() { return true; }; -exports.getWindowSize = function getWindowSize () { +exports.getWindowSize = function getWindowSize() { if ('innerHeight' in global) { return [global.innerHeight, global.innerWidth]; } diff --git a/lib/context.js b/lib/context.js index 342e5cfcdc..812162b137 100644 --- a/lib/context.js +++ b/lib/context.js @@ -13,7 +13,7 @@ module.exports = Context; * * @api private */ -function Context () {} +function Context() {} /** * Set or get the context `Runnable` to `runnable`. @@ -22,7 +22,7 @@ function Context () {} * @param {Runnable} runnable * @return {Context} context */ -Context.prototype.runnable = function (runnable) { +Context.prototype.runnable = function(runnable) { if (!arguments.length) { return this._runnable; } @@ -37,7 +37,7 @@ Context.prototype.runnable = function (runnable) { * @param {number} ms * @return {Context} self */ -Context.prototype.timeout = function (ms) { +Context.prototype.timeout = function(ms) { if (!arguments.length) { return this.runnable().timeout(); } @@ -52,7 +52,7 @@ Context.prototype.timeout = function (ms) { * @param {boolean} enabled * @return {Context} self */ -Context.prototype.enableTimeouts = function (enabled) { +Context.prototype.enableTimeouts = function(enabled) { if (!arguments.length) { return this.runnable().enableTimeouts(); } @@ -67,7 +67,7 @@ Context.prototype.enableTimeouts = function (enabled) { * @param {number} ms * @return {Context} self */ -Context.prototype.slow = function (ms) { +Context.prototype.slow = function(ms) { if (!arguments.length) { return this.runnable().slow(); } @@ -81,7 +81,7 @@ Context.prototype.slow = function (ms) { * @api private * @throws Pending */ -Context.prototype.skip = function () { +Context.prototype.skip = function() { this.runnable().skip(); }; @@ -92,7 +92,7 @@ Context.prototype.skip = function () { * @param {number} n * @return {Context} self */ -Context.prototype.retries = function (n) { +Context.prototype.retries = function(n) { if (!arguments.length) { return this.runnable().retries(); } diff --git a/lib/hook.js b/lib/hook.js index 6512d0ef0a..71440d23d0 100644 --- a/lib/hook.js +++ b/lib/hook.js @@ -17,7 +17,7 @@ module.exports = Hook; * @param {String} title * @param {Function} fn */ -function Hook (title, fn) { +function Hook(title, fn) { Runnable.call(this, title, fn); this.type = 'hook'; } @@ -35,7 +35,7 @@ inherits(Hook, Runnable); * @param {Error} err * @return {Error} */ -Hook.prototype.error = function (err) { +Hook.prototype.error = function(err) { if (!arguments.length) { err = this._error; this._error = null; diff --git a/lib/interfaces/bdd.js b/lib/interfaces/bdd.js index 17dae8266e..730e67e0e8 100644 --- a/lib/interfaces/bdd.js +++ b/lib/interfaces/bdd.js @@ -19,10 +19,10 @@ var Test = require('../test'); * * @param {Suite} suite Root suite. */ -module.exports = function bddInterface (suite) { +module.exports = function bddInterface(suite) { var suites = [suite]; - suite.on('pre-require', function (context, file, mocha) { + suite.on('pre-require', function(context, file, mocha) { var common = require('./common')(suites, context, mocha); context.before = common.before; @@ -36,7 +36,7 @@ module.exports = function bddInterface (suite) { * and/or tests. */ - context.describe = context.context = function (title, fn) { + context.describe = context.context = function(title, fn) { return common.suite.create({ title: title, file: file, @@ -48,7 +48,10 @@ module.exports = function bddInterface (suite) { * Pending describe. */ - context.xdescribe = context.xcontext = context.describe.skip = function (title, fn) { + context.xdescribe = context.xcontext = context.describe.skip = function( + title, + fn + ) { return common.suite.skip({ title: title, file: file, @@ -60,7 +63,7 @@ module.exports = function bddInterface (suite) { * Exclusive suite. */ - context.describe.only = function (title, fn) { + context.describe.only = function(title, fn) { return common.suite.only({ title: title, file: file, @@ -74,7 +77,7 @@ module.exports = function bddInterface (suite) { * acting as a thunk. */ - context.it = context.specify = function (title, fn) { + context.it = context.specify = function(title, fn) { var suite = suites[0]; if (suite.isPending()) { fn = null; @@ -89,7 +92,7 @@ module.exports = function bddInterface (suite) { * Exclusive test-case. */ - context.it.only = function (title, fn) { + context.it.only = function(title, fn) { return common.test.only(mocha, context.it(title, fn)); }; @@ -97,14 +100,14 @@ module.exports = function bddInterface (suite) { * Pending test case. */ - context.xit = context.xspecify = context.it.skip = function (title) { + context.xit = context.xspecify = context.it.skip = function(title) { return context.it(title); }; /** * Number of attempts to retry. */ - context.it.retries = function (n) { + context.it.retries = function(n) { context.retries(n); }; }); diff --git a/lib/interfaces/common.js b/lib/interfaces/common.js index f0cdd4eb1a..4ca340a608 100644 --- a/lib/interfaces/common.js +++ b/lib/interfaces/common.js @@ -10,7 +10,7 @@ var Suite = require('../suite'); * @param {Mocha} mocha * @return {Object} An object containing common functions. */ -module.exports = function (suites, context, mocha) { +module.exports = function(suites, context, mocha) { return { /** * This is only present if flag --delay is passed into Mocha. It triggers @@ -19,8 +19,8 @@ module.exports = function (suites, context, mocha) { * @param {Suite} suite The root suite. * @return {Function} A function which runs the root suite */ - runWithSuite: function runWithSuite (suite) { - return function run () { + runWithSuite: function runWithSuite(suite) { + return function run() { suite.run(); }; }, @@ -31,7 +31,7 @@ module.exports = function (suites, context, mocha) { * @param {string} name * @param {Function} fn */ - before: function (name, fn) { + before: function(name, fn) { suites[0].beforeAll(name, fn); }, @@ -41,7 +41,7 @@ module.exports = function (suites, context, mocha) { * @param {string} name * @param {Function} fn */ - after: function (name, fn) { + after: function(name, fn) { suites[0].afterAll(name, fn); }, @@ -51,7 +51,7 @@ module.exports = function (suites, context, mocha) { * @param {string} name * @param {Function} fn */ - beforeEach: function (name, fn) { + beforeEach: function(name, fn) { suites[0].beforeEach(name, fn); }, @@ -61,7 +61,7 @@ module.exports = function (suites, context, mocha) { * @param {string} name * @param {Function} fn */ - afterEach: function (name, fn) { + afterEach: function(name, fn) { suites[0].afterEach(name, fn); }, @@ -73,7 +73,7 @@ module.exports = function (suites, context, mocha) { * @param {Object} opts * @returns {Suite} */ - only: function only (opts) { + only: function only(opts) { opts.isOnly = true; return this.create(opts); }, @@ -85,7 +85,7 @@ module.exports = function (suites, context, mocha) { * @param {Object} opts * @returns {Suite} */ - skip: function skip (opts) { + skip: function skip(opts) { opts.pending = true; return this.create(opts); }, @@ -100,7 +100,7 @@ module.exports = function (suites, context, mocha) { * @param {boolean} [opts.isOnly] Is Suite exclusive? * @returns {Suite} */ - create: function create (opts) { + create: function create(opts) { var suite = Suite.create(suites[0], opts.title); suite.pending = Boolean(opts.pending); suite.file = opts.file; @@ -112,7 +112,11 @@ module.exports = function (suites, context, mocha) { opts.fn.call(suite); suites.shift(); } else if (typeof opts.fn === 'undefined' && !suite.pending) { - throw new Error('Suite "' + suite.fullTitle() + '" was defined but no callback was supplied. Supply a callback or explicitly skip the suite.'); + throw new Error( + 'Suite "' + + suite.fullTitle() + + '" was defined but no callback was supplied. Supply a callback or explicitly skip the suite.' + ); } else if (!opts.fn && suite.pending) { suites.shift(); } @@ -122,7 +126,6 @@ module.exports = function (suites, context, mocha) { }, test: { - /** * Exclusive test-case. * @@ -130,7 +133,7 @@ module.exports = function (suites, context, mocha) { * @param {Function} test * @returns {*} */ - only: function (mocha, test) { + only: function(mocha, test) { test.parent._onlyTests = test.parent._onlyTests.concat(test); return test; }, @@ -140,7 +143,7 @@ module.exports = function (suites, context, mocha) { * * @param {string} title */ - skip: function (title) { + skip: function(title) { context.test(title); }, @@ -149,7 +152,7 @@ module.exports = function (suites, context, mocha) { * * @param {number} n */ - retries: function (n) { + retries: function(n) { context.retries(n); } } diff --git a/lib/interfaces/exports.js b/lib/interfaces/exports.js index 9de4763aa2..1a5c5bbc2c 100644 --- a/lib/interfaces/exports.js +++ b/lib/interfaces/exports.js @@ -19,12 +19,12 @@ var Test = require('../test'); * * @param {Suite} suite Root suite. */ -module.exports = function (suite) { +module.exports = function(suite) { var suites = [suite]; suite.on('require', visit); - function visit (obj, file) { + function visit(obj, file) { var suite; for (var key in obj) { if (typeof obj[key] === 'function') { diff --git a/lib/interfaces/qunit.js b/lib/interfaces/qunit.js index 96d9788092..ad3c900c2c 100644 --- a/lib/interfaces/qunit.js +++ b/lib/interfaces/qunit.js @@ -27,10 +27,10 @@ var Test = require('../test'); * * @param {Suite} suite Root suite. */ -module.exports = function qUnitInterface (suite) { +module.exports = function qUnitInterface(suite) { var suites = [suite]; - suite.on('pre-require', function (context, file, mocha) { + suite.on('pre-require', function(context, file, mocha) { var common = require('./common')(suites, context, mocha); context.before = common.before; @@ -42,7 +42,7 @@ module.exports = function qUnitInterface (suite) { * Describe a "suite" with the given `title`. */ - context.suite = function (title) { + context.suite = function(title) { if (suites.length > 1) { suites.shift(); } @@ -57,7 +57,7 @@ module.exports = function qUnitInterface (suite) { * Exclusive Suite. */ - context.suite.only = function (title) { + context.suite.only = function(title) { if (suites.length > 1) { suites.shift(); } @@ -74,7 +74,7 @@ module.exports = function qUnitInterface (suite) { * acting as a thunk. */ - context.test = function (title, fn) { + context.test = function(title, fn) { var test = new Test(title, fn); test.file = file; suites[0].addTest(test); @@ -85,7 +85,7 @@ module.exports = function qUnitInterface (suite) { * Exclusive test-case. */ - context.test.only = function (title, fn) { + context.test.only = function(title, fn) { return common.test.only(mocha, context.test(title, fn)); }; diff --git a/lib/interfaces/tdd.js b/lib/interfaces/tdd.js index 1d238e9eab..1e72cf7ac3 100644 --- a/lib/interfaces/tdd.js +++ b/lib/interfaces/tdd.js @@ -27,10 +27,10 @@ var Test = require('../test'); * * @param {Suite} suite Root suite. */ -module.exports = function (suite) { +module.exports = function(suite) { var suites = [suite]; - suite.on('pre-require', function (context, file, mocha) { + suite.on('pre-require', function(context, file, mocha) { var common = require('./common')(suites, context, mocha); context.setup = common.beforeEach; @@ -43,7 +43,7 @@ module.exports = function (suite) { * Describe a "suite" with the given `title` and callback `fn` containing * nested suites and/or tests. */ - context.suite = function (title, fn) { + context.suite = function(title, fn) { return common.suite.create({ title: title, file: file, @@ -54,7 +54,7 @@ module.exports = function (suite) { /** * Pending suite. */ - context.suite.skip = function (title, fn) { + context.suite.skip = function(title, fn) { return common.suite.skip({ title: title, file: file, @@ -65,7 +65,7 @@ module.exports = function (suite) { /** * Exclusive test-case. */ - context.suite.only = function (title, fn) { + context.suite.only = function(title, fn) { return common.suite.only({ title: title, file: file, @@ -77,7 +77,7 @@ module.exports = function (suite) { * Describe a specification or test-case with the given `title` and * callback `fn` acting as a thunk. */ - context.test = function (title, fn) { + context.test = function(title, fn) { var suite = suites[0]; if (suite.isPending()) { fn = null; @@ -92,7 +92,7 @@ module.exports = function (suite) { * Exclusive test-case. */ - context.test.only = function (title, fn) { + context.test.only = function(title, fn) { return common.test.only(mocha, context.test(title, fn)); }; diff --git a/lib/mocha.js b/lib/mocha.js index 8c676dbbf9..673dbec394 100644 --- a/lib/mocha.js +++ b/lib/mocha.js @@ -57,7 +57,7 @@ exports.Test = require('./test'); * @param {string} name * @return {string} */ -function image (name) { +function image(name) { return path.join(__dirname, '..', 'assets', 'growl', name + '.png'); } @@ -80,7 +80,7 @@ function image (name) { * @class Mocha * @param {Object} options */ -function Mocha (options) { +function Mocha(options) { options = options || {}; this.files = []; this.options = options; @@ -116,7 +116,7 @@ function Mocha (options) { * @api public * @param {boolean} [bail] */ -Mocha.prototype.bail = function (bail) { +Mocha.prototype.bail = function(bail) { if (!arguments.length) { bail = true; } @@ -131,7 +131,7 @@ Mocha.prototype.bail = function (bail) { * @api public * @param {string} file */ -Mocha.prototype.addFile = function (file) { +Mocha.prototype.addFile = function(file) { this.files.push(file); return this; }; @@ -146,7 +146,7 @@ Mocha.prototype.addFile = function (file) { * @param {string|Function} reporter name or constructor * @param {Object} reporterOptions optional options */ -Mocha.prototype.reporter = function (reporter, reporterOptions) { +Mocha.prototype.reporter = function(reporter, reporterOptions) { if (typeof reporter === 'function') { this._reporter = reporter; } else { @@ -166,18 +166,28 @@ Mocha.prototype.reporter = function (reporter, reporterOptions) { try { _reporter = require(path.resolve(process.cwd(), reporter)); } catch (_err) { - err.message.indexOf('Cannot find module') !== -1 ? console.warn('"' + reporter + '" reporter not found') - : console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack); + err.message.indexOf('Cannot find module') !== -1 + ? console.warn('"' + reporter + '" reporter not found') + : console.warn( + '"' + + reporter + + '" reporter blew up with error:\n' + + err.stack + ); } } else { - console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack); + console.warn( + '"' + reporter + '" reporter blew up with error:\n' + err.stack + ); } } } if (!_reporter && reporter === 'teamcity') { - console.warn('The Teamcity reporter was moved to a package named ' + - 'mocha-teamcity-reporter ' + - '(https://npmjs.org/package/mocha-teamcity-reporter).'); + console.warn( + 'The Teamcity reporter was moved to a package named ' + + 'mocha-teamcity-reporter ' + + '(https://npmjs.org/package/mocha-teamcity-reporter).' + ); } if (!_reporter) { throw new Error('invalid reporter "' + reporter + '"'); @@ -194,7 +204,7 @@ Mocha.prototype.reporter = function (reporter, reporterOptions) { * @api public * @param {string} bdd */ -Mocha.prototype.ui = function (name) { +Mocha.prototype.ui = function(name) { name = name || 'bdd'; this._ui = exports.interfaces[name]; if (!this._ui) { @@ -206,7 +216,7 @@ Mocha.prototype.ui = function (name) { } this._ui = this._ui(this.suite); - this.suite.on('pre-require', function (context) { + this.suite.on('pre-require', function(context) { exports.afterEach = context.afterEach || context.teardown; exports.after = context.after || context.suiteTeardown; exports.beforeEach = context.beforeEach || context.setup; @@ -231,10 +241,10 @@ Mocha.prototype.ui = function (name) { * * @api private */ -Mocha.prototype.loadFiles = function (fn) { +Mocha.prototype.loadFiles = function(fn) { var self = this; var suite = this.suite; - this.files.forEach(function (file) { + this.files.forEach(function(file) { file = path.resolve(file); suite.emit('pre-require', global, file, self); suite.emit('require', require(file), file, self); @@ -248,14 +258,14 @@ Mocha.prototype.loadFiles = function (fn) { * * @api private */ -Mocha.prototype._growl = function (runner, reporter) { +Mocha.prototype._growl = function(runner, reporter) { var notify = require('growl'); - runner.on('end', function () { + runner.on('end', function() { var stats = reporter.stats; if (stats.failures) { var msg = stats.failures + ' of ' + runner.total + ' tests failed'; - notify(msg, { name: 'mocha', title: 'Failed', image: image('error') }); + notify(msg, {name: 'mocha', title: 'Failed', image: image('error')}); } else { notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { name: 'mocha', @@ -274,7 +284,7 @@ Mocha.prototype._growl = function (runner, reporter) { * @param str * @returns {Mocha} */ -Mocha.prototype.fgrep = function (str) { +Mocha.prototype.fgrep = function(str) { return this.grep(new RegExp(escapeRe(str))); }; @@ -288,7 +298,7 @@ Mocha.prototype.fgrep = function (str) { * @param {RegExp|string} re * @return {Mocha} */ -Mocha.prototype.grep = function (re) { +Mocha.prototype.grep = function(re) { if (utils.isString(re)) { // extract args if it's regex-like, i.e: [string, pattern, flag] var arg = re.match(/^\/(.*)\/(g|i|)$|.*/); @@ -305,7 +315,7 @@ Mocha.prototype.grep = function (re) { * @return {Mocha} * @api public */ -Mocha.prototype.invert = function () { +Mocha.prototype.invert = function() { this.options.invert = true; return this; }; @@ -320,7 +330,7 @@ Mocha.prototype.invert = function () { * @param {boolean} ignore * @return {Mocha} */ -Mocha.prototype.ignoreLeaks = function (ignore) { +Mocha.prototype.ignoreLeaks = function(ignore) { this.options.ignoreLeaks = Boolean(ignore); return this; }; @@ -332,7 +342,7 @@ Mocha.prototype.ignoreLeaks = function (ignore) { * @api public * @public */ -Mocha.prototype.checkLeaks = function () { +Mocha.prototype.checkLeaks = function() { this.options.ignoreLeaks = false; return this; }; @@ -344,7 +354,7 @@ Mocha.prototype.checkLeaks = function () { * @api public * @public */ -Mocha.prototype.fullTrace = function () { +Mocha.prototype.fullTrace = function() { this.options.fullStackTrace = true; return this; }; @@ -356,7 +366,7 @@ Mocha.prototype.fullTrace = function () { * @api public * @public */ -Mocha.prototype.growl = function () { +Mocha.prototype.growl = function() { this.options.growl = true; return this; }; @@ -371,7 +381,7 @@ Mocha.prototype.growl = function () { * @param {Array|string} globals * @return {Mocha} */ -Mocha.prototype.globals = function (globals) { +Mocha.prototype.globals = function(globals) { this.options.globals = (this.options.globals || []).concat(globals); return this; }; @@ -386,7 +396,7 @@ Mocha.prototype.globals = function (globals) { * @param {boolean} colors * @return {Mocha} */ -Mocha.prototype.useColors = function (colors) { +Mocha.prototype.useColors = function(colors) { if (colors !== undefined) { this.options.useColors = colors; } @@ -403,7 +413,7 @@ Mocha.prototype.useColors = function (colors) { * @param {boolean} inlineDiffs * @return {Mocha} */ -Mocha.prototype.useInlineDiffs = function (inlineDiffs) { +Mocha.prototype.useInlineDiffs = function(inlineDiffs) { this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs; return this; }; @@ -418,7 +428,7 @@ Mocha.prototype.useInlineDiffs = function (inlineDiffs) { * @param {boolean} hideDiff * @return {Mocha} */ -Mocha.prototype.hideDiff = function (hideDiff) { +Mocha.prototype.hideDiff = function(hideDiff) { this.options.hideDiff = hideDiff !== undefined && hideDiff; return this; }; @@ -433,7 +443,7 @@ Mocha.prototype.hideDiff = function (hideDiff) { * @param {number} timeout * @return {Mocha} */ -Mocha.prototype.timeout = function (timeout) { +Mocha.prototype.timeout = function(timeout) { this.suite.timeout(timeout); return this; }; @@ -446,7 +456,7 @@ Mocha.prototype.timeout = function (timeout) { * @api public * @public */ -Mocha.prototype.retries = function (n) { +Mocha.prototype.retries = function(n) { this.suite.retries(n); return this; }; @@ -461,7 +471,7 @@ Mocha.prototype.retries = function (n) { * @param {number} slow * @return {Mocha} */ -Mocha.prototype.slow = function (slow) { +Mocha.prototype.slow = function(slow) { this.suite.slow(slow); return this; }; @@ -476,8 +486,10 @@ Mocha.prototype.slow = function (slow) { * @param {boolean} enabled * @return {Mocha} */ -Mocha.prototype.enableTimeouts = function (enabled) { - this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); +Mocha.prototype.enableTimeouts = function(enabled) { + this.suite.enableTimeouts( + arguments.length && enabled !== undefined ? enabled : true + ); return this; }; @@ -488,7 +500,7 @@ Mocha.prototype.enableTimeouts = function (enabled) { * @api public * @public */ -Mocha.prototype.asyncOnly = function () { +Mocha.prototype.asyncOnly = function() { this.options.asyncOnly = true; return this; }; @@ -499,7 +511,7 @@ Mocha.prototype.asyncOnly = function () { * @api public * @public */ -Mocha.prototype.noHighlighting = function () { +Mocha.prototype.noHighlighting = function() { this.options.noHighlighting = true; return this; }; @@ -511,7 +523,7 @@ Mocha.prototype.noHighlighting = function () { * @api public * @public */ -Mocha.prototype.allowUncaught = function () { +Mocha.prototype.allowUncaught = function() { this.options.allowUncaught = true; return this; }; @@ -520,7 +532,7 @@ Mocha.prototype.allowUncaught = function () { * Delay root suite execution. * @returns {Mocha} */ -Mocha.prototype.delay = function delay () { +Mocha.prototype.delay = function delay() { this.options.delay = true; return this; }; @@ -529,7 +541,7 @@ Mocha.prototype.delay = function delay () { * Tests marked only fail the suite * @returns {Mocha} */ -Mocha.prototype.forbidOnly = function () { +Mocha.prototype.forbidOnly = function() { this.options.forbidOnly = true; return this; }; @@ -538,7 +550,7 @@ Mocha.prototype.forbidOnly = function () { * Pending tests and tests marked skip fail the suite * @returns {Mocha} */ -Mocha.prototype.forbidPending = function () { +Mocha.prototype.forbidPending = function() { this.options.forbidPending = true; return this; }; @@ -559,7 +571,7 @@ Mocha.prototype.forbidPending = function () { * @param {Function} fn * @return {Runner} */ -Mocha.prototype.run = function (fn) { +Mocha.prototype.run = function(fn) { if (this.files.length) { this.loadFiles(); } @@ -589,7 +601,7 @@ Mocha.prototype.run = function (fn) { exports.reporters.Base.inlineDiffs = options.useInlineDiffs; exports.reporters.Base.hideDiff = options.hideDiff; - function done (failures) { + function done(failures) { if (reporter.done) { reporter.done(failures, fn); } else { diff --git a/lib/ms.js b/lib/ms.js index c906b15f9b..91c55afaa4 100644 --- a/lib/ms.js +++ b/lib/ms.js @@ -21,7 +21,7 @@ var y = d * 365.25; * @param {string|number} val * @return {string|number} */ -module.exports = function (val) { +module.exports = function(val) { if (typeof val === 'string') { return parse(val); } @@ -35,8 +35,10 @@ module.exports = function (val) { * @param {string} str * @return {number} */ -function parse (str) { - var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str); +function parse(str) { + var match = /^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i.exec( + str + ); if (!match) { return; } @@ -66,7 +68,7 @@ function parse (str) { case 'ms': return n; default: - // No default case + // No default case } } @@ -77,7 +79,7 @@ function parse (str) { * @param {number} ms * @return {string} */ -function format (ms) { +function format(ms) { if (ms >= d) { return Math.round(ms / d) + 'd'; } diff --git a/lib/pending.js b/lib/pending.js index ecbcda33e9..bb9a505337 100644 --- a/lib/pending.js +++ b/lib/pending.js @@ -7,6 +7,6 @@ module.exports = Pending; * * @param {string} message */ -function Pending (message) { +function Pending(message) { this.message = message; } diff --git a/lib/reporters/base.js b/lib/reporters/base.js index fdab06e7d7..b3b49873b7 100644 --- a/lib/reporters/base.js +++ b/lib/reporters/base.js @@ -41,7 +41,8 @@ var isatty = tty.isatty(1) && tty.isatty(2); * Enable coloring by default, except in the browser interface. */ -exports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined)); +exports.useColors = + !process.browser && (supportsColor || process.env.MOCHA_COLORS !== undefined); /** * Inline diffs instead of +/- @@ -105,12 +106,12 @@ if (process.platform === 'win32') { * @return {string} * @api private */ -var color = exports.color = function (type, str) { +var color = (exports.color = function(type, str) { if (!exports.useColors) { return String(str); } return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; -}; +}); /** * Expose term window size, with some defaults for when stderr is not a tty. @@ -131,23 +132,23 @@ if (isatty) { */ exports.cursor = { - hide: function () { + hide: function() { isatty && process.stdout.write('\u001b[?25l'); }, - show: function () { + show: function() { isatty && process.stdout.write('\u001b[?25h'); }, - deleteLine: function () { + deleteLine: function() { isatty && process.stdout.write('\u001b[2K'); }, - beginningOfLine: function () { + beginningOfLine: function() { isatty && process.stdout.write('\u001b[0G'); }, - CR: function () { + CR: function() { if (isatty) { exports.cursor.deleteLine(); exports.cursor.beginningOfLine(); @@ -157,11 +158,16 @@ exports.cursor = { } }; -function showDiff (err) { - return err && err.showDiff !== false && sameType(err.actual, err.expected) && err.expected !== undefined; +function showDiff(err) { + return ( + err && + err.showDiff !== false && + sameType(err.actual, err.expected) && + err.expected !== undefined + ); } -function stringifyDiffObjs (err) { +function stringifyDiffObjs(err) { if (!utils.isString(err.actual) || !utils.isString(err.expected)) { err.actual = utils.stringify(err.actual); err.expected = utils.stringify(err.expected); @@ -178,11 +184,11 @@ function stringifyDiffObjs (err) { * @param {string} expected * @return {string} Diff */ -var generateDiff = exports.generateDiff = function (actual, expected) { +var generateDiff = (exports.generateDiff = function(actual, expected) { return exports.inlineDiffs ? inlineDiff(actual, expected) : unifiedDiff(actual, expected); -}; +}); /** * Output the given `failures` as a list. @@ -194,11 +200,12 @@ var generateDiff = exports.generateDiff = function (actual, expected) { * @api public */ -exports.list = function (failures) { +exports.list = function(failures) { console.log(); - failures.forEach(function (test, i) { + failures.forEach(function(test, i) { // format - var fmt = color('error title', ' %s) %s:\n') + + var fmt = + color('error title', ' %s) %s:\n') + color('error message', ' %s') + color('error stack', '\n%s\n'); @@ -232,7 +239,8 @@ exports.list = function (failures) { // explicitly show diff if (!exports.hideDiff && showDiff(err)) { stringifyDiffObjs(err); - fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); + fmt = + color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); var match = message.match(/^([^:]+): expected/); msg = '\n ' + color('error message', match ? match[1] : msg); @@ -244,7 +252,7 @@ exports.list = function (failures) { // indented test title var testTitle = ''; - test.titlePath().forEach(function (str, index) { + test.titlePath().forEach(function(str, index) { if (index !== 0) { testTitle += '\n '; } @@ -254,7 +262,7 @@ exports.list = function (failures) { testTitle += str; }); - console.log(fmt, (i + 1), testTitle, msg, stack); + console.log(fmt, i + 1, testTitle, msg, stack); }); }; @@ -273,9 +281,15 @@ exports.list = function (failures) { * @api public */ -function Base (runner) { - var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; - var failures = this.failures = []; +function Base(runner) { + var stats = (this.stats = { + suites: 0, + tests: 0, + passes: 0, + pending: 0, + failures: 0 + }); + var failures = (this.failures = []); if (!runner) { return; @@ -284,21 +298,21 @@ function Base (runner) { runner.stats = stats; - runner.on('start', function () { + runner.on('start', function() { stats.start = new Date(); }); - runner.on('suite', function (suite) { + runner.on('suite', function(suite) { stats.suites = stats.suites || 0; suite.root || stats.suites++; }); - runner.on('test end', function () { + runner.on('test end', function() { stats.tests = stats.tests || 0; stats.tests++; }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { stats.passes = stats.passes || 0; if (test.duration > test.slow()) { @@ -312,7 +326,7 @@ function Base (runner) { stats.passes++; }); - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { stats.failures = stats.failures || 0; stats.failures++; if (showDiff(err)) { @@ -322,12 +336,12 @@ function Base (runner) { failures.push(test); }); - runner.once('end', function () { + runner.once('end', function() { stats.end = new Date(); stats.duration = stats.end - stats.start; }); - runner.on('pending', function () { + runner.on('pending', function() { stats.pending++; }); } @@ -340,25 +354,23 @@ function Base (runner) { * @public * @api public */ -Base.prototype.epilogue = function () { +Base.prototype.epilogue = function() { var stats = this.stats; var fmt; console.log(); // passes - fmt = color('bright pass', ' ') + + fmt = + color('bright pass', ' ') + color('green', ' %d passing') + color('light', ' (%s)'); - console.log(fmt, - stats.passes || 0, - ms(stats.duration)); + console.log(fmt, stats.passes || 0, ms(stats.duration)); // pending if (stats.pending) { - fmt = color('pending', ' ') + - color('pending', ' %d pending'); + fmt = color('pending', ' ') + color('pending', ' %d pending'); console.log(fmt, stats.pending); } @@ -384,7 +396,7 @@ Base.prototype.epilogue = function () { * @param {string} len * @return {string} */ -function pad (str, len) { +function pad(str, len) { str = String(str); return Array(len - str.length + 1).join(' ') + str; } @@ -397,20 +409,23 @@ function pad (str, len) { * @param {String} expected * @return {string} Diff */ -function inlineDiff (actual, expected) { +function inlineDiff(actual, expected) { var msg = errorDiff(actual, expected); // linenos var lines = msg.split('\n'); if (lines.length > 4) { var width = String(lines.length).length; - msg = lines.map(function (str, i) { - return pad(++i, width) + ' |' + ' ' + str; - }).join('\n'); + msg = lines + .map(function(str, i) { + return pad(++i, width) + ' |' + ' ' + str; + }) + .join('\n'); } // legend - msg = '\n' + + msg = + '\n' + color('diff removed', 'actual') + ' ' + color('diff added', 'expected') + @@ -431,9 +446,9 @@ function inlineDiff (actual, expected) { * @param {String} expected * @return {string} The diff. */ -function unifiedDiff (actual, expected) { +function unifiedDiff(actual, expected) { var indent = ' '; - function cleanUp (line) { + function cleanUp(line) { if (line[0] === '+') { return indent + colorLines('diff added', line); } @@ -448,16 +463,22 @@ function unifiedDiff (actual, expected) { } return indent + line; } - function notBlank (line) { + function notBlank(line) { return typeof line !== 'undefined' && line !== null; } var msg = diff.createPatch('string', actual, expected); var lines = msg.split('\n').splice(5); - return '\n ' + - colorLines('diff added', '+ expected') + ' ' + + return ( + '\n ' + + colorLines('diff added', '+ expected') + + ' ' + colorLines('diff removed', '- actual') + '\n\n' + - lines.map(cleanUp).filter(notBlank).join('\n'); + lines + .map(cleanUp) + .filter(notBlank) + .join('\n') + ); } /** @@ -468,16 +489,19 @@ function unifiedDiff (actual, expected) { * @param {String} expected * @return {string} the diff */ -function errorDiff (actual, expected) { - return diff.diffWordsWithSpace(actual, expected).map(function (str) { - if (str.added) { - return colorLines('diff added', str.value); - } - if (str.removed) { - return colorLines('diff removed', str.value); - } - return str.value; - }).join(''); +function errorDiff(actual, expected) { + return diff + .diffWordsWithSpace(actual, expected) + .map(function(str) { + if (str.added) { + return colorLines('diff added', str.value); + } + if (str.removed) { + return colorLines('diff removed', str.value); + } + return str.value; + }) + .join(''); } /** @@ -488,10 +512,13 @@ function errorDiff (actual, expected) { * @param {string} str * @return {string} */ -function colorLines (name, str) { - return str.split('\n').map(function (str) { - return color(name, str); - }).join('\n'); +function colorLines(name, str) { + return str + .split('\n') + .map(function(str) { + return color(name, str); + }) + .join('\n'); } /** @@ -507,6 +534,6 @@ var objToString = Object.prototype.toString; * @param {Object} b * @return {boolean} */ -function sameType (a, b) { +function sameType(a, b) { return objToString.call(a) === objToString.call(b); } diff --git a/lib/reporters/doc.js b/lib/reporters/doc.js index 844ac5fd24..5cb0bda8fc 100644 --- a/lib/reporters/doc.js +++ b/lib/reporters/doc.js @@ -25,16 +25,16 @@ exports = module.exports = Doc; * @param {Runner} runner * @api public */ -function Doc (runner) { +function Doc(runner) { Base.call(this, runner); var indents = 2; - function indent () { + function indent() { return Array(indents).join(' '); } - runner.on('suite', function (suite) { + runner.on('suite', function(suite) { if (suite.root) { return; } @@ -45,7 +45,7 @@ function Doc (runner) { console.log('%s
', indent()); }); - runner.on('suite end', function (suite) { + runner.on('suite end', function(suite) { if (suite.root) { return; } @@ -55,16 +55,24 @@ function Doc (runner) { --indents; }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { console.log('%s
%s
', indent(), utils.escape(test.title)); var code = utils.escape(utils.clean(test.body)); console.log('%s
%s
', indent(), code); }); - runner.on('fail', function (test, err) { - console.log('%s
%s
', indent(), utils.escape(test.title)); + runner.on('fail', function(test, err) { + console.log( + '%s
%s
', + indent(), + utils.escape(test.title) + ); var code = utils.escape(utils.clean(test.body)); - console.log('%s
%s
', indent(), code); + console.log( + '%s
%s
', + indent(), + code + ); console.log('%s
%s
', indent(), utils.escape(err)); }); } diff --git a/lib/reporters/dot.js b/lib/reporters/dot.js index d83c026777..22320e31c3 100644 --- a/lib/reporters/dot.js +++ b/lib/reporters/dot.js @@ -26,25 +26,25 @@ exports = module.exports = Dot; * @api public * @param {Runner} runner */ -function Dot (runner) { +function Dot(runner) { Base.call(this, runner); var self = this; - var width = Base.window.width * 0.75 | 0; + var width = (Base.window.width * 0.75) | 0; var n = -1; - runner.on('start', function () { + runner.on('start', function() { process.stdout.write('\n'); }); - runner.on('pending', function () { + runner.on('pending', function() { if (++n % width === 0) { process.stdout.write('\n '); } process.stdout.write(color('pending', Base.symbols.comma)); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { if (++n % width === 0) { process.stdout.write('\n '); } @@ -55,14 +55,14 @@ function Dot (runner) { } }); - runner.on('fail', function () { + runner.on('fail', function() { if (++n % width === 0) { process.stdout.write('\n '); } process.stdout.write(color('fail', Base.symbols.bang)); }); - runner.once('end', function () { + runner.once('end', function() { console.log(); self.epilogue(); }); diff --git a/lib/reporters/html.js b/lib/reporters/html.js index 2a8034da98..85a5b1b19f 100644 --- a/lib/reporters/html.js +++ b/lib/reporters/html.js @@ -36,7 +36,8 @@ exports = module.exports = HTML; * Stats template. */ -var statsTemplate = '
    ' + +var statsTemplate = + '
      ' + '
    • ' + '
    • passes: 0
    • ' + '
    • failures: 0
    • ' + @@ -55,7 +56,7 @@ var playIcon = '‣'; * @api public * @param {Runner} runner */ -function HTML (runner) { +function HTML(runner) { Base.call(this, runner); var self = this; @@ -90,10 +91,10 @@ function HTML (runner) { } // pass toggle - on(passesLink, 'click', function (evt) { + on(passesLink, 'click', function(evt) { evt.preventDefault(); unhide(); - var name = (/pass/).test(report.className) ? '' : ' pass'; + var name = /pass/.test(report.className) ? '' : ' pass'; report.className = report.className.replace(/fail|pass/g, '') + name; if (report.className.trim()) { hideSuitesWithout('test pass'); @@ -101,10 +102,10 @@ function HTML (runner) { }); // failure toggle - on(failuresLink, 'click', function (evt) { + on(failuresLink, 'click', function(evt) { evt.preventDefault(); unhide(); - var name = (/fail/).test(report.className) ? '' : ' fail'; + var name = /fail/.test(report.className) ? '' : ' fail'; report.className = report.className.replace(/fail|pass/g, '') + name; if (report.className.trim()) { hideSuitesWithout('test fail'); @@ -118,14 +119,18 @@ function HTML (runner) { progress.size(40); } - runner.on('suite', function (suite) { + runner.on('suite', function(suite) { if (suite.root) { return; } // suite var url = self.suiteURL(suite); - var el = fragment('
    • %s

    • ', url, escape(suite.title)); + var el = fragment( + '
    • %s

    • ', + url, + escape(suite.title) + ); // container stack[0].appendChild(el); @@ -133,7 +138,7 @@ function HTML (runner) { el.appendChild(stack[0]); }); - runner.on('suite end', function (suite) { + runner.on('suite end', function(suite) { if (suite.root) { updateStats(); return; @@ -141,19 +146,27 @@ function HTML (runner) { stack.shift(); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { var url = self.testURL(test); - var markup = '
    • %e%ems ' + - '' + playIcon + '

    • '; + var markup = + '
    • %e%ems ' + + '' + + playIcon + + '

    • '; var el = fragment(markup, test.speed, test.title, test.duration, url); self.addCodeToggle(el, test.body); appendToStack(el); updateStats(); }); - runner.on('fail', function (test) { - var el = fragment('
    • %e ' + playIcon + '

    • ', - test.title, self.testURL(test)); + runner.on('fail', function(test) { + var el = fragment( + '
    • %e ' + + playIcon + + '

    • ', + test.title, + self.testURL(test) + ); var stackString; // Note: Includes leading newline var message = test.err.toString(); @@ -168,7 +181,9 @@ function HTML (runner) { if (indexOfMessage === -1) { stackString = test.err.stack; } else { - stackString = test.err.stack.substr(test.err.message.length + indexOfMessage); + stackString = test.err.stack.substr( + test.err.message.length + indexOfMessage + ); } } else if (test.err.sourceURL && test.err.line !== undefined) { // Safari doesn't give you a stack. Let's at least provide a source line. @@ -178,12 +193,21 @@ function HTML (runner) { stackString = stackString || ''; if (test.err.htmlMessage && stackString) { - el.appendChild(fragment('
      %s\n
      %e
      ', - test.err.htmlMessage, stackString)); + el.appendChild( + fragment( + '
      %s\n
      %e
      ', + test.err.htmlMessage, + stackString + ) + ); } else if (test.err.htmlMessage) { - el.appendChild(fragment('
      %s
      ', test.err.htmlMessage)); + el.appendChild( + fragment('
      %s
      ', test.err.htmlMessage) + ); } else { - el.appendChild(fragment('
      %e%e
      ', message, stackString)); + el.appendChild( + fragment('
      %e%e
      ', message, stackString) + ); } self.addCodeToggle(el, test.body); @@ -191,22 +215,25 @@ function HTML (runner) { updateStats(); }); - runner.on('pending', function (test) { - var el = fragment('
    • %e

    • ', test.title); + runner.on('pending', function(test) { + var el = fragment( + '
    • %e

    • ', + test.title + ); appendToStack(el); updateStats(); }); - function appendToStack (el) { + function appendToStack(el) { // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. if (stack[0]) { stack[0].appendChild(el); } } - function updateStats () { + function updateStats() { // TODO: add to stats - var percent = stats.tests / runner.total * 100 | 0; + var percent = (stats.tests / runner.total * 100) | 0; if (progress) { progress.update(percent).draw(ctx); } @@ -225,7 +252,7 @@ function HTML (runner) { * @param {string} s * @return {string} A new URL. */ -function makeUrl (s) { +function makeUrl(s) { var search = window.location.search; // Remove previous grep query parameter if present @@ -233,7 +260,12 @@ function makeUrl (s) { search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?'); } - return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s)); + return ( + window.location.pathname + + (search ? search + '&' : '?') + + 'grep=' + + encodeURIComponent(escapeRe(s)) + ); } /** @@ -241,7 +273,7 @@ function makeUrl (s) { * * @param {Object} [suite] */ -HTML.prototype.suiteURL = function (suite) { +HTML.prototype.suiteURL = function(suite) { return makeUrl(suite.fullTitle()); }; @@ -250,7 +282,7 @@ HTML.prototype.suiteURL = function (suite) { * * @param {Object} [test] */ -HTML.prototype.testURL = function (test) { +HTML.prototype.testURL = function(test) { return makeUrl(test.fullTitle()); }; @@ -260,10 +292,10 @@ HTML.prototype.testURL = function (test) { * @param {HTMLLIElement} el * @param {string} contents */ -HTML.prototype.addCodeToggle = function (el, contents) { +HTML.prototype.addCodeToggle = function(el, contents) { var h2 = el.getElementsByTagName('h2')[0]; - on(h2, 'click', function () { + on(h2, 'click', function() { pre.style.display = pre.style.display === 'none' ? 'block' : 'none'; }); @@ -277,7 +309,7 @@ HTML.prototype.addCodeToggle = function (el, contents) { * * @param {string} msg */ -function error (msg) { +function error(msg) { document.body.appendChild(fragment('
      %s
      ', msg)); } @@ -286,15 +318,17 @@ function error (msg) { * * @param {string} html */ -function fragment (html) { +function fragment(html) { var args = arguments; var div = document.createElement('div'); var i = 1; - div.innerHTML = html.replace(/%([se])/g, function (_, type) { + div.innerHTML = html.replace(/%([se])/g, function(_, type) { switch (type) { - case 's': return String(args[i++]); - case 'e': return escape(args[i++]); + case 's': + return String(args[i++]); + case 'e': + return escape(args[i++]); // no default } }); @@ -308,7 +342,7 @@ function fragment (html) { * * @param {text} classname */ -function hideSuitesWithout (classname) { +function hideSuitesWithout(classname) { var suites = document.getElementsByClassName('suite'); for (var i = 0; i < suites.length; i++) { var els = suites[i].getElementsByClassName(classname); @@ -321,7 +355,7 @@ function hideSuitesWithout (classname) { /** * Unhide .hidden suites. */ -function unhide () { +function unhide() { var els = document.getElementsByClassName('suite hidden'); for (var i = 0; i < els.length; ++i) { els[i].className = els[i].className.replace('suite hidden', 'suite'); @@ -334,7 +368,7 @@ function unhide () { * @param {HTMLElement} el * @param {string} contents */ -function text (el, contents) { +function text(el, contents) { if (el.textContent) { el.textContent = contents; } else { @@ -345,7 +379,7 @@ function text (el, contents) { /** * Listen on `event` with callback `fn`. */ -function on (el, event, fn) { +function on(el, event, fn) { if (el.addEventListener) { el.addEventListener(event, fn, false); } else { diff --git a/lib/reporters/json-stream.js b/lib/reporters/json-stream.js index 884cc8ffec..0edd0cbf88 100644 --- a/lib/reporters/json-stream.js +++ b/lib/reporters/json-stream.js @@ -25,28 +25,28 @@ exports = module.exports = List; * @api public * @param {Runner} runner */ -function List (runner) { +function List(runner) { Base.call(this, runner); var self = this; var total = runner.total; - runner.on('start', function () { - console.log(JSON.stringify(['start', { total: total }])); + runner.on('start', function() { + console.log(JSON.stringify(['start', {total: total}])); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { console.log(JSON.stringify(['pass', clean(test)])); }); - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { test = clean(test); test.err = err.message; test.stack = err.stack || null; console.log(JSON.stringify(['fail', test])); }); - runner.once('end', function () { + runner.once('end', function() { process.stdout.write(JSON.stringify(['end', self.stats])); }); } @@ -59,7 +59,7 @@ function List (runner) { * @param {Object} test * @return {Object} */ -function clean (test) { +function clean(test) { return { title: test.title, fullTitle: test.fullTitle(), diff --git a/lib/reporters/json.js b/lib/reporters/json.js index d70f9a5591..046e4ba4a5 100644 --- a/lib/reporters/json.js +++ b/lib/reporters/json.js @@ -24,7 +24,7 @@ exports = module.exports = JSONReporter; * @api public * @param {Runner} runner */ -function JSONReporter (runner) { +function JSONReporter(runner) { Base.call(this, runner); var self = this; @@ -33,23 +33,23 @@ function JSONReporter (runner) { var failures = []; var passes = []; - runner.on('test end', function (test) { + runner.on('test end', function(test) { tests.push(test); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { passes.push(test); }); - runner.on('fail', function (test) { + runner.on('fail', function(test) { failures.push(test); }); - runner.on('pending', function (test) { + runner.on('pending', function(test) { pending.push(test); }); - runner.once('end', function () { + runner.once('end', function() { var obj = { stats: self.stats, tests: tests.map(clean), @@ -72,7 +72,7 @@ function JSONReporter (runner) { * @param {Object} test * @return {Object} */ -function clean (test) { +function clean(test) { var err = test.err || {}; if (err instanceof Error) { err = errorJSON(err); @@ -94,19 +94,21 @@ function clean (test) { * @param {Object} obj * @return {Object} */ -function cleanCycles (obj) { +function cleanCycles(obj) { var cache = []; - return JSON.parse(JSON.stringify(obj, function (key, value) { - if (typeof value === 'object' && value !== null) { - if (cache.indexOf(value) !== -1) { - // Instead of going in a circle, we'll print [object Object] - return '' + value; + return JSON.parse( + JSON.stringify(obj, function(key, value) { + if (typeof value === 'object' && value !== null) { + if (cache.indexOf(value) !== -1) { + // Instead of going in a circle, we'll print [object Object] + return '' + value; + } + cache.push(value); } - cache.push(value); - } - return value; - })); + return value; + }) + ); } /** @@ -116,9 +118,9 @@ function cleanCycles (obj) { * @param {Error} err * @return {Object} */ -function errorJSON (err) { +function errorJSON(err) { var res = {}; - Object.getOwnPropertyNames(err).forEach(function (key) { + Object.getOwnPropertyNames(err).forEach(function(key) { res[key] = err[key]; }, err); return res; diff --git a/lib/reporters/landing.js b/lib/reporters/landing.js index c1f67b21ca..b0a9fb23be 100644 --- a/lib/reporters/landing.js +++ b/lib/reporters/landing.js @@ -45,30 +45,30 @@ Base.colors.runway = 90; * @api public * @param {Runner} runner */ -function Landing (runner) { +function Landing(runner) { Base.call(this, runner); var self = this; - var width = Base.window.width * 0.75 | 0; + var width = (Base.window.width * 0.75) | 0; var total = runner.total; var stream = process.stdout; var plane = color('plane', '✈'); var crashed = -1; var n = 0; - function runway () { + function runway() { var buf = Array(width).join('-'); return ' ' + color('runway', buf); } - runner.on('start', function () { + runner.on('start', function() { stream.write('\n\n\n '); cursor.hide(); }); - runner.on('test end', function (test) { + runner.on('test end', function(test) { // check if the plane crashed - var col = crashed === -1 ? width * ++n / total | 0 : crashed; + var col = crashed === -1 ? (width * ++n / total) | 0 : crashed; // show the crash if (test.state === 'failed') { @@ -87,7 +87,7 @@ function Landing (runner) { stream.write('\u001b[0m'); }); - runner.once('end', function () { + runner.once('end', function() { cursor.show(); console.log(); self.epilogue(); diff --git a/lib/reporters/list.js b/lib/reporters/list.js index d98f4ff333..29ce74ab79 100644 --- a/lib/reporters/list.js +++ b/lib/reporters/list.js @@ -27,35 +27,35 @@ exports = module.exports = List; * @api public * @param {Runner} runner */ -function List (runner) { +function List(runner) { Base.call(this, runner); var self = this; var n = 0; - runner.on('start', function () { + runner.on('start', function() { console.log(); }); - runner.on('test', function (test) { + runner.on('test', function(test) { process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); }); - runner.on('pending', function (test) { - var fmt = color('checkmark', ' -') + - color('pending', ' %s'); + runner.on('pending', function(test) { + var fmt = color('checkmark', ' -') + color('pending', ' %s'); console.log(fmt, test.fullTitle()); }); - runner.on('pass', function (test) { - var fmt = color('checkmark', ' ' + Base.symbols.ok) + + runner.on('pass', function(test) { + var fmt = + color('checkmark', ' ' + Base.symbols.ok) + color('pass', ' %s: ') + color(test.speed, '%dms'); cursor.CR(); console.log(fmt, test.fullTitle(), test.duration); }); - runner.on('fail', function (test) { + runner.on('fail', function(test) { cursor.CR(); console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); }); diff --git a/lib/reporters/markdown.js b/lib/reporters/markdown.js index 43f1468d2c..ff75ee4d67 100644 --- a/lib/reporters/markdown.js +++ b/lib/reporters/markdown.js @@ -31,29 +31,29 @@ exports = module.exports = Markdown; * @api public * @param {Runner} runner */ -function Markdown (runner) { +function Markdown(runner) { Base.call(this, runner); var level = 0; var buf = ''; - function title (str) { + function title(str) { return Array(level).join('#') + ' ' + str; } - function mapTOC (suite, obj) { + function mapTOC(suite, obj) { var ret = obj; var key = SUITE_PREFIX + suite.title; - obj = obj[key] = obj[key] || { suite: suite }; - suite.suites.forEach(function (suite) { + obj = obj[key] = obj[key] || {suite: suite}; + suite.suites.forEach(function(suite) { mapTOC(suite, obj); }); return ret; } - function stringifyTOC (obj, level) { + function stringifyTOC(obj, level) { ++level; var buf = ''; var link; @@ -71,25 +71,25 @@ function Markdown (runner) { return buf; } - function generateTOC (suite) { + function generateTOC(suite) { var obj = mapTOC(suite, {}); return stringifyTOC(obj, 0); } generateTOC(runner.suite); - runner.on('suite', function (suite) { + runner.on('suite', function(suite) { ++level; var slug = utils.slug(suite.fullTitle()); buf += '' + '\n'; buf += title(suite.title) + '\n'; }); - runner.on('suite end', function () { + runner.on('suite end', function() { --level; }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { var code = utils.clean(test.body); buf += test.title + '.\n'; buf += '\n```js\n'; @@ -97,7 +97,7 @@ function Markdown (runner) { buf += '```\n\n'; }); - runner.once('end', function () { + runner.once('end', function() { process.stdout.write('# TOC\n'); process.stdout.write(generateTOC(runner.suite)); process.stdout.write(buf); diff --git a/lib/reporters/min.js b/lib/reporters/min.js index 39e04c6210..2a91a3c1e2 100644 --- a/lib/reporters/min.js +++ b/lib/reporters/min.js @@ -25,10 +25,10 @@ exports = module.exports = Min; * @api public * @param {Runner} runner */ -function Min (runner) { +function Min(runner) { Base.call(this, runner); - runner.on('start', function () { + runner.on('start', function() { // clear screen process.stdout.write('\u001b[2J'); // set cursor position diff --git a/lib/reporters/nyan.js b/lib/reporters/nyan.js index 9beb3969bb..164a3fadc4 100644 --- a/lib/reporters/nyan.js +++ b/lib/reporters/nyan.js @@ -26,12 +26,12 @@ exports = module.exports = NyanCat; * @extends Mocha.reporters.Base */ -function NyanCat (runner) { +function NyanCat(runner) { Base.call(this, runner); var self = this; - var width = Base.window.width * 0.75 | 0; - var nyanCatWidth = this.nyanCatWidth = 11; + var width = (Base.window.width * 0.75) | 0; + var nyanCatWidth = (this.nyanCatWidth = 11); this.colorIndex = 0; this.numberOfLines = 4; @@ -39,26 +39,26 @@ function NyanCat (runner) { this.scoreboardWidth = 5; this.tick = 0; this.trajectories = [[], [], [], []]; - this.trajectoryWidthMax = (width - nyanCatWidth); + this.trajectoryWidthMax = width - nyanCatWidth; - runner.on('start', function () { + runner.on('start', function() { Base.cursor.hide(); self.draw(); }); - runner.on('pending', function () { + runner.on('pending', function() { self.draw(); }); - runner.on('pass', function () { + runner.on('pass', function() { self.draw(); }); - runner.on('fail', function () { + runner.on('fail', function() { self.draw(); }); - runner.once('end', function () { + runner.once('end', function() { Base.cursor.show(); for (var i = 0; i < self.numberOfLines; i++) { write('\n'); @@ -78,7 +78,7 @@ inherits(NyanCat, Base); * @api private */ -NyanCat.prototype.draw = function () { +NyanCat.prototype.draw = function() { this.appendRainbow(); this.drawScoreboard(); this.drawRainbow(); @@ -93,10 +93,10 @@ NyanCat.prototype.draw = function () { * @api private */ -NyanCat.prototype.drawScoreboard = function () { +NyanCat.prototype.drawScoreboard = function() { var stats = this.stats; - function draw (type, n) { + function draw(type, n) { write(' '); write(Base.color(type, n)); write('\n'); @@ -116,7 +116,7 @@ NyanCat.prototype.drawScoreboard = function () { * @api private */ -NyanCat.prototype.appendRainbow = function () { +NyanCat.prototype.appendRainbow = function() { var segment = this.tick ? '_' : '-'; var rainbowified = this.rainbowify(segment); @@ -135,10 +135,10 @@ NyanCat.prototype.appendRainbow = function () { * @api private */ -NyanCat.prototype.drawRainbow = function () { +NyanCat.prototype.drawRainbow = function() { var self = this; - this.trajectories.forEach(function (line) { + this.trajectories.forEach(function(line) { write('\u001b[' + self.scoreboardWidth + 'C'); write(line.join('')); write('\n'); @@ -152,7 +152,7 @@ NyanCat.prototype.drawRainbow = function () { * * @api private */ -NyanCat.prototype.drawNyanCat = function () { +NyanCat.prototype.drawNyanCat = function() { var self = this; var startWidth = this.scoreboardWidth + this.trajectories[0].length; var dist = '\u001b[' + startWidth + 'C'; @@ -188,7 +188,7 @@ NyanCat.prototype.drawNyanCat = function () { * @return {string} */ -NyanCat.prototype.face = function () { +NyanCat.prototype.face = function() { var stats = this.stats; if (stats.failures) { return '( x .x)'; @@ -207,7 +207,7 @@ NyanCat.prototype.face = function () { * @param {number} n */ -NyanCat.prototype.cursorUp = function (n) { +NyanCat.prototype.cursorUp = function(n) { write('\u001b[' + n + 'A'); }; @@ -218,7 +218,7 @@ NyanCat.prototype.cursorUp = function (n) { * @param {number} n */ -NyanCat.prototype.cursorDown = function (n) { +NyanCat.prototype.cursorDown = function(n) { write('\u001b[' + n + 'B'); }; @@ -228,12 +228,12 @@ NyanCat.prototype.cursorDown = function (n) { * @api private * @return {Array} */ -NyanCat.prototype.generateColors = function () { +NyanCat.prototype.generateColors = function() { var colors = []; - for (var i = 0; i < (6 * 7); i++) { + for (var i = 0; i < 6 * 7; i++) { var pi3 = Math.floor(Math.PI / 3); - var n = (i * (1.0 / 6)); + var n = i * (1.0 / 6); var r = Math.floor(3 * Math.sin(n) + 3); var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); @@ -250,7 +250,7 @@ NyanCat.prototype.generateColors = function () { * @param {string} str * @return {string} */ -NyanCat.prototype.rainbowify = function (str) { +NyanCat.prototype.rainbowify = function(str) { if (!Base.useColors) { return str; } @@ -264,6 +264,6 @@ NyanCat.prototype.rainbowify = function (str) { * * @param {string} string A message to write to stdout. */ -function write (string) { +function write(string) { process.stdout.write(string); } diff --git a/lib/reporters/progress.js b/lib/reporters/progress.js index ad592c4fd3..042fc1b91b 100644 --- a/lib/reporters/progress.js +++ b/lib/reporters/progress.js @@ -34,11 +34,11 @@ Base.colors.progress = 90; * @param {Runner} runner * @param {Object} options */ -function Progress (runner, options) { +function Progress(runner, options) { Base.call(this, runner); var self = this; - var width = Base.window.width * 0.50 | 0; + var width = (Base.window.width * 0.5) | 0; var total = runner.total; var complete = 0; var lastN = -1; @@ -54,17 +54,17 @@ function Progress (runner, options) { options.verbose = reporterOptions.verbose || false; // tests started - runner.on('start', function () { + runner.on('start', function() { console.log(); cursor.hide(); }); // tests complete - runner.on('test end', function () { + runner.on('test end', function() { complete++; var percent = complete / total; - var n = width * percent | 0; + var n = (width * percent) | 0; var i = width - n; if (n === lastN && !options.verbose) { @@ -86,7 +86,7 @@ function Progress (runner, options) { // tests are complete, output some stats // and the failures if any - runner.once('end', function () { + runner.once('end', function() { cursor.show(); console.log(); self.epilogue(); diff --git a/lib/reporters/spec.js b/lib/reporters/spec.js index 89499e9cb1..75e6dda1b5 100644 --- a/lib/reporters/spec.js +++ b/lib/reporters/spec.js @@ -26,47 +26,49 @@ exports = module.exports = Spec; * @api public * @param {Runner} runner */ -function Spec (runner) { +function Spec(runner) { Base.call(this, runner); var self = this; var indents = 0; var n = 0; - function indent () { + function indent() { return Array(indents).join(' '); } - runner.on('start', function () { + runner.on('start', function() { console.log(); }); - runner.on('suite', function (suite) { + runner.on('suite', function(suite) { ++indents; console.log(color('suite', '%s%s'), indent(), suite.title); }); - runner.on('suite end', function () { + runner.on('suite end', function() { --indents; if (indents === 1) { console.log(); } }); - runner.on('pending', function (test) { + runner.on('pending', function(test) { var fmt = indent() + color('pending', ' - %s'); console.log(fmt, test.title); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { var fmt; if (test.speed === 'fast') { - fmt = indent() + + fmt = + indent() + color('checkmark', ' ' + Base.symbols.ok) + color('pass', ' %s'); console.log(fmt, test.title); } else { - fmt = indent() + + fmt = + indent() + color('checkmark', ' ' + Base.symbols.ok) + color('pass', ' %s') + color(test.speed, ' (%dms)'); @@ -74,7 +76,7 @@ function Spec (runner) { } }); - runner.on('fail', function (test) { + runner.on('fail', function(test) { console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); }); diff --git a/lib/reporters/tap.js b/lib/reporters/tap.js index 5be0a5f9dd..299dc66773 100644 --- a/lib/reporters/tap.js +++ b/lib/reporters/tap.js @@ -24,32 +24,32 @@ exports = module.exports = TAP; * @api public * @param {Runner} runner */ -function TAP (runner) { +function TAP(runner) { Base.call(this, runner); var n = 1; var passes = 0; var failures = 0; - runner.on('start', function () { + runner.on('start', function() { var total = runner.grepTotal(runner.suite); console.log('%d..%d', 1, total); }); - runner.on('test end', function () { + runner.on('test end', function() { ++n; }); - runner.on('pending', function (test) { + runner.on('pending', function(test) { console.log('ok %d %s # SKIP -', n, title(test)); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { passes++; console.log('ok %d %s', n, title(test)); }); - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { failures++; console.log('not ok %d %s', n, title(test)); if (err.stack) { @@ -57,7 +57,7 @@ function TAP (runner) { } }); - runner.once('end', function () { + runner.once('end', function() { console.log('# tests ' + (passes + failures)); console.log('# pass ' + passes); console.log('# fail ' + failures); @@ -71,6 +71,6 @@ function TAP (runner) { * @param {Object} test * @return {String} */ -function title (test) { +function title(test) { return test.fullTitle().replace(/#/g, ''); } diff --git a/lib/reporters/xunit.js b/lib/reporters/xunit.js index 30b1f0758f..c1a930d2d8 100644 --- a/lib/reporters/xunit.js +++ b/lib/reporters/xunit.js @@ -42,7 +42,7 @@ exports = module.exports = XUnit; * @api public * @param {Runner} runner */ -function XUnit (runner, options) { +function XUnit(runner, options) { Base.call(this, runner); var stats = this.stats; @@ -72,30 +72,36 @@ function XUnit (runner, options) { // fall back to the default suite name suiteName = suiteName || DEFAULT_SUITE_NAME; - runner.on('pending', function (test) { + runner.on('pending', function(test) { tests.push(test); }); - runner.on('pass', function (test) { + runner.on('pass', function(test) { tests.push(test); }); - runner.on('fail', function (test) { + runner.on('fail', function(test) { tests.push(test); }); - runner.once('end', function () { - self.write(tag('testsuite', { - name: suiteName, - tests: stats.tests, - failures: stats.failures, - errors: stats.failures, - skipped: stats.tests - stats.failures - stats.passes, - timestamp: (new Date()).toUTCString(), - time: (stats.duration / 1000) || 0 - }, false)); - - tests.forEach(function (t) { + runner.once('end', function() { + self.write( + tag( + 'testsuite', + { + name: suiteName, + tests: stats.tests, + failures: stats.failures, + errors: stats.failures, + skipped: stats.tests - stats.failures - stats.passes, + timestamp: new Date().toUTCString(), + time: stats.duration / 1000 || 0 + }, + false + ) + ); + + tests.forEach(function(t) { self.test(t); }); @@ -114,9 +120,9 @@ inherits(XUnit, Base); * @param failures * @param {Function} fn */ -XUnit.prototype.done = function (failures, fn) { +XUnit.prototype.done = function(failures, fn) { if (this.fileStream) { - this.fileStream.end(function () { + this.fileStream.end(function() { fn(failures); }); } else { @@ -129,7 +135,7 @@ XUnit.prototype.done = function (failures, fn) { * * @param {string} line */ -XUnit.prototype.write = function (line) { +XUnit.prototype.write = function(line) { if (this.fileStream) { this.fileStream.write(line + '\n'); } else if (typeof process === 'object' && process.stdout) { @@ -144,16 +150,28 @@ XUnit.prototype.write = function (line) { * * @param {Test} test */ -XUnit.prototype.test = function (test) { +XUnit.prototype.test = function(test) { var attrs = { classname: test.parent.fullTitle(), name: test.title, - time: (test.duration / 1000) || 0 + time: test.duration / 1000 || 0 }; if (test.state === 'failed') { var err = test.err; - this.write(tag('testcase', attrs, false, tag('failure', {}, false, escape(err.message) + '\n' + escape(err.stack)))); + this.write( + tag( + 'testcase', + attrs, + false, + tag( + 'failure', + {}, + false, + escape(err.message) + '\n' + escape(err.stack) + ) + ) + ); } else if (test.isPending()) { this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); } else { @@ -170,7 +188,7 @@ XUnit.prototype.test = function (test) { * @param content * @return {string} */ -function tag (name, attrs, close, content) { +function tag(name, attrs, close, content) { var end = close ? '/>' : '>'; var pairs = []; var tag; diff --git a/lib/runnable.js b/lib/runnable.js index f212d6715b..73da817793 100644 --- a/lib/runnable.js +++ b/lib/runnable.js @@ -29,7 +29,7 @@ module.exports = Runnable; * @param {String} title * @param {Function} fn */ -function Runnable (title, fn) { +function Runnable(title, fn) { this.title = title; this.fn = fn; this.body = (fn || '').toString(); @@ -56,7 +56,7 @@ utils.inherits(Runnable, EventEmitter); * @param {number|string} ms * @return {Runnable|number} ms or Runnable instance. */ -Runnable.prototype.timeout = function (ms) { +Runnable.prototype.timeout = function(ms) { if (!arguments.length) { return this._timeout; } @@ -82,7 +82,7 @@ Runnable.prototype.timeout = function (ms) { * @param {number|string} ms * @return {Runnable|number} ms or Runnable instance. */ -Runnable.prototype.slow = function (ms) { +Runnable.prototype.slow = function(ms) { if (!arguments.length || typeof ms === 'undefined') { return this._slow; } @@ -101,7 +101,7 @@ Runnable.prototype.slow = function (ms) { * @param {boolean} enabled * @return {Runnable|boolean} enabled or Runnable instance. */ -Runnable.prototype.enableTimeouts = function (enabled) { +Runnable.prototype.enableTimeouts = function(enabled) { if (!arguments.length) { return this._enableTimeouts; } @@ -117,7 +117,7 @@ Runnable.prototype.enableTimeouts = function (enabled) { * @public * @api public */ -Runnable.prototype.skip = function () { +Runnable.prototype.skip = function() { throw new Pending('sync skip'); }; @@ -126,7 +126,7 @@ Runnable.prototype.skip = function () { * * @api private */ -Runnable.prototype.isPending = function () { +Runnable.prototype.isPending = function() { return this.pending || (this.parent && this.parent.isPending()); }; @@ -135,7 +135,7 @@ Runnable.prototype.isPending = function () { * @return {boolean} * @private */ -Runnable.prototype.isFailed = function () { +Runnable.prototype.isFailed = function() { return !this.isPending() && this.state === 'failed'; }; @@ -144,7 +144,7 @@ Runnable.prototype.isFailed = function () { * @return {boolean} * @private */ -Runnable.prototype.isPassed = function () { +Runnable.prototype.isPassed = function() { return !this.isPending() && this.state === 'passed'; }; @@ -153,7 +153,7 @@ Runnable.prototype.isPassed = function () { * * @api private */ -Runnable.prototype.retries = function (n) { +Runnable.prototype.retries = function(n) { if (!arguments.length) { return this._retries; } @@ -165,7 +165,7 @@ Runnable.prototype.retries = function (n) { * * @api private */ -Runnable.prototype.currentRetry = function (n) { +Runnable.prototype.currentRetry = function(n) { if (!arguments.length) { return this._currentRetry; } @@ -181,7 +181,7 @@ Runnable.prototype.currentRetry = function (n) { * @api public * @return {string} */ -Runnable.prototype.fullTitle = function () { +Runnable.prototype.fullTitle = function() { return this.titlePath().join(' '); }; @@ -193,7 +193,7 @@ Runnable.prototype.fullTitle = function () { * @api public * @return {string} */ -Runnable.prototype.titlePath = function () { +Runnable.prototype.titlePath = function() { return this.parent.titlePath().concat([this.title]); }; @@ -202,7 +202,7 @@ Runnable.prototype.titlePath = function () { * * @api private */ -Runnable.prototype.clearTimeout = function () { +Runnable.prototype.clearTimeout = function() { clearTimeout(this.timer); }; @@ -212,19 +212,23 @@ Runnable.prototype.clearTimeout = function () { * @api private * @return {string} */ -Runnable.prototype.inspect = function () { - return JSON.stringify(this, function (key, val) { - if (key[0] === '_') { - return; - } - if (key === 'parent') { - return '#'; - } - if (key === 'ctx') { - return '#'; - } - return val; - }, 2); +Runnable.prototype.inspect = function() { + return JSON.stringify( + this, + function(key, val) { + if (key[0] === '_') { + return; + } + if (key === 'parent') { + return '#'; + } + if (key === 'ctx') { + return '#'; + } + return val; + }, + 2 + ); }; /** @@ -232,7 +236,7 @@ Runnable.prototype.inspect = function () { * * @api private */ -Runnable.prototype.resetTimeout = function () { +Runnable.prototype.resetTimeout = function() { var self = this; var ms = this.timeout() || 1e9; @@ -240,7 +244,7 @@ Runnable.prototype.resetTimeout = function () { return; } this.clearTimeout(); - this.timer = setTimeout(function () { + this.timer = setTimeout(function() { if (!self._enableTimeouts) { return; } @@ -255,7 +259,7 @@ Runnable.prototype.resetTimeout = function () { * @api private * @param {string[]} globals */ -Runnable.prototype.globals = function (globals) { +Runnable.prototype.globals = function(globals) { if (!arguments.length) { return this._allowedGlobals; } @@ -268,7 +272,7 @@ Runnable.prototype.globals = function (globals) { * @param {Function} fn * @api private */ -Runnable.prototype.run = function (fn) { +Runnable.prototype.run = function(fn) { var self = this; var start = new Date(); var ctx = this.ctx; @@ -281,7 +285,7 @@ Runnable.prototype.run = function (fn) { } // called multiple times - function multiple (err) { + function multiple(err) { if (emitted) { return; } @@ -296,7 +300,7 @@ Runnable.prototype.run = function (fn) { } // finished - function done (err) { + function done(err) { var ms = self.timeout(); if (self.timedOut) { return; @@ -323,7 +327,7 @@ Runnable.prototype.run = function (fn) { this.resetTimeout(); // allows skip() to be used in an explicit async context - this.skip = function asyncSkip () { + this.skip = function asyncSkip() { done(new Pending('async skip call')); // halt execution. the Runnable will be marked pending // by the previous call, and the uncaught handler will ignore @@ -364,43 +368,53 @@ Runnable.prototype.run = function (fn) { done(utils.getError(err)); } - function callFn (fn) { + function callFn(fn) { var result = fn.call(ctx); if (result && typeof result.then === 'function') { self.resetTimeout(); - result - .then(function () { + result.then( + function() { done(); // Return null so libraries like bluebird do not warn about // subsequently constructed Promises. return null; }, - function (reason) { + function(reason) { done(reason || new Error('Promise rejected with no or falsy reason')); - }); + } + ); } else { if (self.asyncOnly) { - return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); + return done( + new Error( + '--async-only option in use without declaring `done()` or returning a promise' + ) + ); } done(); } } - function callFnAsync (fn) { - var result = fn.call(ctx, function (err) { + function callFnAsync(fn) { + var result = fn.call(ctx, function(err) { if (err instanceof Error || toString.call(err) === '[object Error]') { return done(err); } if (err) { if (Object.prototype.toString.call(err) === '[object Object]') { - return done(new Error('done() invoked with non-Error: ' + - JSON.stringify(err))); + return done( + new Error('done() invoked with non-Error: ' + JSON.stringify(err)) + ); } return done(new Error('done() invoked with non-Error: ' + err)); } if (result && utils.isPromise(result)) { - return done(new Error('Resolution method is overspecified. Specify a callback *or* return a Promise; not both.')); + return done( + new Error( + 'Resolution method is overspecified. Specify a callback *or* return a Promise; not both.' + ) + ); } done(); @@ -415,8 +429,11 @@ Runnable.prototype.run = function (fn) { * @returns {Error} a "timeout" error * @private */ -Runnable.prototype._timeoutError = function (ms) { - var msg = 'Timeout of ' + ms + 'ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.'; +Runnable.prototype._timeoutError = function(ms) { + var msg = + 'Timeout of ' + + ms + + 'ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.'; if (this.file) { msg += ' (' + this.file + ')'; } diff --git a/lib/runner.js b/lib/runner.js index d16934142a..565d47d6e5 100644 --- a/lib/runner.js +++ b/lib/runner.js @@ -63,7 +63,7 @@ module.exports = Runner; * @param {boolean} [delay] Whether or not to delay execution of root suite * until ready. */ -function Runner (suite, delay) { +function Runner(suite, delay) { var self = this; this._globals = []; this._abort = false; @@ -72,10 +72,10 @@ function Runner (suite, delay) { this.started = false; this.total = suite.total(); this.failures = 0; - this.on('test end', function (test) { + this.on('test end', function(test) { self.checkGlobals(test); }); - this.on('hook end', function (hook) { + this.on('hook end', function(hook) { self.checkGlobals(hook); }); this._defaultGrep = /.*/; @@ -107,7 +107,7 @@ inherits(Runner, EventEmitter); * @param {boolean} invert * @return {Runner} Runner instance. */ -Runner.prototype.grep = function (re, invert) { +Runner.prototype.grep = function(re, invert) { debug('grep %s', re); this._grep = re; this._invert = invert; @@ -125,11 +125,11 @@ Runner.prototype.grep = function (re, invert) { * @param {Suite} suite * @return {number} */ -Runner.prototype.grepTotal = function (suite) { +Runner.prototype.grepTotal = function(suite) { var self = this; var total = 0; - suite.eachTest(function (test) { + suite.eachTest(function(test) { var match = self._grep.test(test.fullTitle()); if (self._invert) { match = !match; @@ -148,7 +148,7 @@ Runner.prototype.grepTotal = function (suite) { * @return {Array} * @api private */ -Runner.prototype.globalProps = function () { +Runner.prototype.globalProps = function() { var props = Object.keys(global); // non-enumerables @@ -171,7 +171,7 @@ Runner.prototype.globalProps = function () { * @param {Array} arr * @return {Runner} Runner instance. */ -Runner.prototype.globals = function (arr) { +Runner.prototype.globals = function(arr) { if (!arguments.length) { return this._globals; } @@ -185,7 +185,7 @@ Runner.prototype.globals = function (arr) { * * @api private */ -Runner.prototype.checkGlobals = function (test) { +Runner.prototype.checkGlobals = function(test) { if (this.ignoreLeaks) { return; } @@ -207,7 +207,10 @@ Runner.prototype.checkGlobals = function (test) { this._globals = this._globals.concat(leaks); if (leaks.length > 1) { - this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); + this.fail( + test, + new Error('global leaks detected: ' + leaks.join(', ') + '') + ); } else if (leaks.length) { this.fail(test, new Error('global leak detected: ' + leaks[0])); } @@ -220,7 +223,7 @@ Runner.prototype.checkGlobals = function (test) { * @param {Test} test * @param {Error} err */ -Runner.prototype.fail = function (test, err) { +Runner.prototype.fail = function(test, err) { if (test.isPending()) { return; } @@ -229,13 +232,18 @@ Runner.prototype.fail = function (test, err) { test.state = 'failed'; if (!(err instanceof Error || (err && typeof err.message === 'string'))) { - err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); + err = new Error( + 'the ' + + type(err) + + ' ' + + stringify(err) + + ' was thrown, throw an Error :)' + ); } try { - err.stack = (this.fullStackTrace || !err.stack) - ? err.stack - : stackFilter(err.stack); + err.stack = + this.fullStackTrace || !err.stack ? err.stack : stackFilter(err.stack); } catch (ignored) { // some environments do not take kindly to monkeying with the stack } @@ -263,10 +271,11 @@ Runner.prototype.fail = function (test, err) { * @param {Hook} hook * @param {Error} err */ -Runner.prototype.failHook = function (hook, err) { +Runner.prototype.failHook = function(hook, err) { if (hook.ctx && hook.ctx.currentTest) { hook.originalTitle = hook.originalTitle || hook.title; - hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; + hook.title = + hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; } if (this.suite.bail()) { @@ -283,12 +292,12 @@ Runner.prototype.failHook = function (hook, err) { * @param {Function} fn */ -Runner.prototype.hook = function (name, fn) { +Runner.prototype.hook = function(name, fn) { var suite = this.suite; var hooks = suite['_' + name]; var self = this; - function next (i) { + function next(i) { var hook = hooks[i]; if (!hook) { return fn(); @@ -300,12 +309,12 @@ Runner.prototype.hook = function (name, fn) { self.emit('hook', hook); if (!hook.listeners('error').length) { - hook.on('error', function (err) { + hook.on('error', function(err) { self.failHook(hook, err); }); } - hook.run(function (err) { + hook.run(function(err) { var testError = hook.error(); if (testError) { self.fail(self.test, testError); @@ -315,7 +324,7 @@ Runner.prototype.hook = function (name, fn) { if (name === 'beforeEach' || name === 'afterEach') { self.test.pending = true; } else { - suite.tests.forEach(function (test) { + suite.tests.forEach(function(test) { test.pending = true; }); // a pending hook won't be executed twice. @@ -334,7 +343,7 @@ Runner.prototype.hook = function (name, fn) { }); } - Runner.immediately(function () { + Runner.immediately(function() { next(0); }); }; @@ -348,11 +357,11 @@ Runner.prototype.hook = function (name, fn) { * @param {Array} suites * @param {Function} fn */ -Runner.prototype.hooks = function (name, suites, fn) { +Runner.prototype.hooks = function(name, suites, fn) { var self = this; var orig = this.suite; - function next (suite) { + function next(suite) { self.suite = suite; if (!suite) { @@ -360,7 +369,7 @@ Runner.prototype.hooks = function (name, suites, fn) { return fn(); } - self.hook(name, function (err) { + self.hook(name, function(err) { if (err) { var errSuite = self.suite; self.suite = orig; @@ -381,7 +390,7 @@ Runner.prototype.hooks = function (name, suites, fn) { * @param {Function} fn * @api private */ -Runner.prototype.hookUp = function (name, fn) { +Runner.prototype.hookUp = function(name, fn) { var suites = [this.suite].concat(this.parents()).reverse(); this.hooks(name, suites, fn); }; @@ -393,7 +402,7 @@ Runner.prototype.hookUp = function (name, fn) { * @param {Function} fn * @api private */ -Runner.prototype.hookDown = function (name, fn) { +Runner.prototype.hookDown = function(name, fn) { var suites = [this.suite].concat(this.parents()); this.hooks(name, suites, fn); }; @@ -405,7 +414,7 @@ Runner.prototype.hookDown = function (name, fn) { * @return {Array} * @api private */ -Runner.prototype.parents = function () { +Runner.prototype.parents = function() { var suite = this.suite; var suites = []; while (suite.parent) { @@ -421,7 +430,7 @@ Runner.prototype.parents = function () { * @param {Function} fn * @api private */ -Runner.prototype.runTest = function (fn) { +Runner.prototype.runTest = function(fn) { var self = this; var test = this.test; @@ -435,7 +444,7 @@ Runner.prototype.runTest = function (fn) { if (this.asyncOnly) { test.asyncOnly = true; } - test.on('error', function (err) { + test.on('error', function(err) { self.fail(test, err); }); if (this.allowUncaught) { @@ -456,12 +465,12 @@ Runner.prototype.runTest = function (fn) { * @param {Suite} suite * @param {Function} fn */ -Runner.prototype.runTests = function (suite, fn) { +Runner.prototype.runTests = function(suite, fn) { var self = this; var tests = suite.tests.slice(); var test; - function hookErr (_, errSuite, after) { + function hookErr(_, errSuite, after) { // before/after Each hook for errSuite failed: var orig = self.suite; @@ -471,7 +480,7 @@ Runner.prototype.runTests = function (suite, fn) { if (self.suite) { // call hookUp afterEach - self.hookUp('afterEach', function (err2, errSuite2) { + self.hookUp('afterEach', function(err2, errSuite2) { self.suite = orig; // some hooks may fail even now if (err2) { @@ -487,7 +496,7 @@ Runner.prototype.runTests = function (suite, fn) { } } - function next (err, errSuite) { + function next(err, errSuite) { // if we bail after first err if (self.failures && suite._bail) { return fn(); @@ -544,8 +553,8 @@ Runner.prototype.runTests = function (suite, fn) { } // execute test and hook(s) - self.emit('test', self.test = test); - self.hookDown('beforeEach', function (err, errSuite) { + self.emit('test', (self.test = test)); + self.hookDown('beforeEach', function(err, errSuite) { if (test.isPending()) { if (self.forbidPending) { test.isPending = alwaysFalse; @@ -561,7 +570,7 @@ Runner.prototype.runTests = function (suite, fn) { return hookErr(err, errSuite, false); } self.currentRunnable = self.test; - self.runTest(function (err) { + self.runTest(function(err) { test = self.test; if (err) { var retry = test.currentRetry(); @@ -603,7 +612,7 @@ Runner.prototype.runTests = function (suite, fn) { next(); }; -function alwaysFalse () { +function alwaysFalse() { return false; } @@ -614,7 +623,7 @@ function alwaysFalse () { * @param {Suite} suite * @param {Function} fn */ -Runner.prototype.runSuite = function (suite, fn) { +Runner.prototype.runSuite = function(suite, fn) { var i = 0; var self = this; var total = this.grepTotal(suite); @@ -626,9 +635,9 @@ Runner.prototype.runSuite = function (suite, fn) { return fn(); } - this.emit('suite', this.suite = suite); + this.emit('suite', (this.suite = suite)); - function next (errSuite) { + function next(errSuite) { if (errSuite) { // current suite failed on a hook from errSuite if (errSuite === suite) { @@ -654,7 +663,7 @@ Runner.prototype.runSuite = function (suite, fn) { // huge recursive loop and thus a maximum call stack error. // See comment in `this.runTests()` for more information. if (self._grep !== self._defaultGrep) { - Runner.immediately(function () { + Runner.immediately(function() { self.runSuite(curr, next); }); } else { @@ -662,7 +671,7 @@ Runner.prototype.runSuite = function (suite, fn) { } } - function done (errSuite) { + function done(errSuite) { self.suite = suite; self.nextSuite = next; @@ -676,7 +685,7 @@ Runner.prototype.runSuite = function (suite, fn) { // remove reference to test delete self.test; - self.hook('afterAll', function () { + self.hook('afterAll', function() { self.emit('suite end', suite); fn(errSuite); }); @@ -685,7 +694,7 @@ Runner.prototype.runSuite = function (suite, fn) { this.nextSuite = next; - this.hook('beforeAll', function (err) { + this.hook('beforeAll', function(err) { if (err) { return done(); } @@ -699,11 +708,17 @@ Runner.prototype.runSuite = function (suite, fn) { * @param {Error} err * @api private */ -Runner.prototype.uncaught = function (err) { +Runner.prototype.uncaught = function(err) { if (err) { - debug('uncaught exception %s', err === (function () { - return this; - }.call(err)) ? (err.message || err) : err); + debug( + 'uncaught exception %s', + err === + function() { + return this; + }.call(err) + ? err.message || err + : err + ); } else { debug('uncaught undefined exception'); err = undefinedError(); @@ -776,8 +791,8 @@ Runner.prototype.uncaught = function (err) { * * @param {Suite} suite */ -function cleanSuiteReferences (suite) { - function cleanArrReferences (arr) { +function cleanSuiteReferences(suite) { + function cleanArrReferences(arr) { for (var i = 0; i < arr.length; i++) { delete arr[i].fn; } @@ -814,24 +829,24 @@ function cleanSuiteReferences (suite) { * @param {Function} fn * @return {Runner} Runner instance. */ -Runner.prototype.run = function (fn) { +Runner.prototype.run = function(fn) { var self = this; var rootSuite = this.suite; - fn = fn || function () {}; + fn = fn || function() {}; - function uncaught (err) { + function uncaught(err) { self.uncaught(err); } - function start () { + function start() { // If there is an `only` filter if (hasOnly(rootSuite)) { filterOnly(rootSuite); } self.started = true; self.emit('start'); - self.runSuite(rootSuite, function () { + self.runSuite(rootSuite, function() { debug('finished running'); self.emit('end'); }); @@ -843,7 +858,7 @@ Runner.prototype.run = function (fn) { this.on('suite end', cleanSuiteReferences); // callback - this.on('end', function () { + this.on('end', function() { debug('end'); process.removeListener('uncaughtException', uncaught); fn(self.failures); @@ -872,7 +887,7 @@ Runner.prototype.run = function (fn) { * @api public * @return {Runner} Runner instance. */ -Runner.prototype.abort = function () { +Runner.prototype.abort = function() { debug('aborting'); this._abort = true; @@ -886,7 +901,7 @@ Runner.prototype.abort = function () { * @returns {Boolean} * @api private */ -function filterOnly (suite) { +function filterOnly(suite) { if (suite._onlyTests.length) { // If the suite contains `only` tests, run those and ignore any nested suites. suite.tests = suite._onlyTests; @@ -894,7 +909,7 @@ function filterOnly (suite) { } else { // Otherwise, do not run any of the tests in this suite. suite.tests = []; - suite._onlySuites.forEach(function (onlySuite) { + suite._onlySuites.forEach(function(onlySuite) { // If there are other `only` tests/suites nested in the current `only` suite, then filter that `only` suite. // Otherwise, all of the tests on this `only` suite should be run, so don't filter it. if (hasOnly(onlySuite)) { @@ -902,8 +917,10 @@ function filterOnly (suite) { } }); // Run the `only` suites, as well as any other suites that have `only` tests/suites as descendants. - suite.suites = suite.suites.filter(function (childSuite) { - return suite._onlySuites.indexOf(childSuite) !== -1 || filterOnly(childSuite); + suite.suites = suite.suites.filter(function(childSuite) { + return ( + suite._onlySuites.indexOf(childSuite) !== -1 || filterOnly(childSuite) + ); }); } // Keep the suite only if there is something to run @@ -917,8 +934,12 @@ function filterOnly (suite) { * @returns {Boolean} * @api private */ -function hasOnly (suite) { - return suite._onlyTests.length || suite._onlySuites.length || suite.suites.some(hasOnly); +function hasOnly(suite) { + return ( + suite._onlyTests.length || + suite._onlySuites.length || + suite.suites.some(hasOnly) + ); } /** @@ -929,8 +950,8 @@ function hasOnly (suite) { * @param {Array} globals * @return {Array} */ -function filterLeaks (ok, globals) { - return globals.filter(function (key) { +function filterLeaks(ok, globals) { + return globals.filter(function(key) { // Firefox and Chrome exposes iframes as index inside the window object if (/^\d+/.test(key)) { return false; @@ -939,13 +960,13 @@ function filterLeaks (ok, globals) { // in firefox // if runner runs in an iframe, this iframe's window.getInterface method // not init at first it is assigned in some seconds - if (global.navigator && (/^getInterface/).test(key)) { + if (global.navigator && /^getInterface/.test(key)) { return false; } // an iframe could be approached by window[iframeIndex] // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak - if (global.navigator && (/^\d+/).test(key)) { + if (global.navigator && /^\d+/.test(key)) { return false; } @@ -954,7 +975,7 @@ function filterLeaks (ok, globals) { return false; } - var matched = ok.filter(function (ok) { + var matched = ok.filter(function(ok) { if (~ok.indexOf('*')) { return key.indexOf(ok.split('*')[0]) === 0; } @@ -970,16 +991,16 @@ function filterLeaks (ok, globals) { * @return {Array} * @api private */ -function extraGlobals () { +function extraGlobals() { if (typeof process === 'object' && typeof process.version === 'string') { var parts = process.version.split('.'); - var nodeVersion = parts.reduce(function (a, v) { - return a << 8 | v; + var nodeVersion = parts.reduce(function(a, v) { + return (a << 8) | v; }); // 'errno' was renamed to process._errno in v0.9.11. - if (nodeVersion < 0x00090B) { + if (nodeVersion < 0x00090b) { return ['errno']; } } diff --git a/lib/suite.js b/lib/suite.js index f0db595973..91832ba3ad 100644 --- a/lib/suite.js +++ b/lib/suite.js @@ -31,7 +31,7 @@ exports = module.exports = Suite; * @param {string} title * @return {Suite} */ -exports.create = function (parent, title) { +exports.create = function(parent, title) { var suite = new Suite(title, parent.ctx); suite.parent = parent; title = suite.fullTitle(); @@ -48,12 +48,16 @@ exports.create = function (parent, title) { * @param {string} title * @param {Context} parentContext */ -function Suite (title, parentContext) { +function Suite(title, parentContext) { if (!utils.isString(title)) { - throw new Error('Suite `title` should be a "string" but "' + typeof title + '" was given instead.'); + throw new Error( + 'Suite `title` should be a "string" but "' + + typeof title + + '" was given instead.' + ); } this.title = title; - function Context () {} + function Context() {} Context.prototype = parentContext; this.ctx = new Context(); this.suites = []; @@ -85,7 +89,7 @@ inherits(Suite, EventEmitter); * @api private * @return {Suite} */ -Suite.prototype.clone = function () { +Suite.prototype.clone = function() { var suite = new Suite(this.title); debug('clone'); suite.ctx = this.ctx; @@ -104,7 +108,7 @@ Suite.prototype.clone = function () { * @param {number|string} ms * @return {Suite|number} for chaining */ -Suite.prototype.timeout = function (ms) { +Suite.prototype.timeout = function(ms) { if (!arguments.length) { return this._timeout; } @@ -126,7 +130,7 @@ Suite.prototype.timeout = function (ms) { * @param {number|string} n * @return {Suite|number} for chaining */ -Suite.prototype.retries = function (n) { +Suite.prototype.retries = function(n) { if (!arguments.length) { return this._retries; } @@ -136,13 +140,13 @@ Suite.prototype.retries = function (n) { }; /** - * Set or get timeout to `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Suite|boolean} self or enabled - */ -Suite.prototype.enableTimeouts = function (enabled) { + * Set or get timeout to `enabled`. + * + * @api private + * @param {boolean} enabled + * @return {Suite|boolean} self or enabled + */ +Suite.prototype.enableTimeouts = function(enabled) { if (!arguments.length) { return this._enableTimeouts; } @@ -158,7 +162,7 @@ Suite.prototype.enableTimeouts = function (enabled) { * @param {number|string} ms * @return {Suite|number} for chaining */ -Suite.prototype.slow = function (ms) { +Suite.prototype.slow = function(ms) { if (!arguments.length) { return this._slow; } @@ -177,7 +181,7 @@ Suite.prototype.slow = function (ms) { * @param {boolean} bail * @return {Suite|number} for chaining */ -Suite.prototype.bail = function (bail) { +Suite.prototype.bail = function(bail) { if (!arguments.length) { return this._bail; } @@ -191,7 +195,7 @@ Suite.prototype.bail = function (bail) { * * @api private */ -Suite.prototype.isPending = function () { +Suite.prototype.isPending = function() { return this.pending || (this.parent && this.parent.isPending()); }; @@ -202,7 +206,7 @@ Suite.prototype.isPending = function () { * @param {Function} fn - Hook callback * @returns {Hook} A new hook */ -Suite.prototype._createHook = function (title, fn) { +Suite.prototype._createHook = function(title, fn) { var hook = new Hook(title, fn); hook.parent = this; hook.timeout(this.timeout()); @@ -222,7 +226,7 @@ Suite.prototype._createHook = function (title, fn) { * @param {Function} fn * @return {Suite} for chaining */ -Suite.prototype.beforeAll = function (title, fn) { +Suite.prototype.beforeAll = function(title, fn) { if (this.isPending()) { return this; } @@ -246,7 +250,7 @@ Suite.prototype.beforeAll = function (title, fn) { * @param {Function} fn * @return {Suite} for chaining */ -Suite.prototype.afterAll = function (title, fn) { +Suite.prototype.afterAll = function(title, fn) { if (this.isPending()) { return this; } @@ -270,7 +274,7 @@ Suite.prototype.afterAll = function (title, fn) { * @param {Function} fn * @return {Suite} for chaining */ -Suite.prototype.beforeEach = function (title, fn) { +Suite.prototype.beforeEach = function(title, fn) { if (this.isPending()) { return this; } @@ -294,7 +298,7 @@ Suite.prototype.beforeEach = function (title, fn) { * @param {Function} fn * @return {Suite} for chaining */ -Suite.prototype.afterEach = function (title, fn) { +Suite.prototype.afterEach = function(title, fn) { if (this.isPending()) { return this; } @@ -317,7 +321,7 @@ Suite.prototype.afterEach = function (title, fn) { * @param {Suite} suite * @return {Suite} for chaining */ -Suite.prototype.addSuite = function (suite) { +Suite.prototype.addSuite = function(suite) { suite.parent = this; suite.timeout(this.timeout()); suite.retries(this.retries()); @@ -336,7 +340,7 @@ Suite.prototype.addSuite = function (suite) { * @param {Test} test * @return {Suite} for chaining */ -Suite.prototype.addTest = function (test) { +Suite.prototype.addTest = function(test) { test.parent = this; test.timeout(this.timeout()); test.retries(this.retries()); @@ -357,7 +361,7 @@ Suite.prototype.addTest = function (test) { * @api public * @return {string} */ -Suite.prototype.fullTitle = function () { +Suite.prototype.fullTitle = function() { return this.titlePath().join(' '); }; @@ -370,7 +374,7 @@ Suite.prototype.fullTitle = function () { * @api public * @return {string} */ -Suite.prototype.titlePath = function () { +Suite.prototype.titlePath = function() { var result = []; if (this.parent) { result = result.concat(this.parent.titlePath()); @@ -389,10 +393,12 @@ Suite.prototype.titlePath = function () { * @api public * @return {number} */ -Suite.prototype.total = function () { - return this.suites.reduce(function (sum, suite) { - return sum + suite.total(); - }, 0) + this.tests.length; +Suite.prototype.total = function() { + return ( + this.suites.reduce(function(sum, suite) { + return sum + suite.total(); + }, 0) + this.tests.length + ); }; /** @@ -403,9 +409,9 @@ Suite.prototype.total = function () { * @param {Function} fn * @return {Suite} */ -Suite.prototype.eachTest = function (fn) { +Suite.prototype.eachTest = function(fn) { this.tests.forEach(fn); - this.suites.forEach(function (suite) { + this.suites.forEach(function(suite) { suite.eachTest(fn); }); return this; @@ -414,7 +420,7 @@ Suite.prototype.eachTest = function (fn) { /** * This will run the root suite if we happen to be running in delayed mode. */ -Suite.prototype.run = function run () { +Suite.prototype.run = function run() { if (this.root) { this.emit('run'); } diff --git a/lib/test.js b/lib/test.js index 0b59ea82cd..d8233a3571 100644 --- a/lib/test.js +++ b/lib/test.js @@ -13,9 +13,13 @@ module.exports = Test; * @param {String} title * @param {Function} fn */ -function Test (title, fn) { +function Test(title, fn) { if (!isString(title)) { - throw new Error('Test `title` should be a "string" but "' + typeof title + '" was given instead.'); + throw new Error( + 'Test `title` should be a "string" but "' + + typeof title + + '" was given instead.' + ); } Runnable.call(this, title, fn); this.pending = !fn; @@ -27,7 +31,7 @@ function Test (title, fn) { */ utils.inherits(Test, Runnable); -Test.prototype.clone = function () { +Test.prototype.clone = function() { var test = new Test(this.title, this.fn); test.timeout(this.timeout()); test.slow(this.slow()); diff --git a/lib/utils.js b/lib/utils.js index d6bb2bd8e9..37282d3ce7 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -30,8 +30,8 @@ exports.inherits = require('util').inherits; * @param {string} html * @return {string} */ -exports.escape = function (html) { - return he.encode(String(html), { useNamedReferences: false }); +exports.escape = function(html) { + return he.encode(String(html), {useNamedReferences: false}); }; /** @@ -41,7 +41,7 @@ exports.escape = function (html) { * @param {Object} obj * @return {boolean} */ -exports.isString = function (obj) { +exports.isString = function(obj) { return typeof obj === 'string'; }; @@ -53,11 +53,11 @@ exports.isString = function (obj) { * @param {Array} files * @param {Function} fn */ -exports.watch = function (files, fn) { - var options = { interval: 100 }; - files.forEach(function (file) { +exports.watch = function(files, fn) { + var options = {interval: 100}; + files.forEach(function(file) { debug('file %s', file); - fs.watchFile(file, options, function (curr, prev) { + fs.watchFile(file, options, function(curr, prev) { if (prev.mtime < curr.mtime) { fn(file); } @@ -72,7 +72,7 @@ exports.watch = function (files, fn) { * @param {string} path * @return {boolean} */ -function ignored (path) { +function ignored(path) { return !~ignore.indexOf(path); } @@ -85,15 +85,16 @@ function ignored (path) { * @param {Array} [ret=[]] * @return {Array} */ -exports.files = function (dir, ext, ret) { +exports.files = function(dir, ext, ret) { ret = ret || []; ext = ext || ['js']; var re = new RegExp('\\.(' + ext.join('|') + ')$'); - fs.readdirSync(dir) + fs + .readdirSync(dir) .filter(ignored) - .forEach(function (path) { + .forEach(function(path) { path = join(dir, path); if (fs.lstatSync(path).isDirectory()) { exports.files(path, ext, ret); @@ -112,7 +113,7 @@ exports.files = function (dir, ext, ret) { * @param {string} str * @return {string} */ -exports.slug = function (str) { +exports.slug = function(str) { return str .toLowerCase() .replace(/ +/g, '-') @@ -125,15 +126,22 @@ exports.slug = function (str) { * @param {string} str * @return {string} */ -exports.clean = function (str) { +exports.clean = function(str) { str = str - .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') + .replace(/\r\n?|[\n\u2028\u2029]/g, '\n') + .replace(/^\uFEFF/, '') // (traditional)-> space/name parameters body (lambda)-> parameters body multi-statement/single keep body content - .replace(/^function(?:\s*|\s+[^(]*)\([^)]*\)\s*\{((?:.|\n)*?)\s*\}$|^\([^)]*\)\s*=>\s*(?:\{((?:.|\n)*?)\s*\}|((?:.|\n)*))$/, '$1$2$3'); + .replace( + /^function(?:\s*|\s+[^(]*)\([^)]*\)\s*\{((?:.|\n)*?)\s*\}$|^\([^)]*\)\s*=>\s*(?:\{((?:.|\n)*?)\s*\}|((?:.|\n)*))$/, + '$1$2$3' + ); var spaces = str.match(/^\n?( *)/)[1].length; var tabs = str.match(/^\n?(\t*)/)[1].length; - var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs || spaces) + '}', 'gm'); + var re = new RegExp( + '^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs || spaces) + '}', + 'gm' + ); str = str.replace(re, ''); @@ -147,17 +155,20 @@ exports.clean = function (str) { * @param {string} qs * @return {Object} */ -exports.parseQuery = function (qs) { - return qs.replace('?', '').split('&').reduce(function (obj, pair) { - var i = pair.indexOf('='); - var key = pair.slice(0, i); - var val = pair.slice(++i); - - // Due to how the URLSearchParams API treats spaces - obj[key] = decodeURIComponent(val.replace(/\+/g, '%20')); - - return obj; - }, {}); +exports.parseQuery = function(qs) { + return qs + .replace('?', '') + .split('&') + .reduce(function(obj, pair) { + var i = pair.indexOf('='); + var key = pair.slice(0, i); + var val = pair.slice(++i); + + // Due to how the URLSearchParams API treats spaces + obj[key] = decodeURIComponent(val.replace(/\+/g, '%20')); + + return obj; + }, {}); }; /** @@ -167,7 +178,7 @@ exports.parseQuery = function (qs) { * @param {string} js * @return {string} */ -function highlight (js) { +function highlight(js) { return js .replace(//g, '>') @@ -175,8 +186,14 @@ function highlight (js) { .replace(/('.*?')/gm, '$1') .replace(/(\d+\.\d+)/gm, '$1') .replace(/(\d+)/gm, '$1') - .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') - .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1'); + .replace( + /\bnew[ \t]+(\w+)/gm, + 'new $1' + ) + .replace( + /\b(function|new|throw|return|var|if|else)\b/gm, + '$1' + ); } /** @@ -185,7 +202,7 @@ function highlight (js) { * @api private * @param {string} name */ -exports.highlightTags = function (name) { +exports.highlightTags = function(name) { var code = document.getElementById('mocha').getElementsByTagName(name); for (var i = 0, len = code.length; i < len; ++i) { code[i].innerHTML = highlight(code[i].innerHTML); @@ -206,7 +223,7 @@ exports.highlightTags = function (name) { * @param {string} typeHint The type of the value * @returns {string} */ -function emptyRepresentation (value, typeHint) { +function emptyRepresentation(value, typeHint) { switch (typeHint) { case 'function': return '[Function]'; @@ -240,7 +257,7 @@ function emptyRepresentation (value, typeHint) { * type(global) // 'global' * type(new String('foo') // 'object' */ -var type = exports.type = function type (value) { +var type = (exports.type = function type(value) { if (value === undefined) { return 'undefined'; } else if (value === null) { @@ -248,10 +265,11 @@ var type = exports.type = function type (value) { } else if (Buffer.isBuffer(value)) { return 'buffer'; } - return Object.prototype.toString.call(value) + return Object.prototype.toString + .call(value) .replace(/^\[.+\s(.+?)]$/, '$1') .toLowerCase(); -}; +}); /** * Stringify `value`. Different behavior depending on type of value: @@ -268,21 +286,23 @@ var type = exports.type = function type (value) { * @param {*} value * @return {string} */ -exports.stringify = function (value) { +exports.stringify = function(value) { var typeHint = type(value); if (!~['object', 'array', 'function'].indexOf(typeHint)) { if (typeHint === 'buffer') { var json = Buffer.prototype.toJSON.call(value); // Based on the toJSON result - return jsonStringify(json.data && json.type ? json.data : json, 2) - .replace(/,(\n|$)/g, '$1'); + return jsonStringify( + json.data && json.type ? json.data : json, + 2 + ).replace(/,(\n|$)/g, '$1'); } // IE7/IE8 has a bizarre String constructor; needs to be coerced // into an array and back to obj. if (typeHint === 'string' && typeof value === 'object') { - value = value.split('').reduce(function (acc, char, idx) { + value = value.split('').reduce(function(acc, char, idx) { acc[idx] = char; return acc; }, {}); @@ -294,7 +314,10 @@ exports.stringify = function (value) { for (var prop in value) { if (Object.prototype.hasOwnProperty.call(value, prop)) { - return jsonStringify(exports.canonicalize(value, null, typeHint), 2).replace(/,(\n|$)/g, '$1'); + return jsonStringify( + exports.canonicalize(value, null, typeHint), + 2 + ).replace(/,(\n|$)/g, '$1'); } } @@ -310,7 +333,7 @@ exports.stringify = function (value) { * @param {number=} depth * @returns {*} */ -function jsonStringify (object, spaces, depth) { +function jsonStringify(object, spaces, depth) { if (typeof spaces === 'undefined') { // primitive types return _stringify(object); @@ -320,13 +343,16 @@ function jsonStringify (object, spaces, depth) { var space = spaces * depth; var str = Array.isArray(object) ? '[' : '{'; var end = Array.isArray(object) ? ']' : '}'; - var length = typeof object.length === 'number' ? object.length : Object.keys(object).length; + var length = + typeof object.length === 'number' + ? object.length + : Object.keys(object).length; // `.repeat()` polyfill - function repeat (s, n) { + function repeat(s, n) { return new Array(n).join(s); } - function _stringify (val) { + function _stringify(val) { switch (type(val)) { case 'null': case 'undefined': @@ -340,9 +366,10 @@ function jsonStringify (object, spaces, depth) { case 'regexp': case 'symbol': case 'number': - val = val === 0 && (1 / val) === -Infinity // `-0` - ? '-0' - : val.toString(); + val = + val === 0 && 1 / val === -Infinity // `-0` + ? '-0' + : val.toString(); break; case 'date': var sDate = isNaN(val.getTime()) ? val.toString() : val.toISOString(); @@ -355,9 +382,10 @@ function jsonStringify (object, spaces, depth) { val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; break; default: - val = (val === '[Function]' || val === '[Circular]') - ? val - : JSON.stringify(val); // string + val = + val === '[Function]' || val === '[Circular]' + ? val + : JSON.stringify(val); // string } return val; } @@ -367,15 +395,19 @@ function jsonStringify (object, spaces, depth) { continue; // not my business } --length; - str += '\n ' + repeat(' ', space) + + str += + '\n ' + + repeat(' ', space) + (Array.isArray(object) ? '' : '"' + i + '": ') + // key _stringify(object[i]) + // value (length ? ',' : ''); // comma } - return str + + return ( + str + // [], {} - (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end) + ); } /** @@ -397,13 +429,13 @@ function jsonStringify (object, spaces, depth) { * @param {string} [typeHint] Type hint * @return {(Object|Array|Function|string|undefined)} */ -exports.canonicalize = function canonicalize (value, stack, typeHint) { +exports.canonicalize = function canonicalize(value, stack, typeHint) { var canonicalizedObj; /* eslint-disable no-unused-vars */ var prop; /* eslint-enable no-unused-vars */ typeHint = typeHint || type(value); - function withStack (value, fn) { + function withStack(value, fn) { stack.push(value); fn(); stack.pop(); @@ -422,8 +454,8 @@ exports.canonicalize = function canonicalize (value, stack, typeHint) { canonicalizedObj = value; break; case 'array': - withStack(value, function () { - canonicalizedObj = value.map(function (item) { + withStack(value, function() { + canonicalizedObj = value.map(function(item) { return exports.canonicalize(item, stack); }); }); @@ -442,10 +474,12 @@ exports.canonicalize = function canonicalize (value, stack, typeHint) { /* falls through */ case 'object': canonicalizedObj = canonicalizedObj || {}; - withStack(value, function () { - Object.keys(value).sort().forEach(function (key) { - canonicalizedObj[key] = exports.canonicalize(value[key], stack); - }); + withStack(value, function() { + Object.keys(value) + .sort() + .forEach(function(key) { + canonicalizedObj[key] = exports.canonicalize(value[key], stack); + }); }); break; case 'date': @@ -473,7 +507,7 @@ exports.canonicalize = function canonicalize (value, stack, typeHint) { * @param {boolean} recursive Whether or not to recurse into subdirectories. * @return {string[]} An array of paths. */ -exports.lookupFiles = function lookupFiles (filepath, extensions, recursive) { +exports.lookupFiles = function lookupFiles(filepath, extensions, recursive) { var files = []; if (!fs.existsSync(filepath)) { @@ -498,7 +532,7 @@ exports.lookupFiles = function lookupFiles (filepath, extensions, recursive) { return; } - fs.readdirSync(filepath).forEach(function (file) { + fs.readdirSync(filepath).forEach(function(file) { file = path.join(filepath, file); try { var stat = fs.statSync(file); @@ -528,8 +562,10 @@ exports.lookupFiles = function lookupFiles (filepath, extensions, recursive) { * @return {Error} */ -exports.undefinedError = function () { - return new Error('Caught undefined error, did you throw without specifying what?'); +exports.undefinedError = function() { + return new Error( + 'Caught undefined error, did you throw without specifying what?' + ); }; /** @@ -539,7 +575,7 @@ exports.undefinedError = function () { * @return {Error} */ -exports.getError = function (err) { +exports.getError = function(err) { return err || exports.undefinedError(); }; @@ -552,9 +588,9 @@ exports.getError = function (err) { * (i.e: strip Mocha and internal node functions from stack trace). * @returns {Function} */ -exports.stackTraceFilter = function () { +exports.stackTraceFilter = function() { // TODO: Replace with `process.browser` - var is = typeof document === 'undefined' ? { node: true } : { browser: true }; + var is = typeof document === 'undefined' ? {node: true} : {browser: true}; var slash = path.sep; var cwd; if (is.node) { @@ -562,30 +598,35 @@ exports.stackTraceFilter = function () { } else { cwd = (typeof location === 'undefined' ? window.location - : location).href.replace(/\/[^/]*$/, '/'); + : location + ).href.replace(/\/[^/]*$/, '/'); slash = '/'; } - function isMochaInternal (line) { - return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) || - (~line.indexOf('node_modules' + slash + 'mocha.js')) || - (~line.indexOf('bower_components' + slash + 'mocha.js')) || - (~line.indexOf(slash + 'mocha.js')); + function isMochaInternal(line) { + return ( + ~line.indexOf('node_modules' + slash + 'mocha' + slash) || + ~line.indexOf('node_modules' + slash + 'mocha.js') || + ~line.indexOf('bower_components' + slash + 'mocha.js') || + ~line.indexOf(slash + 'mocha.js') + ); } - function isNodeInternal (line) { - return (~line.indexOf('(timers.js:')) || - (~line.indexOf('(events.js:')) || - (~line.indexOf('(node.js:')) || - (~line.indexOf('(module.js:')) || - (~line.indexOf('GeneratorFunctionPrototype.next (native)')) || - false; + function isNodeInternal(line) { + return ( + ~line.indexOf('(timers.js:') || + ~line.indexOf('(events.js:') || + ~line.indexOf('(node.js:') || + ~line.indexOf('(module.js:') || + ~line.indexOf('GeneratorFunctionPrototype.next (native)') || + false + ); } - return function (stack) { + return function(stack) { stack = stack.split('\n'); - stack = stack.reduce(function (list, line) { + stack = stack.reduce(function(list, line) { if (isMochaInternal(line)) { return list; } @@ -613,7 +654,7 @@ exports.stackTraceFilter = function () { * @param {*} value * @returns {boolean} Whether or not `value` is a Promise */ -exports.isPromise = function isPromise (value) { +exports.isPromise = function isPromise(value) { return typeof value === 'object' && typeof value.then === 'function'; }; @@ -621,4 +662,4 @@ exports.isPromise = function isPromise (value) { * It's a noop. * @api */ -exports.noop = function () {}; +exports.noop = function() {}; diff --git a/package-lock.json b/package-lock.json index 3cbbbb3abc..46a80c0948 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "version": "7.0.0-beta.44", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, "requires": { "@babel/highlight": "7.0.0-beta.44" } @@ -16,10 +17,11 @@ "version": "7.0.0-beta.44", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, "requires": { - "chalk": "2.1.0", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "@mocha/docdash": { @@ -34,19 +36,21 @@ "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=", "dev": true, "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "accepts": { "version": "1.3.3", @@ -54,7 +58,7 @@ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "dev": true, "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.11", "negotiator": "0.6.1" } }, @@ -70,21 +74,23 @@ "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.4" } }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true } } }, @@ -106,8 +112,8 @@ "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", "dev": true, "requires": { - "extend": "3.0.1", - "semver": "5.0.3" + "extend": "~3.0.0", + "semver": "~5.0.1" }, "dependencies": { "semver": { @@ -122,19 +128,21 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", + "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "json-schema-traverse": "^0.3.0", + "json-stable-stringify": "^1.0.1" }, "dependencies": { "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } } } @@ -142,7 +150,8 @@ "ajv-keywords": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -162,13 +171,14 @@ "integrity": "sha1-yy+ZEcqAJPKzTGk7f9ZFQu5BYYk=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true }, "ansi-gray": { "version": "0.1.1", @@ -191,12 +201,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "ansi-wrap": { "version": "0.1.0", @@ -207,7 +219,8 @@ "any-observable": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", - "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=" + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", + "dev": true }, "anymatch": { "version": "1.3.2", @@ -215,14 +228,15 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "app-root-path": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", - "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=" + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", + "dev": true }, "aproba": { "version": "1.2.0", @@ -237,7 +251,7 @@ "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", "dev": true, "requires": { - "file-type": "3.9.0" + "file-type": "^3.1.0" } }, "archiver": { @@ -246,15 +260,15 @@ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "async": "2.5.0", - "buffer-crc32": "0.2.13", - "glob": "7.1.2", - "lodash": "4.17.4", - "readable-stream": "2.3.3", - "tar-stream": "1.5.4", - "walkdir": "0.0.11", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" } }, "archiver-utils": { @@ -263,12 +277,12 @@ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "dev": true, "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lazystream": "1.0.0", - "lodash": "4.17.4", - "normalize-path": "2.1.1", - "readable-stream": "2.3.3" + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "are-we-there-yet": { @@ -278,35 +292,39 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, "array-differ": { "version": "1.0.0", @@ -317,7 +335,8 @@ "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true }, "array-filter": { "version": "0.0.1", @@ -365,19 +384,22 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, "arraybuffer.slice": { "version": "0.0.6", @@ -388,12 +410,14 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, "asn1.js": { "version": "4.9.1", @@ -401,9 +425,9 @@ "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -418,7 +442,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assetgraph": { "version": "3.13.2", @@ -426,41 +451,41 @@ "integrity": "sha512-kvn2LBmTg24PNSxckmwu1rDDVN2n861fRlU8v7H2cBCPwSdylCpTUX5GHRIshSZjqshlVAtMDwf40/i/noVWHg==", "dev": true, "requires": { - "bluebird": "3.5.0", + "bluebird": "^3.5.0", "capitalize": "1.0.0", - "chalk": "1.1.3", - "createerror": "1.3.0", + "chalk": "^1.1.3", + "createerror": "^1.1.0", "css-font-parser": "0.2.1", "css-font-weight-names": "0.2.1", "css-list-helpers": "1.0.1", - "cssnano": "3.10.0", - "esanimate": "1.1.0", - "escodegen": "1.9.0", - "esprima": "3.1.3", - "espurify": "1.7.0", - "estraverse": "4.2.0", - "gettemporaryfilepath": "1.0.0", - "glob": "7.1.2", - "html-minifier": "3.5.8", + "cssnano": "^3.7.4", + "esanimate": "^1.1.0", + "escodegen": "^1.8.0", + "esprima": "^3.1.3", + "espurify": "^1.7.0", + "estraverse": "^4.2.0", + "gettemporaryfilepath": "^1.0.0", + "glob": "^7.0.5", + "html-minifier": "^3.5.5", "imageinfo": "1.0.4", "jsdom": "9.12.0", - "lodash": "4.17.4", + "lodash": "^4.11.2", "memoizesync": "1.0.0", - "mkdirp": "0.5.1", - "normalizeurl": "1.0.0", - "perfectionist": "2.4.0", - "postcss": "6.0.15", - "read-pkg-up": "2.0.0", - "repeat-string": "1.6.1", - "schemes": "1.1.1", - "semver": "5.3.0", - "source-map": "0.5.7", + "mkdirp": "^0.5.1", + "normalizeurl": "^1.0.0", + "perfectionist": "^2.4.0", + "postcss": "~6.0.1", + "read-pkg-up": "^2.0.0", + "repeat-string": "^1.5.4", + "schemes": "^1.0.1", + "semver": "^5.3.0", + "source-map": "^0.5.6", "sourcemap-to-ast": "0.0.2", "specificity": "0.3.0", - "teepee": "2.31.1", - "uglify-js": "3.3.4", - "urltools": "0.3.5", - "xmldom": "0.1.27" + "teepee": "^2.28.0", + "uglify-js": "^3.3.4", + "urltools": "^0.3.5", + "xmldom": "^0.1.27" }, "dependencies": { "chalk": { @@ -469,11 +494,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "esprima": { @@ -488,7 +513,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -509,9 +534,9 @@ "integrity": "sha1-YcEssnhf6xf/tAacmXLtfgDHW5Y=", "dev": true, "requires": { - "glob": "7.1.2", - "underscore": "1.8.3", - "urijs": "1.19.0" + "glob": "^7.0.3", + "underscore": "^1.8.3", + "urijs": "^1.18.2" } } } @@ -524,22 +549,22 @@ "requires": { "assetgraph": "3.13.2", "assetgraph-sprite": "2.0.0", - "bluebird": "3.5.0", + "bluebird": "^3.5.0", "browserslist": "2.1.4", - "chalk": "1.1.3", - "esanimate": "1.1.0", - "escodegen": "1.9.0", - "estraverse": "4.2.0", + "chalk": "^1.1.3", + "esanimate": "^1.1.0", + "escodegen": "^1.8.0", + "estraverse": "^4.2.0", "express-processimage": "7.4.0", - "extend": "3.0.1", - "histogram": "3.0.0", + "extend": "^3.0.0", + "histogram": "^3.0.0", "jpegtran": "1.0.5", - "lodash": "4.17.4", + "lodash": "^4.14.1", "memoizesync": "1.0.0", "node-zopfli": "2.0.2", "optimist": "0.6.1", "optipng": "1.1.0", - "passerror": "1.1.1", + "passerror": "^1.1.1", "pngcrush": "1.1.1", "pngquant": "1.3.0", "urltools": "0.3.1" @@ -551,11 +576,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -564,7 +589,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -592,7 +617,8 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true }, "astw": { "version": "2.2.0", @@ -600,7 +626,7 @@ "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.3" } }, "async": { @@ -609,7 +635,7 @@ "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.14.0" } }, "async-each": { @@ -627,17 +653,20 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==" + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "dev": true }, "autolinker": { "version": "0.15.3", @@ -651,12 +680,12 @@ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000784", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" }, "dependencies": { "browserslist": { @@ -665,8 +694,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000784", - "electron-to-chromium": "1.3.30" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } }, "chalk": { @@ -675,11 +704,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -702,10 +731,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -714,7 +743,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -723,7 +752,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -731,47 +760,53 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -779,9 +814,10 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "backo2": { @@ -799,64 +835,72 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.0", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -882,9 +926,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "beeper": { @@ -908,13 +953,13 @@ "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", "dev": true, "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "download": "4.4.3", - "exec-series": "1.0.3", - "rimraf": "2.6.2", - "tempfile": "1.1.1", - "url-regex": "3.2.0" + "archive-type": "^3.0.1", + "decompress": "^3.0.0", + "download": "^4.1.2", + "exec-series": "^1.0.0", + "rimraf": "^2.2.6", + "tempfile": "^1.0.0", + "url-regex": "^3.0.0" } }, "bin-check": { @@ -923,7 +968,7 @@ "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", "dev": true, "requires": { - "executable": "1.1.0" + "executable": "^1.0.0" } }, "bin-version": { @@ -932,7 +977,7 @@ "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", "dev": true, "requires": { - "find-versions": "1.2.1" + "find-versions": "^1.0.0" } }, "bin-version-check": { @@ -941,10 +986,10 @@ "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", "dev": true, "requires": { - "bin-version": "1.0.4", - "minimist": "1.2.0", - "semver": "4.3.6", - "semver-truncate": "1.1.2" + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" }, "dependencies": { "minimist": { @@ -967,12 +1012,12 @@ "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", "dev": true, "requires": { - "bin-check": "2.0.0", - "bin-version-check": "2.1.0", - "download": "4.4.3", - "each-async": "1.1.1", - "lazy-req": "1.1.0", - "os-filter-obj": "1.0.3" + "bin-check": "^2.0.0", + "bin-version-check": "^2.1.0", + "download": "^4.0.0", + "each-async": "^1.1.1", + "lazy-req": "^1.0.0", + "os-filter-obj": "^1.0.0" } }, "binary-extensions": { @@ -987,7 +1032,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.5" } }, "blob": { @@ -1002,7 +1047,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "bluebird": { @@ -1024,15 +1069,15 @@ "dev": true, "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.1", - "http-errors": "1.6.2", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "~1.6.15" }, "dependencies": { "debug": { @@ -1049,14 +1094,16 @@ "boolify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/boolify/-/boolify-1.0.1.tgz", - "integrity": "sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=" + "integrity": "sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=", + "dev": true }, "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "brace-expansion": { @@ -1064,7 +1111,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1072,10 +1119,11 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "brorand": { @@ -1090,22 +1138,24 @@ "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", "dev": true, "requires": { - "JSONStream": "1.3.1", - "combine-source-map": "0.7.2", - "defined": "1.0.0", - "through2": "2.0.3", - "umd": "3.0.1" + "JSONStream": "^1.0.3", + "combine-source-map": "~0.7.1", + "defined": "^1.0.0", + "through2": "^2.0.0", + "umd": "^3.0.0" } }, "browser-process-hrtime": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", - "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=" + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true }, "browser-resolve": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, "requires": { "resolve": "1.1.7" }, @@ -1113,14 +1163,15 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true } } }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=" + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, "browserify": { "version": "14.4.0", @@ -1128,53 +1179,53 @@ "integrity": "sha1-CJo0Y69Y0OSNjNQHCz90ZU1avKk=", "dev": true, "requires": { - "JSONStream": "1.3.1", - "assert": "1.4.1", - "browser-pack": "6.0.2", - "browser-resolve": "1.11.2", - "browserify-zlib": "0.1.4", - "buffer": "5.0.7", - "cached-path-relative": "1.0.1", - "concat-stream": "1.5.2", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "defined": "1.0.0", - "deps-sort": "2.0.0", - "domain-browser": "1.1.7", - "duplexer2": "0.1.4", - "events": "1.1.1", - "glob": "7.1.2", - "has": "1.0.1", - "htmlescape": "1.1.1", - "https-browserify": "1.0.0", - "inherits": "2.0.3", - "insert-module-globals": "7.0.1", - "labeled-stream-splicer": "2.0.0", - "module-deps": "4.1.1", - "os-browserify": "0.1.2", - "parents": "1.0.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "read-only-stream": "2.0.0", - "readable-stream": "2.3.3", - "resolve": "1.4.0", - "shasum": "1.0.2", - "shell-quote": "1.6.1", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "1.0.3", - "subarg": "1.0.0", - "syntax-error": "1.3.0", - "through2": "2.0.3", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4", - "xtend": "4.0.1" + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.1.2", + "buffer": "^5.0.2", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.1", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "~1.1.0", + "duplexer2": "~0.1.2", + "events": "~1.1.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "module-deps": "^4.0.8", + "os-browserify": "~0.1.1", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^2.0.0", + "string_decoder": "~1.0.0", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "~0.0.0", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "~0.0.1", + "xtend": "^4.0.0" }, "dependencies": { "buffer": { @@ -1183,8 +1234,8 @@ "integrity": "sha512-NeeHXWh5pCbPQCt2/6rLvXqapZfVsqw/YgRgaHpT3H9Uzgs+S0lSg5SQzouIuDvcmlQRqBe8hOO2scKCu3cxrg==", "dev": true, "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } } } @@ -1195,12 +1246,12 @@ "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", "dev": true, "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -1209,9 +1260,9 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.0.8", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -1220,9 +1271,9 @@ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -1231,8 +1282,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -1241,13 +1292,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -1256,7 +1307,7 @@ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, "requires": { - "pako": "0.2.9" + "pako": "~0.2.0" } }, "browserslist": { @@ -1265,8 +1316,8 @@ "integrity": "sha1-zFJq9KExK30uBWU+VtDIq3DA4FM=", "dev": true, "requires": { - "caniuse-lite": "1.0.30000784", - "electron-to-chromium": "1.3.30" + "caniuse-lite": "^1.0.30000670", + "electron-to-chromium": "^1.3.11" } }, "buffer-crc32": { @@ -1278,7 +1329,8 @@ "buffer-from": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true }, "buffer-to-vinyl": { "version": "1.1.0", @@ -1286,10 +1338,10 @@ "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", "dev": true, "requires": { - "file-type": "3.9.0", - "readable-stream": "2.3.3", - "uuid": "2.0.3", - "vinyl": "1.2.0" + "file-type": "^3.1.0", + "readable-stream": "^2.0.2", + "uuid": "^2.0.1", + "vinyl": "^1.0.0" }, "dependencies": { "uuid": { @@ -1328,27 +1380,30 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "dependencies": { "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -1362,8 +1417,9 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsite": { @@ -1375,7 +1431,8 @@ "callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true }, "camel-case": { "version": "3.0.0", @@ -1383,8 +1440,8 @@ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, "camelcase": { @@ -1399,8 +1456,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caniuse-api": { @@ -1409,10 +1466,10 @@ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000784", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" }, "dependencies": { "browserslist": { @@ -1421,8 +1478,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000784", - "electron-to-chromium": "1.3.30" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } }, "lodash.memoize": { @@ -1452,9 +1509,9 @@ "dev": true, "optional": true, "requires": { - "nan": "2.7.0", - "parse-css-font": "2.0.2", - "units-css": "0.4.0" + "nan": "^2.4.0", + "parse-css-font": "^2.0.2", + "units-css": "^0.4.0" } }, "capitalize": { @@ -1472,7 +1529,8 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "catharsis": { "version": "0.8.9", @@ -1480,7 +1538,7 @@ "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", "dev": true, "requires": { - "underscore-contrib": "0.3.0" + "underscore-contrib": "~0.3.0" } }, "caw": { @@ -1489,10 +1547,10 @@ "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", "dev": true, "requires": { - "get-proxy": "1.1.0", - "is-obj": "1.0.1", - "object-assign": "3.0.0", - "tunnel-agent": "0.4.3" + "get-proxy": "^1.0.1", + "is-obj": "^1.0.0", + "object-assign": "^3.0.0", + "tunnel-agent": "^0.4.0" }, "dependencies": { "object-assign": { @@ -1516,25 +1574,27 @@ "dev": true, "optional": true, "requires": { - "traverse": "0.3.9" + "traverse": ">=0.3.0 <0.4" } }, "chalk": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } } } @@ -1542,7 +1602,8 @@ "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true }, "chokidar": { "version": "1.7.0", @@ -1550,21 +1611,22 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "ci-info": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", - "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==" + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true }, "cipher-base": { "version": "1.0.4", @@ -1572,14 +1634,15 @@ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true }, "clap": { "version": "1.2.3", @@ -1587,7 +1650,7 @@ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "^1.1.3" }, "dependencies": { "chalk": { @@ -1596,11 +1659,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -1609,7 +1672,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -1624,25 +1687,28 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -1652,60 +1718,67 @@ "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.5.x" } }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-spinners": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true }, "cli-truncate": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, "requires": { "slice-ansi": "0.0.4", - "string-width": "1.0.2" + "string-width": "^1.0.1" }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -1713,42 +1786,47 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -1768,7 +1846,8 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "coa": { "version": "1.0.4", @@ -1776,13 +1855,14 @@ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, "requires": { - "q": "1.5.0" + "q": "^1.1.2" } }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "coffee-script": { "version": "1.12.7", @@ -1794,9 +1874,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color": { @@ -1805,23 +1886,25 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.3", - "color-convert": "1.9.0", - "color-string": "0.3.0" + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" } }, "color-convert": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-string": { "version": "0.3.0", @@ -1829,7 +1912,7 @@ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.0.0" } }, "color-support": { @@ -1844,9 +1927,9 @@ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", "dev": true, "requires": { - "color": "0.11.4", + "color": "^0.11.0", "css-color-names": "0.0.4", - "has": "1.0.1" + "has": "^1.0.1" } }, "colors": { @@ -1861,7 +1944,7 @@ "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.5.0" } }, "combine-source-map": { @@ -1870,18 +1953,19 @@ "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", "dev": true, "requires": { - "convert-source-map": "1.1.3", - "inline-source-map": "0.6.2", - "lodash.memoize": "3.0.4", - "source-map": "0.5.7" + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" } }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -1899,8 +1983,9 @@ "version": "1.7.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz", "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", + "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.26.0" } }, "component-bind": { @@ -1927,10 +2012,10 @@ "integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.3" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "concat-map": { @@ -1944,9 +2029,9 @@ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" + "inherits": "~2.0.1", + "readable-stream": "~2.0.0", + "typedarray": "~0.0.5" }, "dependencies": { "readable-stream": { @@ -1955,12 +2040,12 @@ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1977,8 +2062,8 @@ "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", "dev": true, "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, "connect": { @@ -1989,7 +2074,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.0.6", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -2010,7 +2095,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "console-control-strings": { @@ -2064,36 +2149,41 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true }, "core-js": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.10.0", - "parse-json": "4.0.0", - "require-from-string": "2.0.2" + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" }, "dependencies": { "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } } } @@ -2104,11 +2194,11 @@ "integrity": "sha512-ZppXR9y5PraUOrf/DzHJY6gzNUhXYE3b9D43xEXs4QYZ7/Oe0Gy0CS+IPKWFfvQFXB3RG9QduaQUFehzSpGAFw==", "dev": true, "requires": { - "js-yaml": "3.10.0", - "lcov-parse": "0.0.10", - "log-driver": "1.2.5", - "minimist": "1.2.0", - "request": "2.83.0" + "js-yaml": "^3.6.1", + "lcov-parse": "^0.0.10", + "log-driver": "^1.2.5", + "minimist": "^1.2.0", + "request": "^2.79.0" }, "dependencies": { "minimist": { @@ -2131,8 +2221,8 @@ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "crc": "3.5.0", - "readable-stream": "2.3.3" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, "create-ecdh": { @@ -2141,8 +2231,8 @@ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-error-class": { @@ -2151,7 +2241,7 @@ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "create-hash": { @@ -2160,10 +2250,10 @@ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -2172,12 +2262,12 @@ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "createerror": { @@ -2190,26 +2280,29 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } } } @@ -2220,16 +2313,16 @@ "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0" } }, "css-color-names": { @@ -2244,7 +2337,7 @@ "integrity": "sha1-zNXYf98UStvNmHFTXscofdUwrlM=", "dev": true, "requires": { - "requirejs": "2.1.8" + "requirejs": "=2.1.8" } }, "css-font-size-keywords": { @@ -2294,7 +2387,7 @@ "integrity": "sha1-//VxkiAtuDJAxBaG+RnkSacCT30=", "dev": true, "requires": { - "tcomb": "2.7.0" + "tcomb": "^2.5.0" } }, "css-system-font-keywords": { @@ -2310,38 +2403,38 @@ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", "dev": true, "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" }, "dependencies": { "chalk": { @@ -2350,11 +2443,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -2377,10 +2470,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -2389,7 +2482,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -2398,7 +2491,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -2409,21 +2502,23 @@ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "clap": "1.2.3", - "source-map": "0.5.7" + "clap": "^1.0.9", + "source-map": "^0.5.3" } }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=" + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true }, "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, "requires": { - "cssom": "0.3.2" + "cssom": "0.3.x" } }, "currently-unhandled": { @@ -2432,7 +2527,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "custom-event": { @@ -2445,41 +2540,46 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "data-urls": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.0.tgz", "integrity": "sha512-ai40PPQR0Fn1lD2PPie79CibnlMN2AYiDhwFX/rZHVsxbs5kNJSjegqXIprhouGXlRdEnfybva7kqRGnB6mypA==", + "dev": true, "requires": { - "abab": "1.0.4", - "whatwg-mimetype": "2.1.0", - "whatwg-url": "6.4.0" + "abab": "^1.0.4", + "whatwg-mimetype": "^2.0.0", + "whatwg-url": "^6.4.0" }, "dependencies": { "punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" } }, "whatwg-url": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.0", + "webidl-conversions": "^4.0.1" } } } @@ -2487,7 +2587,8 @@ "date-fns": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", + "dev": true }, "date-now": { "version": "0.1.4", @@ -2504,7 +2605,7 @@ "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -2512,12 +2613,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, "decompress": { "version": "3.0.0", @@ -2525,15 +2628,15 @@ "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", "dev": true, "requires": { - "buffer-to-vinyl": "1.1.0", - "concat-stream": "1.5.2", - "decompress-tar": "3.1.0", - "decompress-tarbz2": "3.1.0", - "decompress-targz": "3.1.0", - "decompress-unzip": "3.4.0", - "stream-combiner2": "1.1.1", - "vinyl-assign": "1.2.1", - "vinyl-fs": "2.4.4" + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" } }, "decompress-tar": { @@ -2542,12 +2645,12 @@ "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", "dev": true, "requires": { - "is-tar": "1.0.0", - "object-assign": "2.1.1", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" }, "dependencies": { "clone": { @@ -2574,10 +2677,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -2592,8 +2695,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -2602,8 +2705,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } @@ -2614,13 +2717,13 @@ "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", "dev": true, "requires": { - "is-bzip2": "1.0.0", - "object-assign": "2.1.1", - "seek-bzip": "1.0.5", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" }, "dependencies": { "clone": { @@ -2647,10 +2750,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -2665,8 +2768,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -2675,8 +2778,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } @@ -2687,12 +2790,12 @@ "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", "dev": true, "requires": { - "is-gzip": "1.0.0", - "object-assign": "2.1.1", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" }, "dependencies": { "clone": { @@ -2719,10 +2822,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -2737,8 +2840,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -2747,8 +2850,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } @@ -2759,19 +2862,20 @@ "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", "dev": true, "requires": { - "is-zip": "1.0.0", - "read-all-stream": "3.1.0", - "stat-mode": "0.2.2", - "strip-dirs": "1.1.1", - "through2": "2.0.3", - "vinyl": "1.2.0", - "yauzl": "2.4.1" + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" } }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true }, "deep-extend": { "version": "0.4.2", @@ -2782,7 +2886,8 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, "defaults": { "version": "1.0.3", @@ -2791,53 +2896,59 @@ "dev": true, "optional": true, "requires": { - "clone": "1.0.3" + "clone": "^1.0.2" } }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -2851,20 +2962,22 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "delegates": { "version": "1.0.0", @@ -2885,10 +2998,10 @@ "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", "dev": true, "requires": { - "JSONStream": "1.3.1", - "shasum": "1.0.2", - "subarg": "1.0.0", - "through2": "2.0.3" + "JSONStream": "^1.0.3", + "shasum": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" } }, "des.js": { @@ -2897,8 +3010,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "detect-libc": { @@ -2914,8 +3027,8 @@ "integrity": "sha1-blqMaybmx6JUsca210kNmOyR7dE=", "dev": true, "requires": { - "acorn": "4.0.13", - "defined": "1.0.0" + "acorn": "^4.0.3", + "defined": "^1.0.0" } }, "di": { @@ -2933,7 +3046,7 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" }, "diffie-hellman": { "version": "5.0.2", @@ -2941,15 +3054,16 @@ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "dlv": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.1.tgz", - "integrity": "sha512-b/kUB0D6RgRGG69h5ExsLnUAwfs5Jndfk1pU2ao7/9mVdsxpUBlkFdTkNJThXw1jrLXpUbIIg+h3um5zXi6sFA==" + "integrity": "sha512-b/kUB0D6RgRGG69h5ExsLnUAwfs5Jndfk1pU2ao7/9mVdsxpUBlkFdTkNJThXw1jrLXpUbIIg+h3um5zXi6sFA==", + "dev": true }, "dnserrors": { "version": "2.1.2", @@ -2957,18 +3071,19 @@ "integrity": "sha1-/r/K6yJWCO0Zbs9Be67vBU+3lNA=", "dev": true, "requires": { - "createerror": "1.3.0", - "httperrors": "2.2.0", - "lodash.defaults": "4.2.0", - "lodash.omit": "4.5.0" + "createerror": "^1.2.0", + "httperrors": "^2.2.0", + "lodash.defaults": "^4.2.0", + "lodash.omit": "^4.5.0" } }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "dom-serialize": { @@ -2977,10 +3092,10 @@ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" } }, "domain-browser": { @@ -2993,8 +3108,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, "requires": { - "webidl-conversions": "4.0.2" + "webidl-conversions": "^4.0.2" } }, "download": { @@ -3003,21 +3119,21 @@ "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", "dev": true, "requires": { - "caw": "1.2.0", - "concat-stream": "1.5.2", - "each-async": "1.1.1", - "filenamify": "1.2.1", - "got": "5.7.1", - "gulp-decompress": "1.2.0", - "gulp-rename": "1.2.2", - "is-url": "1.2.2", - "object-assign": "4.1.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "stream-combiner2": "1.1.1", - "vinyl": "1.2.0", - "vinyl-fs": "2.4.4", - "ware": "1.3.0" + "caw": "^1.0.1", + "concat-stream": "^1.4.7", + "each-async": "^1.0.0", + "filenamify": "^1.0.1", + "got": "^5.0.0", + "gulp-decompress": "^1.2.0", + "gulp-rename": "^1.2.0", + "is-url": "^1.2.0", + "object-assign": "^4.0.1", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.2", + "stream-combiner2": "^1.1.1", + "vinyl": "^1.0.0", + "vinyl-fs": "^2.2.0", + "ware": "^1.2.0" } }, "duplexer": { @@ -3032,7 +3148,7 @@ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.2" } }, "duplexer3": { @@ -3047,10 +3163,10 @@ "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", "dev": true, "requires": { - "end-of-stream": "1.4.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "each-async": { @@ -3059,8 +3175,8 @@ "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", "dev": true, "requires": { - "onetime": "1.1.0", - "set-immediate-shim": "1.0.1" + "onetime": "^1.0.0", + "set-immediate-shim": "^1.0.0" }, "dependencies": { "onetime": { @@ -3075,9 +3191,10 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -3098,13 +3215,14 @@ "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==", "dev": true, "requires": { - "electron-releases": "2.1.0" + "electron-releases": "^2.1.0" } }, "elegant-spinner": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true }, "elliptic": { "version": "6.4.0", @@ -3112,13 +3230,13 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "encodeurl": { @@ -3133,7 +3251,7 @@ "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "engine.io": { @@ -3240,8 +3358,9 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "esanimate": { @@ -3250,8 +3369,8 @@ "integrity": "sha1-5xcSttiyuy5tXUCmOSp7+cfCCFc=", "dev": true, "requires": { - "escodegen": "1.9.0", - "esprima": "2.7.3" + "escodegen": "^1.7.0", + "esprima": "^2.6.0" }, "dependencies": { "esprima": { @@ -3277,18 +3396,20 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.5.7" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.5.6" }, "dependencies": { "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true } } }, @@ -3296,67 +3417,70 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.1.0", - "concat-stream": "1.6.2", - "cross-spawn": "5.1.0", - "debug": "3.1.0", - "doctrine": "2.1.0", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "1.0.0", - "espree": "3.5.4", - "esquery": "1.0.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.4.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.10.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "7.0.0", - "progress": "2.0.0", - "regexpp": "1.1.0", - "require-uncached": "1.0.3", - "semver": "5.3.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", "table": "4.0.2", - "text-table": "0.2.0" + "text-table": "~0.2.0" }, "dependencies": { "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } } } @@ -3365,14 +3489,16 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz", "integrity": "sha512-ag8YEyBXsm3nmOv1Hz991VtNNDMRa+MNy8cY47Pl4bw6iuzqKbJajXdqUpiw13STdLLrznxgm1hj9NhxeOYq0A==", + "dev": true, "requires": { - "get-stdin": "5.0.1" + "get-stdin": "^5.0.1" }, "dependencies": { "get-stdin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=" + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true } } }, @@ -3394,8 +3520,8 @@ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", "dev": true, "requires": { - "debug": "2.6.9", - "resolve": "1.7.1" + "debug": "^2.6.9", + "resolve": "^1.5.0" }, "dependencies": { "debug": { @@ -3413,7 +3539,7 @@ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } } } @@ -3424,8 +3550,8 @@ "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", "dev": true, "requires": { - "debug": "2.6.9", - "pkg-dir": "1.0.0" + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" }, "dependencies": { "debug": { @@ -3445,16 +3571,16 @@ "integrity": "sha1-Fa7qN6Z0mdhI6OmBgG1GJ7VQOBY=", "dev": true, "requires": { - "contains-path": "0.1.0", - "debug": "2.6.9", + "contains-path": "^0.1.0", + "debug": "^2.6.8", "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.2", - "eslint-module-utils": "2.2.0", - "has": "1.0.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0", - "resolve": "1.7.1" + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" }, "dependencies": { "debug": { @@ -3472,8 +3598,8 @@ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } }, "resolve": { @@ -3482,7 +3608,7 @@ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } } } @@ -3493,10 +3619,10 @@ "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.7", - "minimatch": "3.0.4", - "resolve": "1.4.0", - "semver": "5.5.0" + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" }, "dependencies": { "semver": { @@ -3511,9 +3637,10 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz", "integrity": "sha512-floiaI4F7hRkTrFe8V2ItOK97QYrX75DjmdzmVITZoAP6Cn06oEDPQRsO6MlHEP/u2SxI3xQ52Kpjw6j5WGfeQ==", + "dev": true, "requires": { - "fast-diff": "1.1.2", - "jest-docblock": "21.2.0" + "fast-diff": "^1.1.1", + "jest-docblock": "^21.0.0" } }, "eslint-plugin-promise": { @@ -3532,36 +3659,41 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true }, "espree": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-jsx": "3.0.1" + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" }, "dependencies": { "acorn": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true } } }, "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true }, "espurify": { "version": "1.7.0", @@ -3569,48 +3701,52 @@ "integrity": "sha1-HFz2y8zDLm9jk4C9T5kfq5up0iY=", "dev": true, "requires": { - "core-js": "2.5.1" + "core-js": "^2.0.0" } }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "eventemitter3": { @@ -3631,8 +3767,8 @@ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "exec-series": { @@ -3641,22 +3777,23 @@ "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", "dev": true, "requires": { - "async-each-series": "1.1.0", - "object-assign": "4.1.1" + "async-each-series": "^1.1.0", + "object-assign": "^4.1.0" } }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "executable": { @@ -3665,7 +3802,7 @@ "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", "dev": true, "requires": { - "meow": "3.7.0" + "meow": "^3.1.0" } }, "exif-reader-paras20xx": { @@ -3677,7 +3814,8 @@ "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true }, "expand-braces": { "version": "0.1.2", @@ -3685,9 +3823,9 @@ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" }, "dependencies": { "braces": { @@ -3696,7 +3834,7 @@ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", "dev": true, "requires": { - "expand-range": "0.1.1" + "expand-range": "^0.1.0" } }, "expand-range": { @@ -3705,8 +3843,8 @@ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", "dev": true, "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" } }, "is-number": { @@ -3727,37 +3865,41 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "expect": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.3.tgz", "integrity": "sha512-XcNXEPehqn8b/jm8FYotdX0YrXn36qp4HWlrVT4ktwQas1l1LPxiVWncYnnL2eyMtKAmVIaG0XAp0QlrqJaxaA==", + "dev": true, "requires": { - "ansi-styles": "3.2.1", - "jest-diff": "22.4.3", - "jest-get-type": "22.4.3", - "jest-matcher-utils": "22.4.3", - "jest-message-util": "22.4.3", - "jest-regex-util": "22.4.3" + "ansi-styles": "^3.2.0", + "jest-diff": "^22.4.3", + "jest-get-type": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "jest-message-util": "^22.4.3", + "jest-regex-util": "^22.4.3" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } } } @@ -3774,7 +3916,7 @@ "integrity": "sha1-M1Ps+6WKGQouxWPYxKq8BvnT+Ig=", "dev": true, "requires": { - "accepts": "1.3.3", + "accepts": "^1.3.3", "animated-gif-detector": "1.2.0", "bluebird": "3.3.4", "createerror": "1.1.0", @@ -3885,7 +4027,7 @@ "integrity": "sha1-SGxIr23+zHp9z5xlWs8QjS3L3z0=", "dev": true, "requires": { - "is-absolute": "0.1.7" + "is-absolute": "^0.1.7" } } } @@ -3907,38 +4049,43 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "external-editor": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fancy-log": { "version": "1.3.2", @@ -3946,30 +4093,34 @@ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", "dev": true, "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "time-stamp": "1.1.0" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" } }, "fast-deep-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true }, "fast-diff": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "fd-slicer": { "version": "1.0.1", @@ -3977,24 +4128,26 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "file-type": { @@ -4006,7 +4159,8 @@ "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true }, "filename-reserved-regex": { "version": "1.0.0", @@ -4020,21 +4174,22 @@ "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", "dev": true, "requires": { - "filename-reserved-regex": "1.0.0", - "strip-outer": "1.0.0", - "trim-repeated": "1.0.0" + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" } }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -4044,12 +4199,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -4066,7 +4221,8 @@ "find-parent-dir": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=" + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true }, "find-up": { "version": "1.1.2", @@ -4074,8 +4230,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "find-versions": { @@ -4084,10 +4240,10 @@ "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", "dev": true, "requires": { - "array-uniq": "1.0.3", - "get-stdin": "4.0.1", - "meow": "3.7.0", - "semver-regex": "1.0.0" + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" } }, "first-chunk-stream": { @@ -4100,11 +4256,12 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "flatten": { @@ -4116,37 +4273,42 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "from": { @@ -4161,7 +4323,7 @@ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", "dev": true, "requires": { - "null-check": "1.0.0" + "null-check": "^1.0.0" } }, "fs.realpath": { @@ -4176,8 +4338,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.36" }, "dependencies": { "abbrev": { @@ -4194,8 +4356,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { @@ -4270,7 +4432,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -4279,7 +4441,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -4288,7 +4450,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -4297,7 +4459,7 @@ "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, @@ -4333,7 +4495,7 @@ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -4361,7 +4523,7 @@ "dev": true, "optional": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -4371,7 +4533,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -4420,7 +4582,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -4450,9 +4612,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -4467,10 +4629,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -4480,9 +4642,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { @@ -4509,7 +4671,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -4555,8 +4717,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-unicode": { @@ -4573,10 +4735,10 @@ "dev": true, "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -4592,9 +4754,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -4656,7 +4818,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -4680,7 +4842,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -4731,7 +4893,7 @@ "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "~1.27.0" } }, "minimatch": { @@ -4772,15 +4934,15 @@ "dev": true, "optional": true, "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "request": "^2.81.0", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" } }, "nopt": { @@ -4801,10 +4963,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -4857,8 +5019,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -4901,10 +5063,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -4922,13 +5084,13 @@ "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true, "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "request": { @@ -4938,28 +5100,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "rimraf": { @@ -4968,7 +5130,7 @@ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -5005,7 +5167,7 @@ "dev": true, "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -5015,15 +5177,15 @@ "dev": true, "optional": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -5052,7 +5214,7 @@ "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "dev": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "stringstream": { @@ -5084,9 +5246,9 @@ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -5096,14 +5258,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tough-cookie": { @@ -5113,7 +5275,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -5123,7 +5285,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -5187,10 +5349,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -5200,9 +5362,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "function-bind": { @@ -5214,7 +5376,8 @@ "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "gather-stream": { "version": "1.0.0", @@ -5229,14 +5392,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" }, "dependencies": { "is-fullwidth-code-point": { @@ -5246,7 +5409,7 @@ "dev": true, "optional": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -5256,9 +5419,9 @@ "dev": true, "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -5267,7 +5430,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -5284,18 +5447,20 @@ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "1.0.2" + "is-property": "^1.0.0" } }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true }, "get-own-enumerable-property-symbols": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz", - "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==" + "integrity": "sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug==", + "dev": true }, "get-proxy": { "version": "1.1.0", @@ -5303,7 +5468,7 @@ "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", "dev": true, "requires": { - "rc": "1.2.2" + "rc": "^1.1.2" } }, "get-stdin": { @@ -5315,19 +5480,22 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "gettemporaryfilepath": { @@ -5339,31 +5507,33 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "glob-stream": { @@ -5372,14 +5542,14 @@ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "dev": true, "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" }, "dependencies": { "glob": { @@ -5388,11 +5558,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -5401,8 +5571,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, "is-extglob": { @@ -5417,7 +5587,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "isarray": { @@ -5432,10 +5602,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -5450,8 +5620,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -5459,19 +5629,21 @@ "globals": { "version": "11.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", - "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==" + "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==", + "dev": true }, "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "glogg": { @@ -5480,7 +5652,7 @@ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", "dev": true, "requires": { - "sparkles": "1.0.0" + "sparkles": "^1.0.0" } }, "gm-papandreou": { @@ -5489,10 +5661,10 @@ "integrity": "sha1-35cO+M+mn7r9wIl+dlOmEP4VVwk=", "dev": true, "requires": { - "array-parallel": "0.1.3", - "array-series": "0.1.5", - "cross-spawn": "4.0.2", - "debug": "2.2.0" + "array-parallel": "~0.1.3", + "array-series": "~0.1.5", + "cross-spawn": "^4.0.0", + "debug": "~2.2.0" }, "dependencies": { "cross-spawn": { @@ -5501,8 +5673,8 @@ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "debug": { @@ -5528,27 +5700,28 @@ "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" } }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true }, "graceful-readlink": { "version": "1.0.1", @@ -5562,11 +5735,11 @@ "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", "dev": true, "requires": { - "ansi-red": "0.1.1", - "coffee-script": "1.12.7", - "extend-shallow": "2.0.1", - "js-yaml": "3.10.0", - "toml": "2.3.3" + "ansi-red": "^0.1.1", + "coffee-script": "^1.12.4", + "extend-shallow": "^2.0.1", + "js-yaml": "^3.8.1", + "toml": "^2.3.2" } }, "growl": { @@ -5580,10 +5753,10 @@ "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", "dev": true, "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "gulp-util": "3.0.8", - "readable-stream": "2.3.3" + "archive-type": "^3.0.0", + "decompress": "^3.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" } }, "gulp-rename": { @@ -5598,11 +5771,11 @@ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "dev": true, "requires": { - "convert-source-map": "1.1.3", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "strip-bom": { @@ -5611,7 +5784,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -5622,24 +5795,24 @@ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "through2": "^2.0.0", + "vinyl": "^0.5.0" }, "dependencies": { "chalk": { @@ -5648,11 +5821,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "minimist": { @@ -5673,7 +5846,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -5688,8 +5861,8 @@ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "dev": true, "requires": { - "clone": "1.0.3", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -5701,21 +5874,23 @@ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "dev": true, "requires": { - "glogg": "1.0.0" + "glogg": "^1.0.0" } }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, "requires": { - "ajv": "5.2.3", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has": { @@ -5724,15 +5899,16 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-binary": { @@ -5769,7 +5945,7 @@ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", "dev": true, "requires": { - "sparkles": "1.0.0" + "sparkles": "^1.0.0" } }, "has-symbol-support-x": { @@ -5784,7 +5960,7 @@ "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "dev": true, "requires": { - "has-symbol-support-x": "1.4.1" + "has-symbol-support-x": "^1.4.1" } }, "has-unicode": { @@ -5798,16 +5974,18 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "dependencies": { "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -5815,25 +5993,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -5842,8 +6023,9 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -5854,7 +6036,7 @@ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "hash.js": { @@ -5863,8 +6045,8 @@ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "hashish": { @@ -5874,7 +6056,7 @@ "dev": true, "optional": true, "requires": { - "traverse": "0.3.9" + "traverse": ">=0.2.4" } }, "hat": { @@ -5887,11 +6069,12 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.0.2" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "he": { @@ -5912,7 +6095,7 @@ "dev": true, "optional": true, "requires": { - "canvas": "1.6.9" + "canvas": "^1.6.7" }, "dependencies": { "canvas": { @@ -5922,7 +6105,7 @@ "dev": true, "optional": true, "requires": { - "nan": "2.7.0" + "nan": "^2.4.0" } } } @@ -5933,15 +6116,16 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hoek": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true }, "hosted-git-info": { "version": "2.5.0", @@ -5959,8 +6143,9 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, "requires": { - "whatwg-encoding": "1.0.3" + "whatwg-encoding": "^1.0.1" } }, "html-minifier": { @@ -5969,14 +6154,14 @@ "integrity": "sha512-WX7D6PB9PFq05fZ1/CyxPUuyqXed6vh2fGOM80+zJT5wAO93D/cUjLs0CcbBFjQmlwmCgRvl97RurtArIpOnkw==", "dev": true, "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.9", - "commander": "2.12.2", - "he": "1.1.1", - "ncname": "1.0.0", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.3.4" + "camel-case": "3.0.x", + "clean-css": "4.1.x", + "commander": "2.12.x", + "he": "1.1.x", + "ncname": "1.0.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.3.x" }, "dependencies": { "commander": { @@ -6002,7 +6187,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" } }, "http-proxy": { @@ -6011,18 +6196,19 @@ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", "dev": true, "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" } }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "httperrors": { @@ -6054,9 +6240,9 @@ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.1" + "agent-base": "2", + "debug": "2", + "extend": "3" }, "dependencies": { "debug": { @@ -6074,21 +6260,24 @@ "version": "0.14.3", "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz", "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "dev": true, "requires": { - "is-ci": "1.1.0", - "normalize-path": "1.0.0", - "strip-indent": "2.0.0" + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" }, "dependencies": { "normalize-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=" + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true }, "strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true } } }, @@ -6101,7 +6290,8 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true }, "ieee754": { "version": "1.1.8", @@ -6112,7 +6302,8 @@ "ignore": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true }, "imageinfo": { "version": "1.0.4", @@ -6123,14 +6314,16 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "indexes-of": { @@ -6150,8 +6343,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -6171,7 +6364,7 @@ "integrity": "sha1-ov1m+tiIbSgxOm7ckaWQHfYQeJA=", "dev": true, "requires": { - "async": "0.2.9", + "async": "=0.2.9", "gettemporaryfilepath": "1.0.0" }, "dependencies": { @@ -6189,28 +6382,29 @@ "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "~0.5.3" } }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, "requires": { - "ansi-escapes": "3.1.0", - "chalk": "2.1.0", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.4", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" } }, "insert-module-globals": { @@ -6219,20 +6413,21 @@ "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", "dev": true, "requires": { - "JSONStream": "1.3.1", - "combine-source-map": "0.7.2", - "concat-stream": "1.5.2", - "is-buffer": "1.1.5", - "lexical-scope": "1.2.0", - "process": "0.11.10", - "through2": "2.0.3", - "xtend": "4.0.1" + "JSONStream": "^1.0.3", + "combine-source-map": "~0.7.1", + "concat-stream": "~1.5.1", + "is-buffer": "^1.1.0", + "lexical-scope": "^1.2.0", + "process": "~0.11.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" } }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true }, "ip-regex": { "version": "1.0.3", @@ -6246,7 +6441,7 @@ "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", "dev": true, "requires": { - "is-relative": "0.1.3" + "is-relative": "^0.1.0" } }, "is-absolute-url": { @@ -6259,14 +6454,16 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-binary-path": { "version": "1.0.1", @@ -6274,13 +6471,14 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -6288,7 +6486,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-bzip2": { @@ -6301,87 +6499,100 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, "requires": { - "ci-info": "1.1.3" + "ci-info": "^1.0.0" } }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-generator-fn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-gzip": { @@ -6396,10 +6607,10 @@ "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "dev": true, "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-natural-number": { @@ -6412,14 +6623,16 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, "is-object": { "version": "1.0.1", @@ -6431,44 +6644,50 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "^0.2.2" } }, "is-odd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true } } }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true }, "is-path-in-cwd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -6481,31 +6700,36 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true }, "is-property": { "version": "1.0.2", @@ -6522,7 +6746,8 @@ "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true }, "is-relative": { "version": "0.1.3", @@ -6533,7 +6758,8 @@ "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true }, "is-retry-allowed": { "version": "1.1.0", @@ -6544,7 +6770,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-svg": { "version": "2.1.0", @@ -6552,7 +6779,7 @@ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", "dev": true, "requires": { - "html-comment-regex": "1.1.1" + "html-comment-regex": "^1.1.0" } }, "is-tar": { @@ -6564,7 +6791,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-url": { "version": "1.2.2", @@ -6587,7 +6815,8 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, "is-zip": { "version": "1.0.0", @@ -6598,7 +6827,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isbinaryfile": { "version": "3.0.2", @@ -6609,7 +6839,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isnumeric": { "version": "0.2.0", @@ -6622,6 +6853,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -6629,7 +6861,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "isurl": { "version": "1.0.0", @@ -6637,141 +6870,154 @@ "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "dev": true, "requires": { - "has-to-string-tag-x": "1.4.1", - "is-object": "1.0.1" + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" } }, "jest-config": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.3.tgz", "integrity": "sha512-KSg3EOToCgkX+lIvenKY7J8s426h6ahXxaUFJxvGoEk0562Z6inWj1TnKoGycTASwiLD+6kSYFALcjdosq9KIQ==", + "dev": true, "requires": { - "chalk": "2.1.0", - "glob": "7.1.2", - "jest-environment-jsdom": "22.4.3", - "jest-environment-node": "22.4.3", - "jest-get-type": "22.4.3", - "jest-jasmine2": "22.4.3", - "jest-regex-util": "22.4.3", - "jest-resolve": "22.4.3", - "jest-util": "22.4.3", - "jest-validate": "22.4.3", - "pretty-format": "22.4.3" + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^22.4.3", + "jest-environment-node": "^22.4.3", + "jest-get-type": "^22.4.3", + "jest-jasmine2": "^22.4.3", + "jest-regex-util": "^22.4.3", + "jest-resolve": "^22.4.3", + "jest-util": "^22.4.3", + "jest-validate": "^22.4.3", + "pretty-format": "^22.4.3" } }, "jest-diff": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz", "integrity": "sha512-/QqGvCDP5oZOF6PebDuLwrB2BMD8ffJv6TAGAdEVuDx1+uEgrHpSFrfrOiMRx2eJ1hgNjlQrOQEHetVwij90KA==", + "dev": true, "requires": { - "chalk": "2.1.0", - "diff": "3.5.0", - "jest-get-type": "22.4.3", - "pretty-format": "22.4.3" + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" } }, "jest-docblock": { "version": "21.2.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==" + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true }, "jest-environment-jsdom": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", + "dev": true, "requires": { - "jest-mock": "22.4.3", - "jest-util": "22.4.3", - "jsdom": "11.8.0" + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3", + "jsdom": "^11.5.1" }, "dependencies": { "acorn": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true }, "acorn-globals": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, "requires": { - "acorn": "5.5.3" + "acorn": "^5.0.0" } }, "jsdom": { "version": "11.8.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.8.0.tgz", "integrity": "sha512-fZZSH6P8tVqYIQl0WKpZuQljPu2cW41Uj/c9omtyGwjwZCB8c82UAi7BSQs/F1FgWovmZsoU02z3k28eHp0Cdw==", + "dev": true, "requires": { - "abab": "1.0.4", - "acorn": "5.5.3", - "acorn-globals": "4.1.0", - "array-equal": "1.0.0", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "data-urls": "1.0.0", - "domexception": "1.0.1", - "escodegen": "1.9.0", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.3.0", - "nwmatcher": "1.4.3", + "abab": "^1.0.4", + "acorn": "^5.3.0", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": ">= 0.2.37 < 0.3.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.0", + "escodegen": "^1.9.0", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.2.0", + "nwmatcher": "^1.4.3", "parse5": "4.0.0", - "pn": "1.1.0", - "request": "2.83.0", - "request-promise-native": "1.0.5", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.3.3", - "w3c-hr-time": "1.0.1", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.3", - "whatwg-mimetype": "2.1.0", - "whatwg-url": "6.4.0", - "ws": "4.1.0", - "xml-name-validator": "3.0.0" + "pn": "^1.1.0", + "request": "^2.83.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.3", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.0", + "ws": "^4.0.0", + "xml-name-validator": "^3.0.0" } }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true }, "punycode": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" } }, "whatwg-url": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.0", + "webidl-conversions": "^4.0.1" } }, "ws": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" } }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true } } }, @@ -6779,111 +7025,123 @@ "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz", "integrity": "sha512-reZl8XF6t/lMEuPWwo9OLfttyC26A5AMgDyEQ6DBgZuyfyeNUzYT8BFo6uxCCP/Av/b7eb9fTi3sIHFPBzmlRA==", + "dev": true, "requires": { - "jest-mock": "22.4.3", - "jest-util": "22.4.3" + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3" } }, "jest-get-type": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true }, "jest-jasmine2": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz", "integrity": "sha512-yZCPCJUcEY6R5KJB/VReo1AYI2b+5Ky+C+JA1v34jndJsRcLpU4IZX4rFJn7yDTtdNbO/nNqg+3SDIPNH2ecnw==", + "dev": true, "requires": { - "chalk": "2.1.0", - "co": "4.6.0", - "expect": "22.4.3", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.4.3", - "jest-matcher-utils": "22.4.3", - "jest-message-util": "22.4.3", - "jest-snapshot": "22.4.3", - "jest-util": "22.4.3", - "source-map-support": "0.5.4" + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^22.4.3", + "graceful-fs": "^4.1.11", + "is-generator-fn": "^1.0.0", + "jest-diff": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "jest-message-util": "^22.4.3", + "jest-snapshot": "^22.4.3", + "jest-util": "^22.4.3", + "source-map-support": "^0.5.0" } }, "jest-matcher-utils": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz", "integrity": "sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==", + "dev": true, "requires": { - "chalk": "2.1.0", - "jest-get-type": "22.4.3", - "pretty-format": "22.4.3" + "chalk": "^2.0.1", + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" } }, "jest-message-util": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", + "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "chalk": "2.1.0", - "micromatch": "2.3.11", - "slash": "1.0.0", - "stack-utils": "1.0.1" + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" } }, "jest-mock": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", - "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==" + "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", + "dev": true }, "jest-regex-util": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", - "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==" + "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", + "dev": true }, "jest-resolve": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", + "dev": true, "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.1.0" + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1" } }, "jest-snapshot": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz", "integrity": "sha512-JXA0gVs5YL0HtLDCGa9YxcmmV2LZbwJ+0MfyXBBc5qpgkEYITQFJP7XNhcHFbUvRiniRpRbGVfJrOoYhhGE0RQ==", + "dev": true, "requires": { - "chalk": "2.1.0", - "jest-diff": "22.4.3", - "jest-matcher-utils": "22.4.3", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "pretty-format": "22.4.3" + "chalk": "^2.0.1", + "jest-diff": "^22.4.3", + "jest-matcher-utils": "^22.4.3", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^22.4.3" } }, "jest-util": { "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", + "dev": true, "requires": { - "callsites": "2.0.0", - "chalk": "2.1.0", - "graceful-fs": "4.1.11", - "is-ci": "1.1.0", - "jest-message-util": "22.4.3", - "mkdirp": "0.5.1", - "source-map": "0.6.1" + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^22.4.3", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -6891,12 +7149,13 @@ "version": "22.4.3", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.3.tgz", "integrity": "sha512-CfFM18W3GSP/xgmA4UouIx0ljdtfD2mjeBC6c89Gg17E44D4tQhAcTrZmf9djvipwU30kSTnk6CzcxdCCeSXfA==", + "dev": true, "requires": { - "chalk": "2.1.0", - "jest-config": "22.4.3", - "jest-get-type": "22.4.3", - "leven": "2.1.0", - "pretty-format": "22.4.3" + "chalk": "^2.0.1", + "jest-config": "^22.4.3", + "jest-get-type": "^22.4.3", + "leven": "^2.1.0", + "pretty-format": "^22.4.3" } }, "jpegtran": { @@ -6905,7 +7164,7 @@ "integrity": "sha1-f6h+kAc1DQx3W4Srn9roR2U9HVM=", "dev": true, "requires": { - "jpegtran-bin": "3.0.4", + "jpegtran-bin": "=3.0.4", "memoizeasync": "0.9.0", "which": "1.1.1" }, @@ -6916,7 +7175,7 @@ "integrity": "sha1-nOUSRZlGFm4SwIPwjsBzOA/Iy7s=", "dev": true, "requires": { - "is-absolute": "0.1.7" + "is-absolute": "^0.1.7" } } } @@ -6927,9 +7186,9 @@ "integrity": "sha1-sXicfxAOEWoGWaAIqR/KyTibqZc=", "dev": true, "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" } }, "js-base64": { @@ -6947,15 +7206,17 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "js2xmlparser": { @@ -6964,13 +7225,14 @@ "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", "dev": true, "requires": { - "xmlcreate": "1.0.2" + "xmlcreate": "^1.0.1" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, "optional": true }, "jsdoc": { @@ -6980,17 +7242,17 @@ "dev": true, "requires": { "babylon": "7.0.0-beta.19", - "bluebird": "3.5.0", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.19", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", "taffydb": "2.6.2", - "underscore": "1.8.3" + "underscore": "~1.8.3" }, "dependencies": { "babylon": { @@ -7013,41 +7275,44 @@ "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", "dev": true, "requires": { - "abab": "1.0.4", - "acorn": "4.0.13", - "acorn-globals": "3.1.0", - "array-equal": "1.0.0", - "content-type-parser": "1.0.2", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "escodegen": "1.9.0", - "html-encoding-sniffer": "1.0.2", - "nwmatcher": "1.4.3", - "parse5": "1.5.1", - "request": "2.83.0", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.3.3", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.3", - "whatwg-url": "4.8.0", - "xml-name-validator": "2.0.1" + "abab": "^1.0.3", + "acorn": "^4.0.4", + "acorn-globals": "^3.1.0", + "array-equal": "^1.0.0", + "content-type-parser": "^1.0.1", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": ">= 0.2.37 < 0.3.0", + "escodegen": "^1.6.1", + "html-encoding-sniffer": "^1.0.1", + "nwmatcher": ">= 1.3.9 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.79.0", + "sax": "^1.2.1", + "symbol-tree": "^3.2.1", + "tough-cookie": "^2.3.2", + "webidl-conversions": "^4.0.0", + "whatwg-encoding": "^1.0.1", + "whatwg-url": "^4.3.0", + "xml-name-validator": "^2.0.1" } }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true }, "json-stable-stringify": { "version": "0.0.1", @@ -7055,18 +7320,20 @@ "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.2", @@ -7077,7 +7344,8 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonparse": { "version": "1.3.1", @@ -7095,6 +7363,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -7108,33 +7377,33 @@ "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", "dev": true, "requires": { - "bluebird": "3.5.0", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.5", - "core-js": "2.5.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", "socket.io": "1.7.3", - "source-map": "0.5.7", + "source-map": "^0.5.3", "tmp": "0.0.31", - "useragent": "2.2.1" + "useragent": "^2.1.12" }, "dependencies": { "lodash": { @@ -7149,7 +7418,7 @@ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } } } @@ -7160,12 +7429,12 @@ "integrity": "sha1-9kLXDXdtmrO3NSbFcyq8/qJAAxk=", "dev": true, "requires": { - "convert-source-map": "1.1.3", - "hat": "0.0.3", - "js-string-escape": "1.0.1", - "lodash": "3.10.1", - "minimatch": "3.0.4", - "os-shim": "0.1.3" + "convert-source-map": "^1.1.3", + "hat": "^0.0.3", + "js-string-escape": "^1.0.0", + "lodash": "^3.10.1", + "minimatch": "^3.0.0", + "os-shim": "^0.1.3" }, "dependencies": { "lodash": { @@ -7182,8 +7451,8 @@ "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", "dev": true, "requires": { - "fs-access": "1.0.1", - "which": "1.3.0" + "fs-access": "^1.0.0", + "which": "^1.2.1" } }, "karma-expect": { @@ -7192,7 +7461,7 @@ "integrity": "sha1-xrClb/GJA9sRr08JjMbnzxmM4nU=", "dev": true, "requires": { - "expect.js": "0.3.1" + "expect.js": "^0.3.1" } }, "karma-mocha": { @@ -7218,9 +7487,9 @@ "integrity": "sha1-DJyyLCfYZND2aU3wzwHKq86QZNQ=", "dev": true, "requires": { - "chalk": "2.1.0", - "log-symbols": "2.1.0", - "strip-ansi": "4.0.0" + "chalk": "^2.1.0", + "log-symbols": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "karma-sauce-launcher": { @@ -7229,18 +7498,19 @@ "integrity": "sha512-lEhtGRGS+3Yw6JSx/vJY9iQyHNtTjcojrSwNzqNUOaDceKDu9dPZqA/kr69bUO9G2T6GKbu8AZgXqy94qo31Jg==", "dev": true, "requires": { - "q": "1.5.0", - "sauce-connect-launcher": "1.2.2", - "saucelabs": "1.4.0", - "wd": "1.4.1" + "q": "^1.5.0", + "sauce-connect-launcher": "^1.2.2", + "saucelabs": "^1.4.0", + "wd": "^1.4.0" } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } }, "klaw": { @@ -7249,7 +7519,7 @@ "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "labeled-stream-splicer": { @@ -7258,9 +7528,9 @@ "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", "dev": true, "requires": { - "inherits": "2.0.3", - "isarray": "0.0.1", - "stream-splicer": "2.0.0" + "inherits": "^2.0.1", + "isarray": "~0.0.1", + "stream-splicer": "^2.0.0" }, "dependencies": { "isarray": { @@ -7277,7 +7547,7 @@ "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", "dev": true, "requires": { - "set-getter": "0.1.0" + "set-getter": "^0.1.0" } }, "lazy-req": { @@ -7292,15 +7562,16 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.5" } }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "lcov-parse": { @@ -7312,20 +7583,23 @@ "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "lexical-scope": { @@ -7334,7 +7608,7 @@ "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", "dev": true, "requires": { - "astw": "2.2.0" + "astw": "^2.0.0" } }, "linkify-it": { @@ -7343,36 +7617,37 @@ "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", "dev": true, "requires": { - "uc.micro": "1.0.3" + "uc.micro": "^1.0.1" } }, "lint-staged": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.0.4.tgz", "integrity": "sha512-9w4vwNJ1A7o4mwKhz/5B0VateS24KJjeU1ppO2UOBdbTg/iiypF4U6F3yckEms0Fbf5uvfLiPVp9pG2lBbVA6g==", + "dev": true, "requires": { - "app-root-path": "2.0.1", - "chalk": "2.4.0", - "commander": "2.15.1", - "cosmiconfig": "4.0.0", - "debug": "3.1.0", - "dedent": "0.7.0", - "execa": "0.9.0", - "find-parent-dir": "0.3.0", - "is-glob": "4.0.0", - "jest-validate": "22.4.3", - "listr": "0.13.0", - "lodash": "4.17.5", - "log-symbols": "2.2.0", - "micromatch": "3.1.10", - "npm-which": "3.0.1", - "p-map": "1.2.0", - "path-is-inside": "1.0.2", - "pify": "3.0.0", - "please-upgrade-node": "3.0.1", + "app-root-path": "^2.0.1", + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^4.0.0", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "execa": "^0.9.0", + "find-parent-dir": "^0.3.0", + "is-glob": "^4.0.0", + "jest-validate": "^22.4.0", + "listr": "^0.13.0", + "lodash": "^4.17.5", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.1", "staged-git-files": "1.1.1", - "string-argv": "0.0.2", - "stringify-object": "3.2.2" + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2" }, "dependencies": { "ansi-styles": { @@ -7424,10 +7699,11 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "commander": { @@ -7439,14 +7715,15 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "expand-brackets": { @@ -7647,7 +7924,8 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-glob": { "version": "4.0.0", @@ -7688,14 +7966,16 @@ "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, "requires": { - "chalk": "2.4.0" + "chalk": "^2.0.1" } }, "micromatch": { @@ -7739,146 +8019,160 @@ "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", "dev": true, "requires": { - "expand-range": "1.8.2", - "extend-shallow": "2.0.1", - "is-number": "2.1.0", - "repeat-string": "1.6.1" + "expand-range": "^1.8.1", + "extend-shallow": "^2.0.1", + "is-number": "^2.1.0", + "repeat-string": "^1.5.2" } }, "listr": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "dev": true, "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "figures": "1.7.0", - "indent-string": "2.1.0", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.4.0", - "listr-verbose-renderer": "0.4.1", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "ora": "0.2.3", - "p-map": "1.2.0", - "rxjs": "5.5.10", - "stream-to-observable": "0.2.0", - "strip-ansi": "3.0.1" + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-observable": "^0.2.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.4.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^5.4.2", + "stream-to-observable": "^0.2.0", + "strip-ansi": "^3.0.1" }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "^1.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, "listr-silent-renderer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true }, "listr-update-renderer": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "dev": true, "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.2.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "strip-ansi": "3.0.1" + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "^1.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -7886,68 +8180,76 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", + "dev": true, "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "date-fns": "1.29.0", - "figures": "1.7.0" + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "onetime": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -7957,32 +8259,35 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true } } }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true }, "lodash._basecopy": { "version": "3.0.1", @@ -8062,7 +8367,7 @@ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", "dev": true, "requires": { - "lodash._root": "3.0.1" + "lodash._root": "^3.0.0" } }, "lodash.flatten": { @@ -8095,9 +8400,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "lodash.memoize": { @@ -8109,7 +8414,8 @@ "lodash.merge": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", - "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==" + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", + "dev": true }, "lodash.omit": { "version": "4.5.0", @@ -8126,7 +8432,8 @@ "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true }, "lodash.template": { "version": "3.6.2", @@ -8134,15 +8441,15 @@ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" } }, "lodash.templatesettings": { @@ -8151,14 +8458,15 @@ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" } }, "lodash.unescape": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", - "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true }, "lodash.uniq": { "version": "4.5.0", @@ -8185,43 +8493,48 @@ "integrity": "sha512-zLeLrzMA1A2vRF1e/0Mo+LNINzi6jzBylHj5WqvQ/WK/5WCZt8si9SyN4p9llr/HRYvVR1AoXHRHl4WTHyQAzQ==", "dev": true, "requires": { - "chalk": "2.1.0" + "chalk": "^2.0.1" } }, "log-update": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "cli-cursor": "1.0.2" + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" }, "dependencies": { "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "onetime": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } } } @@ -8232,8 +8545,8 @@ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" + "readable-stream": "~1.0.2", + "semver": "~4.3.3" }, "dependencies": { "isarray": { @@ -8248,10 +8561,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "semver": { @@ -8274,8 +8587,8 @@ "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", "dev": true, "requires": { - "figures": "1.7.0", - "squeak": "1.3.0" + "figures": "^1.3.5", + "squeak": "^1.0.0" }, "dependencies": { "figures": { @@ -8284,8 +8597,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } } } @@ -8293,41 +8606,46 @@ "loglevel": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true }, "loglevel-colored-level-prefix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", "integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=", + "dev": true, "requires": { - "chalk": "1.1.3", - "loglevel": "1.6.1" + "chalk": "^1.1.3", + "loglevel": "^1.4.1" }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -8343,8 +8661,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lower-case": { @@ -8365,19 +8683,20 @@ "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "indent-string": "2.1.0", - "longest": "1.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "indent-string": "^2.1.0", + "longest": "^1.0.0", + "meow": "^3.3.0" } }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "macaddress": { @@ -8390,14 +8709,16 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-4.2.0.tgz", "integrity": "sha512-zhDAr/erfvZtE1A66DIQ7ZNdGlexVGNDP1P1kvLZprRE0meA0zmxNbp6xmXzNRuZmgW0Ui4ibbaMPYPFHVRMkQ==", + "dev": true, "requires": { - "minimist": "1.2.0" + "minimist": "^1.2.0" }, "dependencies": { "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, "optional": true } } @@ -8411,7 +8732,8 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true }, "map-obj": { "version": "1.0.1", @@ -8429,8 +8751,9 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "markdown-it": { @@ -8439,11 +8762,11 @@ "integrity": "sha512-4J92IhJq1kGoyXddwzzfjr9cEKGexBfFsZooKYMhMLLlWa4+dlSPDUUP7y+xQOCebIj61aLmKlowg//YcdPP1w==", "dev": true, "requires": { - "argparse": "1.0.9", - "entities": "1.1.1", - "linkify-it": "2.0.3", - "mdurl": "1.0.1", - "uc.micro": "1.0.3" + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.3" } }, "markdown-link": { @@ -8458,18 +8781,18 @@ "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", "dev": true, "requires": { - "concat-stream": "1.5.2", - "diacritics-map": "0.1.0", - "gray-matter": "2.1.1", - "lazy-cache": "2.0.2", - "list-item": "1.1.1", - "markdown-link": "0.1.1", - "minimist": "1.2.0", - "mixin-deep": "1.3.0", - "object.pick": "1.3.0", - "remarkable": "1.7.1", - "repeat-string": "1.6.1", - "strip-color": "0.1.0" + "concat-stream": "^1.5.2", + "diacritics-map": "^0.1.0", + "gray-matter": "^2.1.0", + "lazy-cache": "^2.0.2", + "list-item": "^1.1.1", + "markdown-link": "^0.1.1", + "minimist": "^1.2.0", + "mixin-deep": "^1.1.3", + "object.pick": "^1.2.0", + "remarkable": "^1.7.1", + "repeat-string": "^1.6.1", + "strip-color": "^0.1.0" }, "dependencies": { "minimist": { @@ -8495,13 +8818,13 @@ "integrity": "sha512-gRkrvv2WrUTp/jbY+GZxyKPc10Bad5AmX0pnJWHX2eoaRDzFcrTGKTHzSXkyyy0fhBoXF7kgR/7FLvlz+agi3A==", "dev": true, "requires": { - "commander": "2.9.0", - "deep-extend": "0.4.2", - "glob": "7.0.6", - "lodash.flatten": "4.3.0", - "lodash.values": "4.2.0", - "markdownlint": "0.6.4", - "rc": "1.1.7" + "commander": "~2.9.0", + "deep-extend": "~0.4.1", + "glob": "~7.0.3", + "lodash.flatten": "~4.3.0", + "lodash.values": "~4.2.0", + "markdownlint": "~0.6.4", + "rc": "~1.1.6" }, "dependencies": { "commander": { @@ -8571,8 +8894,8 @@ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" }, "dependencies": { "hash-base": { @@ -8581,8 +8904,8 @@ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } } } @@ -8603,8 +8926,9 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "memoizeasync": { @@ -8631,7 +8955,7 @@ "integrity": "sha1-WtU3zTA5NC2SiBAdoeuJdbJgyeU=", "dev": true, "requires": { - "lru-cache": "2.3.1" + "lru-cache": "=2.3.1" }, "dependencies": { "lru-cache": { @@ -8648,16 +8972,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" }, "dependencies": { "load-json-file": { @@ -8666,11 +8990,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "minimist": { @@ -8685,9 +9009,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "read-pkg": { @@ -8696,9 +9020,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -8707,8 +9031,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "strip-bom": { @@ -8717,7 +9041,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -8728,40 +9052,43 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.1" } }, "messageformat": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/messageformat/-/messageformat-1.1.1.tgz", "integrity": "sha512-Q0uXcDtF5pEZsVSyhzDOGgZZK6ykN79VY9CwU3Nv0gsqx62BjdJW0MT+63UkHQ4exe3HE33ZlxR2/YwoJarRTg==", + "dev": true, "requires": { - "glob": "7.0.6", - "make-plural": "4.2.0", - "messageformat-parser": "1.1.0", - "nopt": "3.0.6", - "reserved-words": "0.1.2" + "glob": "~7.0.6", + "make-plural": "^4.1.1", + "messageformat-parser": "^1.1.0", + "nopt": "~3.0.6", + "reserved-words": "^0.1.2" }, "dependencies": { "glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } } } @@ -8769,26 +9096,28 @@ "messageformat-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-1.1.0.tgz", - "integrity": "sha512-Hwem6G3MsKDLS1FtBRGIs8T50P1Q00r3srS6QJePCFbad9fq0nYxwf3rnU2BreApRGhmpKMV7oZI06Sy1c9TPA==" + "integrity": "sha512-Hwem6G3MsKDLS1FtBRGIs8T50P1Q00r3srS6QJePCFbad9fq0nYxwf3rnU2BreApRGhmpKMV7oZI06Sy1c9TPA==", + "dev": true }, "micromatch": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "miller-rabin": { @@ -8797,8 +9126,8 @@ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime": { @@ -8810,20 +9139,23 @@ "mime-db": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true }, "mime-types": { "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "mimic-fn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true }, "minimalistic-assert": { "version": "1.0.0", @@ -8840,9 +9172,9 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -8854,9 +9186,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -8883,21 +9216,21 @@ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", "dev": true, "requires": { - "JSONStream": "1.3.1", - "browser-resolve": "1.11.2", - "cached-path-relative": "1.0.1", - "concat-stream": "1.5.2", - "defined": "1.0.0", - "detective": "4.5.0", - "duplexer2": "0.1.4", - "inherits": "2.0.3", - "parents": "1.0.1", - "readable-stream": "2.3.3", - "resolve": "1.4.0", - "stream-combiner2": "1.1.1", - "subarg": "1.0.0", - "through2": "2.0.3", - "xtend": "4.0.1" + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.0", + "defined": "^1.0.0", + "detective": "^4.0.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.3", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" } }, "ms": { @@ -8920,7 +9253,7 @@ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "readable-stream": "1.1.14" + "readable-stream": "~1.1.9" } }, "isarray": { @@ -8935,10 +9268,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -8952,7 +9285,8 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true }, "nan": { "version": "2.7.0", @@ -8964,59 +9298,66 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "ncname": { "version": "1.0.0", @@ -9024,7 +9365,7 @@ "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", "dev": true, "requires": { - "xml-char-classes": "1.0.0" + "xml-char-classes": "^1.0.0" } }, "negotiator": { @@ -9039,7 +9380,7 @@ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", "dev": true, "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.1" } }, "node-pre-gyp": { @@ -9049,17 +9390,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.3", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.2", - "rc": "1.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.1" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" }, "dependencies": { "ajv": { @@ -9069,8 +9410,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -9093,7 +9434,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -9102,7 +9443,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -9112,9 +9453,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -9131,8 +9472,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -9141,10 +9482,10 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -9160,9 +9501,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "json-stable-stringify": { @@ -9172,7 +9513,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "performance-now": { @@ -9196,28 +9537,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "sntp": { @@ -9226,7 +9567,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } } } @@ -9244,10 +9585,10 @@ "dev": true, "optional": true, "requires": { - "commander": "2.11.0", - "defaults": "1.0.3", - "nan": "2.7.0", - "node-pre-gyp": "0.6.39" + "commander": "^2.8.1", + "defaults": "^1.0.2", + "nan": "^2.0.0", + "node-pre-gyp": "^0.6.4" } }, "nopt": { @@ -9257,8 +9598,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "normalize-package-data": { @@ -9267,18 +9608,19 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "normalize-range": { @@ -9293,10 +9635,10 @@ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" } }, "normalizeurl": { @@ -9311,8 +9653,8 @@ "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", "dev": true, "requires": { - "config-chain": "1.1.11", - "pify": "3.0.0" + "config-chain": "^1.1.11", + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -9327,26 +9669,29 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, "requires": { - "which": "1.3.0" + "which": "^1.2.10" } }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npm-which": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, "requires": { - "commander": "2.11.0", - "npm-path": "2.0.4", - "which": "1.3.0" + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" } }, "npmlog": { @@ -9356,10 +9701,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "nps": { @@ -9368,18 +9713,18 @@ "integrity": "sha512-pWfkK+mydy/MrXDp8MtVJ9GV7NQYTA+Yb6BGXqE66b57WhCI2eROq3IfKzUTDapgXJNjfAPxqiTTGlnXu36cww==", "dev": true, "requires": { - "arrify": "1.0.1", - "chalk": "2.1.0", - "common-tags": "1.7.2", - "find-up": "2.1.0", - "js-yaml": "3.10.0", - "lodash": "4.17.4", - "manage-path": "2.0.0", - "prefix-matches": "1.0.1", - "readline-sync": "1.4.7", - "spawn-command-with-kill": "1.0.0", - "type-detect": "4.0.6", - "yargs": "8.0.2" + "arrify": "^1.0.1", + "chalk": "^2.0.1", + "common-tags": "^1.4.0", + "find-up": "^2.1.0", + "js-yaml": "^3.9.0", + "lodash": "^4.17.4", + "manage-path": "^2.0.0", + "prefix-matches": "^1.0.1", + "readline-sync": "^1.4.7", + "spawn-command-with-kill": "^1.0.0", + "type-detect": "^4.0.3", + "yargs": "^8.0.2" }, "dependencies": { "find-up": { @@ -9388,7 +9733,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } } } @@ -9408,12 +9753,14 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "nwmatcher": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", - "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==" + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true }, "nyc": { "version": "11.2.1", @@ -9421,33 +9768,33 @@ "integrity": "sha1-rYUK/p261/SXByi0suR/7Rw4chw=", "dev": true, "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.0", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.0.7", - "istanbul-lib-instrument": "1.8.0", - "istanbul-lib-report": "1.1.1", - "istanbul-lib-source-maps": "1.2.1", - "istanbul-reports": "1.1.2", - "md5-hex": "1.3.0", - "merge-source-map": "1.0.4", - "micromatch": "2.3.11", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.1", - "signal-exit": "3.0.2", - "spawn-wrap": "1.3.8", - "test-exclude": "4.1.1", - "yargs": "8.0.2", - "yargs-parser": "5.0.0" + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.3.0", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-hook": "^1.0.7", + "istanbul-lib-instrument": "^1.8.0", + "istanbul-lib-report": "^1.1.1", + "istanbul-lib-source-maps": "^1.2.1", + "istanbul-reports": "^1.1.1", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.0.2", + "micromatch": "^2.3.11", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.5.4", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.3.8", + "test-exclude": "^4.1.1", + "yargs": "^8.0.1", + "yargs-parser": "^5.0.0" }, "dependencies": { "align-text": { @@ -9500,7 +9847,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -9544,14 +9891,14 @@ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" } }, "babel-messages": { @@ -9633,7 +9980,7 @@ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -9643,9 +9990,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "builtin-modules": { @@ -9851,7 +10198,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -9860,7 +10207,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extglob": { @@ -9869,7 +10216,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "filename-regex": { @@ -9884,11 +10231,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "find-cache-dir": { @@ -9923,7 +10270,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreground-child": { @@ -9960,12 +10307,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -9974,8 +10321,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -9984,7 +10331,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "globals": { @@ -10005,10 +10352,10 @@ "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "source-map": { @@ -10071,7 +10418,7 @@ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -10113,7 +10460,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -10143,7 +10490,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -10152,7 +10499,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -10161,7 +10508,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-posix-bracket": { @@ -10221,7 +10568,7 @@ "integrity": "sha1-3WYH8DB2V4/n1vKmMM8UO0m6zdw=", "dev": true, "requires": { - "append-transform": "0.4.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-instrument": { @@ -10230,13 +10577,13 @@ "integrity": "sha1-ZvbJQhzJ7EcE928tsIS6kHiitTI=", "dev": true, "requires": { - "babel-generator": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.4.1" + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.1.1", + "semver": "^5.3.0" } }, "istanbul-lib-report": { @@ -10245,10 +10592,10 @@ "integrity": "sha1-8OVfVmVf+jQiIIC3oM1HYOFAX8k=", "dev": true, "requires": { - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { "supports-color": { @@ -10268,11 +10615,11 @@ "integrity": "sha1-pv4ay6jOCO68Y45XLilNJnAIqgw=", "dev": true, "requires": { - "debug": "2.6.8", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.1", - "source-map": "0.5.7" + "debug": "^2.6.3", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" } }, "istanbul-reports": { @@ -10281,7 +10628,7 @@ "integrity": "sha1-D7Lj9qqZIr085F0F2KtNXo4HvU8=", "dev": true, "requires": { - "handlebars": "4.0.10" + "handlebars": "^4.0.3" } }, "js-tokens": { @@ -10379,8 +10726,8 @@ "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "md5-hex": { @@ -10413,7 +10760,7 @@ "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } }, "micromatch": { @@ -10422,19 +10769,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mimic-fn": { @@ -10449,7 +10796,7 @@ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -10479,10 +10826,10 @@ "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -10491,7 +10838,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -10521,8 +10868,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { @@ -10556,9 +10903,9 @@ "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "p-finally": { @@ -10588,10 +10935,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -10701,8 +11048,8 @@ "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -10711,7 +11058,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -10720,7 +11067,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -10731,7 +11078,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -10781,7 +11128,7 @@ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -10845,7 +11192,7 @@ "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "semver": { @@ -10899,12 +11246,12 @@ "integrity": "sha1-+ip5uZDLsLsAGNymdI2INnsZ7DE=", "dev": true, "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.1", - "signal-exit": "3.0.2", - "which": "1.3.0" + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.3.3", + "signal-exit": "^3.0.2", + "which": "^1.2.4" } }, "spdx-correct": { @@ -10913,7 +11260,7 @@ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -10934,8 +11281,8 @@ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -10997,11 +11344,11 @@ "integrity": "sha1-TYSWSwlmsAh+zDNKLOAC09k0HiY=", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, "to-fast-properties": { @@ -11056,8 +11403,8 @@ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "which": { @@ -11066,7 +11413,7 @@ "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -11146,19 +11493,19 @@ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" }, "dependencies": { "camelcase": { @@ -11173,9 +11520,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { @@ -11184,9 +11531,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -11197,10 +11544,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "path-type": { @@ -11209,7 +11556,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "read-pkg": { @@ -11218,9 +11565,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -11229,8 +11576,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "strip-bom": { @@ -11245,7 +11592,7 @@ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -11256,7 +11603,7 @@ "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", "dev": true, "requires": { - "camelcase": "3.0.0" + "camelcase": "^3.0.0" }, "dependencies": { "camelcase": { @@ -11272,12 +11619,14 @@ "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-component": { "version": "0.0.3", @@ -11289,18 +11638,20 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -11309,14 +11660,16 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" }, "dependencies": { "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -11324,23 +11677,26 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -11358,15 +11714,16 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "optimist": { @@ -11375,8 +11732,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "wordwrap": { @@ -11391,13 +11748,14 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, "options": { @@ -11440,9 +11798,9 @@ "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", "dev": true, "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" } }, "which": { @@ -11451,7 +11809,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } } } @@ -11462,68 +11820,75 @@ "integrity": "sha1-Mj2U7KSMV4j1HJ5RV321k7sAfBI=", "dev": true, "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" } }, "ora": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-spinners": "0.1.2", - "object-assign": "4.1.1" + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" }, "dependencies": { "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "onetime": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -11533,8 +11898,8 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "dev": true, "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.3" + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" } }, "os-browserify": { @@ -11560,10 +11925,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-shim": { @@ -11575,7 +11941,8 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "osenv": { "version": "0.1.4", @@ -11584,8 +11951,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "outpipe": { @@ -11594,31 +11961,35 @@ "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", "dev": true, "requires": { - "shell-quote": "1.6.1" + "shell-quote": "^1.4.2" } }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true }, "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "^1.1.0" } }, "p-map": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true }, "pako": { "version": "0.2.9", @@ -11632,7 +12003,7 @@ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "no-case": "2.3.2" + "no-case": "^2.2.0" } }, "parents": { @@ -11641,7 +12012,7 @@ "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", "dev": true, "requires": { - "path-platform": "0.11.15" + "path-platform": "~0.11.15" } }, "parse-asn1": { @@ -11650,11 +12021,11 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.8", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "parse-css-font": { @@ -11664,26 +12035,27 @@ "dev": true, "optional": true, "requires": { - "css-font-size-keywords": "1.0.0", - "css-font-stretch-keywords": "1.0.1", - "css-font-style-keywords": "1.0.1", - "css-font-weight-keywords": "1.0.0", - "css-global-keywords": "1.0.1", - "css-list-helpers": "1.0.1", - "css-system-font-keywords": "1.0.0", - "tcomb": "2.7.0", - "unquote": "1.1.1" + "css-font-size-keywords": "^1.0.0", + "css-font-stretch-keywords": "^1.0.1", + "css-font-style-keywords": "^1.0.1", + "css-font-weight-keywords": "^1.0.0", + "css-global-keywords": "^1.0.1", + "css-list-helpers": "^1.0.1", + "css-system-font-keywords": "^1.0.0", + "tcomb": "^2.5.0", + "unquote": "^1.1.0" } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -11692,7 +12064,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parse5": { @@ -11707,7 +12079,7 @@ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseqs": { @@ -11716,7 +12088,7 @@ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseuri": { @@ -11725,7 +12097,7 @@ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseurl": { @@ -11737,7 +12109,8 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, "passerror": { "version": "1.1.1", @@ -11763,7 +12136,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -11774,12 +12147,14 @@ "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.5", @@ -11799,7 +12174,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pause-stream": { @@ -11808,7 +12183,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pbkdf2": { @@ -11817,11 +12192,11 @@ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "pend": { @@ -11836,15 +12211,15 @@ "integrity": "sha1-wUetNxThJkZ/F2QSnuct+GHUfqA=", "dev": true, "requires": { - "comment-regex": "1.0.0", - "defined": "1.0.0", - "minimist": "1.2.0", - "postcss": "5.2.18", - "postcss-scss": "0.3.1", - "postcss-value-parser": "3.3.0", - "read-file-stdin": "0.2.1", - "string.prototype.repeat": "0.2.0", - "vendors": "1.0.1", + "comment-regex": "^1.0.0", + "defined": "^1.0.0", + "minimist": "^1.2.0", + "postcss": "^5.0.8", + "postcss-scss": "^0.3.0", + "postcss-value-parser": "^3.3.0", + "read-file-stdin": "^0.2.0", + "string.prototype.repeat": "^0.2.0", + "vendors": "^1.0.0", "write-file-stdout": "0.0.2" }, "dependencies": { @@ -11854,11 +12229,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -11887,10 +12262,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -11899,7 +12274,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -11908,7 +12283,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -11916,24 +12291,28 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -11942,23 +12321,26 @@ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" } }, "please-upgrade-node": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.0.1.tgz", - "integrity": "sha1-CmgfLBiRXlQzpcos2U4Lggangts=" + "integrity": "sha1-CmgfLBiRXlQzpcos2U4Lggangts=", + "dev": true }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true }, "pngcrush": { "version": "1.1.1", @@ -11966,10 +12348,10 @@ "integrity": "sha1-k9ZzGAPdLd+hU++UmML2/1Ietss=", "dev": true, "requires": { - "gettemporaryfilepath": "0.0.1", - "memoizeasync": "0.9.0", + "gettemporaryfilepath": "^0.0.1", + "memoizeasync": "^0.9.0", "pngcrush-bin": "3.0.0", - "which": "1.3.0" + "which": "^1.2.10" }, "dependencies": { "gettemporaryfilepath": { @@ -11986,9 +12368,9 @@ "integrity": "sha1-tOWWgTnOVjJv7FXurxsU8nMowhM=", "dev": true, "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" } }, "pngquant": { @@ -12024,7 +12406,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } } } @@ -12036,15 +12418,16 @@ "dev": true, "optional": true, "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" } }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true }, "postcss": { "version": "6.0.15", @@ -12052,9 +12435,9 @@ "integrity": "sha512-v/SpyMzLbtkmh45zUdaqLAaqXqzPdSrw8p4cQVO0/w6YiYfpj4k+Wkzhn68qk9br+H+0qfddhdPEVnbmBPfXVQ==", "dev": true, "requires": { - "chalk": "2.3.0", - "source-map": "0.6.1", - "supports-color": "5.1.0" + "chalk": "^2.3.0", + "source-map": "^0.6.1", + "supports-color": "^5.1.0" }, "dependencies": { "ansi-styles": { @@ -12063,7 +12446,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "chalk": { @@ -12072,9 +12455,9 @@ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" }, "dependencies": { "supports-color": { @@ -12083,7 +12466,7 @@ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -12100,7 +12483,7 @@ "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -12111,9 +12494,9 @@ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" }, "dependencies": { "chalk": { @@ -12122,11 +12505,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12149,10 +12532,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12161,7 +12544,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12170,7 +12553,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12181,9 +12564,9 @@ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", "dev": true, "requires": { - "colormin": "1.1.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" }, "dependencies": { "chalk": { @@ -12192,11 +12575,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12219,10 +12602,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12231,7 +12614,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12240,7 +12623,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12251,8 +12634,8 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" }, "dependencies": { "chalk": { @@ -12261,11 +12644,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12288,10 +12671,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12300,7 +12683,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12309,7 +12692,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12320,7 +12703,7 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.14" }, "dependencies": { "chalk": { @@ -12329,11 +12712,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12356,10 +12739,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12368,7 +12751,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12377,7 +12760,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12388,7 +12771,7 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.4" }, "dependencies": { "chalk": { @@ -12397,11 +12780,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12424,10 +12807,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12436,7 +12819,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12445,7 +12828,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12456,7 +12839,7 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.14" }, "dependencies": { "chalk": { @@ -12465,11 +12848,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12492,10 +12875,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12504,7 +12887,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12513,7 +12896,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12524,7 +12907,7 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.16" }, "dependencies": { "chalk": { @@ -12533,11 +12916,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12560,10 +12943,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12572,7 +12955,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12581,7 +12964,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12592,8 +12975,8 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "5.2.18", - "uniqs": "2.0.0" + "postcss": "^5.0.14", + "uniqs": "^2.0.0" }, "dependencies": { "chalk": { @@ -12602,11 +12985,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12629,10 +13012,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12641,7 +13024,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12650,7 +13033,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12661,8 +13044,8 @@ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "postcss": "5.2.18", - "uniqid": "4.1.1" + "postcss": "^5.0.4", + "uniqid": "^4.0.0" }, "dependencies": { "chalk": { @@ -12671,11 +13054,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12698,10 +13081,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12710,7 +13093,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12719,7 +13102,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12730,9 +13113,9 @@ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "dev": true, "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" }, "dependencies": { "chalk": { @@ -12741,11 +13124,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12768,10 +13151,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12780,7 +13163,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12789,7 +13172,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12800,7 +13183,7 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.4" }, "dependencies": { "chalk": { @@ -12809,11 +13192,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12836,10 +13219,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12848,7 +13231,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12857,7 +13240,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12868,11 +13251,11 @@ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" }, "dependencies": { "browserslist": { @@ -12881,8 +13264,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000784", - "electron-to-chromium": "1.3.30" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } }, "chalk": { @@ -12891,11 +13274,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12918,10 +13301,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -12930,7 +13313,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12939,7 +13322,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -12956,9 +13339,9 @@ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", "dev": true, "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" }, "dependencies": { "chalk": { @@ -12967,11 +13350,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -12994,10 +13377,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13006,7 +13389,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13015,7 +13398,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13026,8 +13409,8 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" }, "dependencies": { "chalk": { @@ -13036,11 +13419,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13063,10 +13446,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13075,7 +13458,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13084,7 +13467,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13095,10 +13478,10 @@ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", "dev": true, "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" }, "dependencies": { "chalk": { @@ -13107,11 +13490,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13134,10 +13517,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13146,7 +13529,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13155,7 +13538,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13166,10 +13549,10 @@ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", "dev": true, "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3" + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" }, "dependencies": { "chalk": { @@ -13178,11 +13561,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13205,10 +13588,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13217,7 +13600,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13226,7 +13609,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13237,7 +13620,7 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.5" }, "dependencies": { "chalk": { @@ -13246,11 +13629,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13273,10 +13656,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13285,7 +13668,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13294,7 +13677,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13305,10 +13688,10 @@ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", "dev": true, "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" }, "dependencies": { "chalk": { @@ -13317,11 +13700,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13344,10 +13727,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13356,7 +13739,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13365,7 +13748,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13376,8 +13759,8 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" }, "dependencies": { "chalk": { @@ -13386,11 +13769,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13413,10 +13796,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13425,7 +13808,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13434,7 +13817,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13445,8 +13828,8 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" }, "dependencies": { "chalk": { @@ -13455,11 +13838,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13482,10 +13865,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13494,7 +13877,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13503,7 +13886,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13514,7 +13897,7 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.4" }, "dependencies": { "chalk": { @@ -13523,11 +13906,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13550,10 +13933,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13562,7 +13945,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13571,7 +13954,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13582,9 +13965,9 @@ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" }, "dependencies": { "chalk": { @@ -13593,11 +13976,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13620,10 +14003,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13632,7 +14015,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13641,7 +14024,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13652,7 +14035,7 @@ "integrity": "sha1-ZcYQ2OKn7g5isYNbcbiHBzSBbks=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.2.4" }, "dependencies": { "chalk": { @@ -13661,11 +14044,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13688,10 +14071,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13700,7 +14083,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13709,7 +14092,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13720,9 +14103,9 @@ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", "dev": true, "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, "postcss-svgo": { @@ -13731,10 +14114,10 @@ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "dev": true, "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" }, "dependencies": { "chalk": { @@ -13743,11 +14126,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13770,10 +14153,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13782,7 +14165,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13791,7 +14174,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13802,9 +14185,9 @@ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", "dev": true, "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "uniqs": "2.0.0" + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" }, "dependencies": { "chalk": { @@ -13813,11 +14196,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13840,10 +14223,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13852,7 +14235,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13861,7 +14244,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13878,9 +14261,9 @@ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "dev": true, "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "uniqs": "2.0.0" + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" }, "dependencies": { "chalk": { @@ -13889,11 +14272,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -13916,10 +14299,10 @@ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.0", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "strip-ansi": { @@ -13928,7 +14311,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -13937,7 +14320,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -13948,14 +14331,15 @@ "integrity": "sha1-AuNM4n8zr0jmi7/OKqwqAEvCt2w=", "dev": true, "requires": { - "is-object": "1.0.1", - "starts-with": "1.0.2" + "is-object": "^1.0.1", + "starts-with": "^1.0.2" } }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true }, "prepend-http": { "version": "1.0.4", @@ -13966,36 +14350,40 @@ "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true }, "prettier": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", - "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=" + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", + "dev": true }, "prettier-eslint": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-8.8.1.tgz", "integrity": "sha512-8YMkJZnA+XVfEW6fPet05jpNmSQbD+Htbh/QyOxQcVf2GIUEZsnGP7ZScaM9Mq2Ra2261eCu60E7/TRIy9coXQ==", + "dev": true, "requires": { - "babel-runtime": "6.26.0", - "common-tags": "1.7.2", - "dlv": "1.1.1", - "eslint": "4.19.1", - "indent-string": "3.2.0", - "lodash.merge": "4.6.1", - "loglevel-colored-level-prefix": "1.0.0", - "prettier": "1.12.1", - "pretty-format": "22.4.3", - "require-relative": "0.8.7", - "typescript": "2.8.3", - "typescript-eslint-parser": "11.0.0" + "babel-runtime": "^6.26.0", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^4.0.0", + "indent-string": "^3.2.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^1.7.0", + "pretty-format": "^22.0.3", + "require-relative": "^0.8.7", + "typescript": "^2.5.1", + "typescript-eslint-parser": "^11.0.0" }, "dependencies": { "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true } } }, @@ -14003,24 +14391,25 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/prettier-eslint-cli/-/prettier-eslint-cli-4.7.1.tgz", "integrity": "sha512-hQbsGaEVz97oBBcKdsJ46khv0kOGkMyWrXzcFOXW6X8UuetZ/j0yDJkNJgUTVc6PVFbbzBXk+qgd5vos9qzXPQ==", + "dev": true, "requires": { - "arrify": "1.0.1", - "babel-runtime": "6.26.0", - "boolify": "1.0.1", - "camelcase-keys": "4.2.0", + "arrify": "^1.0.1", + "babel-runtime": "^6.23.0", + "boolify": "^1.0.0", + "camelcase-keys": "^4.1.0", "chalk": "2.3.0", - "common-tags": "1.7.2", - "eslint": "4.19.1", - "find-up": "2.1.0", - "get-stdin": "5.0.1", - "glob": "7.1.2", - "ignore": "3.3.7", - "indent-string": "3.2.0", - "lodash.memoize": "4.1.2", - "loglevel-colored-level-prefix": "1.0.0", - "messageformat": "1.1.1", - "prettier-eslint": "8.8.1", - "rxjs": "5.5.10", + "common-tags": "^1.4.0", + "eslint": "^4.5.0", + "find-up": "^2.1.0", + "get-stdin": "^5.0.1", + "glob": "^7.1.1", + "ignore": "^3.2.7", + "indent-string": "^3.1.0", + "lodash.memoize": "^4.1.2", + "loglevel-colored-level-prefix": "^1.0.0", + "messageformat": "^1.0.2", + "prettier-eslint": "^8.5.0", + "rxjs": "^5.3.0", "yargs": "10.0.3" }, "dependencies": { @@ -14028,88 +14417,99 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true }, "camelcase-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, "requires": { - "camelcase": "4.1.0", - "map-obj": "2.0.0", - "quick-lru": "1.1.0" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "get-stdin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=" + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true }, "map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true }, "yargs": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", + "dev": true, "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "8.1.0" + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.0.0" } }, "yargs-parser": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -14118,22 +14518,25 @@ "version": "22.4.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz", "integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==", + "dev": true, "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.1" + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "^1.9.0" } } } @@ -14147,12 +14550,14 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true }, "progress": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true }, "proto-list": { "version": "1.2.4", @@ -14166,13 +14571,14 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "3.3.4" + "event-stream": "~3.3.0" } }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "public-encrypt": { "version": "4.0.0", @@ -14180,17 +14586,18 @@ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "q": { "version": "1.5.0", @@ -14207,7 +14614,8 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true }, "query-string": { "version": "4.3.4", @@ -14215,8 +14623,8 @@ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "dev": true, "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "querystring": { @@ -14234,31 +14642,35 @@ "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -14267,8 +14679,9 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -14279,7 +14692,7 @@ "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "range-parser": { @@ -14306,10 +14719,10 @@ "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -14326,8 +14739,8 @@ "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", "dev": true, "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" } }, "read-file-stdin": { @@ -14336,7 +14749,7 @@ "integrity": "sha1-JezP86FTtoCa+ssj7hU4fbng7mE=", "dev": true, "requires": { - "gather-stream": "1.0.0" + "gather-stream": "^1.0.0" } }, "read-only-stream": { @@ -14345,7 +14758,7 @@ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", "dev": true, "requires": { - "readable-stream": "2.3.3" + "readable-stream": "^2.0.2" } }, "read-pkg": { @@ -14354,9 +14767,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -14365,8 +14778,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" }, "dependencies": { "find-up": { @@ -14375,7 +14788,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } } } @@ -14384,14 +14797,15 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -14400,10 +14814,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "readline-sync": { @@ -14418,8 +14832,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "reduce-css-calc": { @@ -14428,9 +14842,9 @@ "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "dev": true, "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" }, "dependencies": { "balanced-match": { @@ -14447,7 +14861,7 @@ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", "dev": true, "requires": { - "balanced-match": "0.4.2" + "balanced-match": "^0.4.2" }, "dependencies": { "balanced-match": { @@ -14461,40 +14875,45 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" }, "dependencies": { "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -14502,7 +14921,8 @@ "regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==" + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true }, "relateurl": { "version": "0.2.7", @@ -14516,8 +14936,8 @@ "integrity": "sha1-qspJchALZqZCpjoQIcpLrBvjv/Y=", "dev": true, "requires": { - "argparse": "0.1.16", - "autolinker": "0.15.3" + "argparse": "~0.1.15", + "autolinker": "~0.15.0" }, "dependencies": { "argparse": { @@ -14526,8 +14946,8 @@ "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", "dev": true, "requires": { - "underscore": "1.7.0", - "underscore.string": "2.4.0" + "underscore": "~1.7.0", + "underscore.string": "~2.4.0" } }, "underscore.string": { @@ -14541,24 +14961,28 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "replace-ext": { @@ -14571,76 +14995,84 @@ "version": "2.83.0", "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "request-promise-core": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.13.1" } }, "request-promise-native": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, "requires": { "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.3" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "require-relative": { "version": "0.8.7", "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=" + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", + "dev": true }, "require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "requirejs": { @@ -14661,7 +15093,7 @@ "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", "dev": true, "requires": { - "underscore": "1.6.0" + "underscore": "~1.6.0" }, "dependencies": { "underscore": { @@ -14675,7 +15107,8 @@ "reserved-words": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", - "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=" + "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", + "dev": true }, "resolve": { "version": "1.4.0", @@ -14683,39 +15116,44 @@ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "ripemd160": { @@ -14724,35 +15162,39 @@ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "dev": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "hash-base": "^2.0.0", + "inherits": "^2.0.1" } }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true }, "rx-lite-aggregates": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "rxjs": { "version": "5.5.10", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", + "dev": true, "requires": { "symbol-observable": "1.0.1" }, @@ -14760,21 +15202,24 @@ "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true } } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "sauce-connect-launcher": { @@ -14783,11 +15228,11 @@ "integrity": "sha1-c0bMj73EQxkTI0ObBzNFH181IfI=", "dev": true, "requires": { - "adm-zip": "0.4.7", - "async": "2.5.0", - "https-proxy-agent": "1.0.0", - "lodash": "4.17.4", - "rimraf": "2.6.2" + "adm-zip": "~0.4.3", + "async": "^2.1.2", + "https-proxy-agent": "~1.0.0", + "lodash": "^4.16.6", + "rimraf": "^2.5.4" } }, "saucelabs": { @@ -14796,13 +15241,14 @@ "integrity": "sha1-uTSpr52ih0s/QKrh/N5QpEZvXzg=", "dev": true, "requires": { - "https-proxy-agent": "1.0.0" + "https-proxy-agent": "^1.0.0" } }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true }, "schemes": { "version": "1.1.1", @@ -14810,7 +15256,7 @@ "integrity": "sha1-QayBM15Ca0KYSCYiOTNPqLXE7Vc=", "dev": true, "requires": { - "extend": "3.0.1" + "extend": "^3.0.0" } }, "seek-bzip": { @@ -14819,7 +15265,7 @@ "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "dev": true, "requires": { - "commander": "2.8.1" + "commander": "~2.8.1" }, "dependencies": { "commander": { @@ -14828,7 +15274,7 @@ "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } } } @@ -14836,7 +15282,8 @@ "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true }, "semver-regex": { "version": "1.0.0", @@ -14850,7 +15297,7 @@ "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", "dev": true, "requires": { - "semver": "5.3.0" + "semver": "^5.3.0" } }, "seq": { @@ -14860,14 +15307,15 @@ "dev": true, "optional": true, "requires": { - "chainsaw": "0.0.9", - "hashish": "0.0.4" + "chainsaw": ">=0.0.7 <0.1", + "hashish": ">=0.0.2 <0.1" } }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-getter": { "version": "0.1.0", @@ -14875,7 +15323,7 @@ "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", "dev": true, "requires": { - "to-object-path": "0.3.0" + "to-object-path": "^0.3.0" } }, "set-immediate-shim": { @@ -14888,11 +15336,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" } }, "setprototypeof": { @@ -14907,8 +15356,8 @@ "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "sharp": { @@ -14917,12 +15366,12 @@ "integrity": "sha1-SEzSpwyQA3CUjcxD4WX3gwa/9Io=", "dev": true, "requires": { - "caw": "2.0.1", - "color": "1.0.3", - "got": "6.7.1", - "nan": "2.7.0", - "semver": "5.3.0", - "tar": "2.2.1" + "caw": "^2.0.0", + "color": "^1.0.3", + "got": "^6.7.1", + "nan": "^2.5.1", + "semver": "^5.3.0", + "tar": "^2.2.1" }, "dependencies": { "caw": { @@ -14931,10 +15380,10 @@ "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", "dev": true, "requires": { - "get-proxy": "2.1.0", - "isurl": "1.0.0", - "tunnel-agent": "0.6.0", - "url-to-options": "1.0.1" + "get-proxy": "^2.0.0", + "isurl": "^1.0.0-alpha5", + "tunnel-agent": "^0.6.0", + "url-to-options": "^1.0.1" } }, "color": { @@ -14943,8 +15392,8 @@ "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", "dev": true, "requires": { - "color-convert": "1.9.0", - "color-string": "1.5.2" + "color-convert": "^1.8.2", + "color-string": "^1.4.0" } }, "color-string": { @@ -14953,8 +15402,8 @@ "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=", "dev": true, "requires": { - "color-name": "1.1.3", - "simple-swizzle": "0.2.2" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, "get-proxy": { @@ -14963,7 +15412,7 @@ "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", "dev": true, "requires": { - "npm-conf": "1.1.3" + "npm-conf": "^1.1.0" } }, "got": { @@ -14972,17 +15421,17 @@ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "timed-out": { @@ -15005,22 +15454,24 @@ "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", "dev": true, "requires": { - "json-stable-stringify": "0.0.1", - "sha.js": "2.4.9" + "json-stable-stringify": "~0.0.0", + "sha.js": "~2.4.4" } }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "shell-quote": { "version": "1.6.1", @@ -15028,16 +15479,17 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-swizzle": { "version": "0.2.2", @@ -15045,7 +15497,7 @@ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", "dev": true, "requires": { - "is-arrayish": "0.3.1" + "is-arrayish": "^0.3.1" }, "dependencies": { "is-arrayish": { @@ -15059,35 +15511,39 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true }, "slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -15096,8 +15552,9 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -15106,55 +15563,62 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -15162,16 +15626,18 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "sntp": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", + "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "socket.io": { @@ -15340,32 +15806,35 @@ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, "source-map-resolve": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, "requires": { - "atob": "2.1.0", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -15378,7 +15847,8 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true }, "sourcemap-to-ast": { "version": "0.0.2", @@ -15386,8 +15856,8 @@ "integrity": "sha1-a+dQispBUvwIwbMvMrDyW8iJ/Uk=", "dev": true, "requires": { - "estraverse": "1.3.2", - "source-map": "0.1.43" + "estraverse": "~1.3.1", + "source-map": "~0.1.30" }, "dependencies": { "estraverse": { @@ -15402,7 +15872,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -15425,8 +15895,8 @@ "integrity": "sha1-gDrXny9W5E3ZJhg3aKrC+ux9DOY=", "dev": true, "requires": { - "ps-tree": "1.1.0", - "spawn-command": "0.0.2-1" + "ps-tree": "^1.1.0", + "spawn-command": "^0.0.2-1" } }, "spdx-correct": { @@ -15435,7 +15905,7 @@ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -15462,32 +15932,35 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" }, "dependencies": { "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -15495,7 +15968,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "squeak": { "version": "1.3.0", @@ -15503,9 +15977,9 @@ "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", "dev": true, "requires": { - "chalk": "1.1.3", - "console-stream": "0.1.1", - "lpad-align": "1.1.2" + "chalk": "^1.0.0", + "console-stream": "^0.1.1", + "lpad-align": "^1.0.1" }, "dependencies": { "chalk": { @@ -15514,11 +15988,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -15527,7 +16001,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -15542,26 +16016,29 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=" + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true }, "staged-git-files": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", - "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==" + "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", + "dev": true }, "starts-with": { "version": "1.0.2", @@ -15579,17 +16056,19 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -15603,7 +16082,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "stream-browserify": { "version": "2.0.1", @@ -15611,8 +16091,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-combiner": { @@ -15621,7 +16101,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-combiner2": { @@ -15630,8 +16110,8 @@ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", "dev": true, "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.3" + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" } }, "stream-http": { @@ -15640,11 +16120,11 @@ "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.2.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, "stream-shift": { @@ -15659,16 +16139,17 @@ "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "stream-to-observable": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "dev": true, "requires": { - "any-observable": "0.2.0" + "any-observable": "^0.2.0" } }, "strict-uri-encode": { @@ -15680,15 +16161,17 @@ "string-argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", - "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=" + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string.prototype.repeat": { @@ -15701,37 +16184,42 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "stringify-object": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.2.2.tgz", "integrity": "sha512-O696NF21oLiDy8PhpWu8AEqoZHw++QW6mUv0UvKZe8gWSdSvMXkiLufK7OmnP27Dro4GU5kb9U7JIO0mBuCRQg==", + "dev": true, "requires": { - "get-own-enumerable-property-symbols": "2.0.1", - "is-obj": "1.0.1", - "is-regexp": "1.0.0" + "get-own-enumerable-property-symbols": "^2.0.1", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" } }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true } } }, @@ -15747,8 +16235,8 @@ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" }, "dependencies": { "strip-bom": { @@ -15757,7 +16245,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -15774,12 +16262,12 @@ "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", "dev": true, "requires": { - "chalk": "1.1.3", - "get-stdin": "4.0.1", - "is-absolute": "0.1.7", - "is-natural-number": "2.1.1", - "minimist": "1.2.0", - "sum-up": "1.0.3" + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" }, "dependencies": { "chalk": { @@ -15788,11 +16276,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "minimist": { @@ -15807,7 +16295,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -15821,7 +16309,8 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-indent": { "version": "1.0.1", @@ -15829,13 +16318,14 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "strip-outer": { "version": "1.0.0", @@ -15843,7 +16333,7 @@ "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.2" } }, "subarg": { @@ -15852,7 +16342,7 @@ "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", "dev": true, "requires": { - "minimist": "1.2.0" + "minimist": "^1.1.0" }, "dependencies": { "minimist": { @@ -15869,7 +16359,7 @@ "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "^1.0.0" }, "dependencies": { "chalk": { @@ -15878,11 +16368,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "strip-ansi": { @@ -15891,7 +16381,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -15907,7 +16397,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=", "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } }, "svgo": { @@ -15916,13 +16406,13 @@ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", "dev": true, "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" }, "dependencies": { "esprima": { @@ -15937,8 +16427,8 @@ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" + "argparse": "^1.0.7", + "esprima": "^2.6.0" } } } @@ -15946,12 +16436,14 @@ "symbol-observable": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true }, "syntax-error": { "version": "1.3.0", @@ -15959,20 +16451,21 @@ "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.3" } }, "table": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, "requires": { - "ajv": "5.2.3", - "ajv-keywords": "2.1.1", - "chalk": "2.1.0", - "lodash": "4.17.4", + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "string-width": "^2.1.1" } }, "taffydb": { @@ -15987,9 +16480,9 @@ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -15999,14 +16492,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.3", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" }, "dependencies": { "debug": { @@ -16027,10 +16520,10 @@ "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" } }, "tcomb": { @@ -16051,11 +16544,11 @@ "form-data": "2.1.4", "httperrors": "2.2.0", "is-stream": "1.1.0", - "lodash.assign": "4.2.0", - "lodash.clone": "4.5.0", - "lodash.defaults": "4.2.0", - "lodash.omit": "4.5.0", - "lodash.uniq": "4.5.0", + "lodash.assign": "^4.2.0", + "lodash.clone": "^4.5.0", + "lodash.defaults": "^4.2.0", + "lodash.omit": "^4.5.0", + "lodash.uniq": "^4.5.0", "passerror": "1.1.1", "socketerrors-papandreou": "0.2.0-patch3" }, @@ -16078,9 +16571,9 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } } } @@ -16091,8 +16584,8 @@ "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", "dev": true, "requires": { - "os-tmpdir": "1.0.2", - "uuid": "2.0.3" + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" }, "dependencies": { "uuid": { @@ -16106,12 +16599,14 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.3", @@ -16119,8 +16614,8 @@ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "through2-filter": { @@ -16129,8 +16624,8 @@ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", "dev": true, "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, "time-stamp": { @@ -16151,15 +16646,16 @@ "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", "dev": true, "requires": { - "process": "0.11.10" + "process": "~0.11.0" } }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-absolute-glob": { @@ -16168,7 +16664,7 @@ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" } }, "to-array": { @@ -16187,36 +16683,40 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" }, "dependencies": { "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -16225,17 +16725,19 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } } } @@ -16250,8 +16752,9 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tr46": { @@ -16278,7 +16781,7 @@ "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.2" } }, "tty-browserify": { @@ -16291,22 +16794,25 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, "optional": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -16322,23 +16828,26 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "~2.1.15" } }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "typescript": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", - "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==" + "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", + "dev": true }, "typescript-eslint-parser": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-11.0.0.tgz", "integrity": "sha512-/fBHTBRBSorWQGKWOOjeMPkzd3o8cOPtFjTRwU5JLNGgVtmMa3KDkiw0R2n+H6ovo9y3OX30/5usm6YTqY44PQ==", + "dev": true, "requires": { "lodash.unescape": "4.0.1", "semver": "5.4.1" @@ -16347,7 +16856,8 @@ "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true } } }, @@ -16363,8 +16873,8 @@ "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==", "dev": true, "requires": { - "commander": "2.12.2", - "source-map": "0.6.1" + "commander": "~2.12.1", + "source-map": "~0.6.1" }, "dependencies": { "commander": { @@ -16429,30 +16939,32 @@ "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", "dev": true, "requires": { - "sprintf-js": "1.0.3", - "util-deprecate": "1.0.2" + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" } }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -16469,7 +16981,7 @@ "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", "dev": true, "requires": { - "macaddress": "0.2.8" + "macaddress": "^0.2.8" } }, "uniqs": { @@ -16484,8 +16996,8 @@ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "dev": true, "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" }, "dependencies": { "json-stable-stringify": { @@ -16494,7 +17006,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } } } @@ -16506,8 +17018,8 @@ "dev": true, "optional": true, "requires": { - "isnumeric": "0.2.0", - "viewport-dimensions": "0.2.0" + "isnumeric": "^0.2.0", + "viewport-dimensions": "^0.2.0" } }, "unpipe": { @@ -16527,25 +17039,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -16555,12 +17070,14 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, @@ -16585,7 +17102,8 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true }, "url": { "version": "0.11.0", @@ -16611,7 +17129,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "url-regex": { @@ -16620,7 +17138,7 @@ "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", "dev": true, "requires": { - "ip-regex": "1.0.3" + "ip-regex": "^1.0.1" } }, "url-to-options": { @@ -16635,9 +17153,9 @@ "integrity": "sha1-E7DVtz4uz1/APIgVV0vpxLVQ/20=", "dev": true, "requires": { - "glob": "7.1.2", - "underscore": "1.8.3", - "urijs": "1.19.0" + "glob": "^7.0.3", + "underscore": "^1.8.3", + "urijs": "^1.18.2" }, "dependencies": { "underscore": { @@ -16652,14 +17170,16 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -16669,8 +17189,8 @@ "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", "dev": true, "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.33" + "lru-cache": "2.2.x", + "tmp": "0.0.x" }, "dependencies": { "lru-cache": { @@ -16701,7 +17221,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "utils-merge": { "version": "1.0.1", @@ -16712,7 +17233,8 @@ "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true }, "vali-date": { "version": "1.0.0", @@ -16726,8 +17248,8 @@ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "vargs": { @@ -16746,10 +17268,11 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "viewport-dimensions": { @@ -16765,8 +17288,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.3", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } }, @@ -16776,8 +17299,8 @@ "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", "dev": true, "requires": { - "object-assign": "4.1.1", - "readable-stream": "2.3.3" + "object-assign": "^4.0.1", + "readable-stream": "^2.0.0" } }, "vinyl-fs": { @@ -16786,23 +17309,23 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.1", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.3", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" }, "dependencies": { "strip-bom": { @@ -16811,7 +17334,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } } } @@ -16835,8 +17358,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, "requires": { - "browser-process-hrtime": "0.1.2" + "browser-process-hrtime": "^0.1.2" } }, "walkdir": { @@ -16851,7 +17375,7 @@ "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", "dev": true, "requires": { - "wrap-fn": "0.1.5" + "wrap-fn": "^0.1.0" } }, "watchify": { @@ -16860,13 +17384,13 @@ "integrity": "sha1-8HX9LoqGrN6Eztum5cKgvt1SPZ4=", "dev": true, "requires": { - "anymatch": "1.3.2", - "browserify": "14.4.0", - "chokidar": "1.7.0", - "defined": "1.0.0", - "outpipe": "1.1.1", - "through2": "2.0.3", - "xtend": "4.0.1" + "anymatch": "^1.3.0", + "browserify": "^14.0.0", + "chokidar": "^1.0.0", + "defined": "^1.0.0", + "outpipe": "^1.1.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" } }, "wd": { @@ -16878,7 +17402,7 @@ "archiver": "1.3.0", "async": "2.0.1", "lodash": "4.16.2", - "mkdirp": "0.5.1", + "mkdirp": "^0.5.1", "q": "1.4.1", "request": "2.79.0", "underscore.string": "3.3.4", @@ -16912,7 +17436,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "caseless": { @@ -16927,11 +17451,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cryptiles": { @@ -16940,7 +17464,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -16949,9 +17473,9 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-validator": { @@ -16960,10 +17484,10 @@ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true, "requires": { - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.1", - "pinkie-promise": "2.0.1" + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" } }, "hawk": { @@ -16972,10 +17496,10 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -16990,9 +17514,9 @@ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "lodash": { @@ -17019,26 +17543,26 @@ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3", - "uuid": "3.1.0" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~2.0.6", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "qs": "~6.3.0", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "~0.4.1", + "uuid": "^3.0.0" } }, "sntp": { @@ -17047,7 +17571,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "strip-ansi": { @@ -17056,7 +17580,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -17076,12 +17600,14 @@ "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true }, "whatwg-encoding": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, "requires": { "iconv-lite": "0.4.19" } @@ -17089,7 +17615,8 @@ "whatwg-mimetype": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", - "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==" + "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", + "dev": true }, "whatwg-url": { "version": "4.8.0", @@ -17097,8 +17624,8 @@ "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", "dev": true, "requires": { - "tr46": "0.0.3", - "webidl-conversions": "3.0.1" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" }, "dependencies": { "webidl-conversions": { @@ -17119,14 +17646,16 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wide-align": { "version": "1.1.2", @@ -17135,7 +17664,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" }, "dependencies": { "is-fullwidth-code-point": { @@ -17145,7 +17674,7 @@ "dev": true, "optional": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -17155,9 +17684,9 @@ "dev": true, "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -17167,7 +17696,7 @@ "dev": true, "optional": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -17175,41 +17704,46 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -17240,8 +17774,9 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-stdout": { @@ -17256,8 +17791,8 @@ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", "dev": true, "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "options": ">=0.0.5", + "ultron": "1.0.x" } }, "wtf-8": { @@ -17305,12 +17840,14 @@ "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yargs": { "version": "8.0.2", @@ -17318,19 +17855,19 @@ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" }, "dependencies": { "camelcase": { @@ -17347,7 +17884,7 @@ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -17364,7 +17901,7 @@ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "dev": true, "requires": { - "fd-slicer": "1.0.1" + "fd-slicer": "~1.0.1" } }, "yeast": { @@ -17379,10 +17916,10 @@ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.0", - "lodash": "4.17.4", - "readable-stream": "2.3.3" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" } } } diff --git a/package-scripts.js b/package-scripts.js index ab236890a6..7a1099bc53 100644 --- a/package-scripts.js +++ b/package-scripts.js @@ -9,10 +9,12 @@ const path = require('path'); * @param {string} mochaParams Parameters for the mocha CLI to execute the desired test. * @returns {string} Command string to be executed by nps. */ -function test (testName, mochaParams) { +function test(testName, mochaParams) { const coverageCommand = `nyc --no-clean --report-dir coverage/reports/${testName}`; const mochaCommand = `node ${path.join('bin', 'mocha')}`; // Include 'node' and path.join for Windows compatibility - return `${process.env.COVERAGE ? coverageCommand : ''} ${mochaCommand} ${mochaParams}`.trim(); + return `${ + process.env.COVERAGE ? coverageCommand : '' + } ${mochaCommand} ${mochaParams}`.trim(); } module.exports = { @@ -87,11 +89,17 @@ module.exports = { hiddenFromHelp: true }, unit: { - script: test('unit', '"test/unit/*.spec.js" "test/node-unit/*.spec.js" --growl'), + script: test( + 'unit', + '"test/unit/*.spec.js" "test/node-unit/*.spec.js" --growl' + ), description: 'Run Node.js unit tests' }, integration: { - script: test('integration', '--timeout 5000 --slow 500 "test/integration/*.spec.js"'), + script: test( + 'integration', + '--timeout 5000 --slow 500 "test/integration/*.spec.js"' + ), description: 'Run Node.js integration tests', hiddenFromHelp: true }, @@ -102,33 +110,51 @@ module.exports = { }, compilers: { default: { - script: 'nps test.node.compilers.coffee test.node.compilers.custom test.node.compilers.multiple', + script: + 'nps test.node.compilers.coffee test.node.compilers.custom test.node.compilers.multiple', description: 'Run Node.js --compilers flag tests (deprecated)', hiddenFromHelp: true }, coffee: { - script: test('compilers-coffee', '--compilers coffee:coffee-script/register test/compiler'), - description: 'Run Node.js coffeescript compiler tests using --compilers flag (deprecated)', + script: test( + 'compilers-coffee', + '--compilers coffee:coffee-script/register test/compiler' + ), + description: + 'Run Node.js coffeescript compiler tests using --compilers flag (deprecated)', hiddenFromHelp: true }, custom: { - script: test('compilers-custom', '--compilers foo:./test/compiler-fixtures/foo.fixture test/compiler'), - description: 'Run Node.js custom compiler tests using --compilers flag (deprecated)', + script: test( + 'compilers-custom', + '--compilers foo:./test/compiler-fixtures/foo.fixture test/compiler' + ), + description: + 'Run Node.js custom compiler tests using --compilers flag (deprecated)', hiddenFromHelp: true }, multiple: { - script: test('compilers-multiple', '--compilers coffee:coffee-script/register,foo:./test/compiler-fixtures/foo.fixture test/compiler'), - description: 'Run Node.js multiple compiler tests using--compilers flag (deprecated)', + script: test( + 'compilers-multiple', + '--compilers coffee:coffee-script/register,foo:./test/compiler-fixtures/foo.fixture test/compiler' + ), + description: + 'Run Node.js multiple compiler tests using--compilers flag (deprecated)', hiddenFromHelp: true } }, requires: { - script: test('requires', ['--require coffee-script/register', - '--require test/require/a.js', - '--require test/require/b.coffee', - '--require test/require/c.js', - '--require test/require/d.coffee', - 'test/require/require.spec.js'].join(' ')), + script: test( + 'requires', + [ + '--require coffee-script/register', + '--require test/require/a.js', + '--require test/require/b.coffee', + '--require test/require/c.js', + '--require test/require/d.coffee', + 'test/require/require.spec.js' + ].join(' ') + ), description: 'Run Node.js --require flag tests', hiddenFromHelp: true }, @@ -161,22 +187,34 @@ module.exports = { hiddenFromHelp: true }, bddRequire: { - script: test('only-bdd-require', '--ui qunit test/only/bdd-require.spec'), + script: test( + 'only-bdd-require', + '--ui qunit test/only/bdd-require.spec' + ), description: 'Run Node.js "only" w/ QUnit interface tests', hiddenFromHelp: true }, globalBdd: { - script: test('global-only-bdd', '--ui bdd test/only/global/bdd.spec'), + script: test( + 'global-only-bdd', + '--ui bdd test/only/global/bdd.spec' + ), description: 'Run Node.js "global only" w/ BDD interface tests', hiddenFromHelp: true }, globalTdd: { - script: test('global-only-tdd', '--ui tdd test/only/global/tdd.spec'), + script: test( + 'global-only-tdd', + '--ui tdd test/only/global/tdd.spec' + ), description: 'Run Node.js "global only" w/ TDD interface tests', hiddenFromHelp: true }, globalQunit: { - script: test('global-only-qunit', '--ui qunit test/only/global/qunit.spec'), + script: test( + 'global-only-qunit', + '--ui qunit test/only/global/qunit.spec' + ), description: 'Run Node.js "global only" w/ QUnit interface tests', hiddenFromHelp: true } @@ -184,7 +222,8 @@ module.exports = { }, browser: { default: { - script: 'nps clean build test.browser.unit test.browser.bdd test.browser.tdd test.browser.qunit test.browser.esm', + script: + 'nps clean build test.browser.unit test.browser.bdd test.browser.tdd test.browser.qunit test.browser.esm', description: 'Run browser tests' }, unit: { @@ -231,16 +270,19 @@ module.exports = { }, docs: { default: { - script: 'nps docs.prebuild && bundle exec jekyll build --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts && nps docs.postbuild', + script: + 'nps docs.prebuild && bundle exec jekyll build --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts && nps docs.postbuild', description: 'Build documentation' }, prebuild: { - script: 'rimraf docs/_dist docs/api && node scripts/docs-update-toc.js && nps docs.api', + script: + 'rimraf docs/_dist docs/api && node scripts/docs-update-toc.js && nps docs.api', description: 'Prepare system for doc building', hiddenFromHelp: true }, postbuild: { - script: 'buildProduction docs/_site/index.html --outroot docs/_dist --canonicalroot https://mochajs.org/ --optimizeimages --svgo --inlinehtmlimage 9400 --inlinehtmlscript 0 --asyncscripts && cp docs/_headers docs/_dist/_headers && node scripts/netlify-headers.js >> docs/_dist/_headers', + script: + 'buildProduction docs/_site/index.html --outroot docs/_dist --canonicalroot https://mochajs.org/ --optimizeimages --svgo --inlinehtmlimage 9400 --inlinehtmlscript 0 --asyncscripts && cp docs/_headers docs/_dist/_headers && node scripts/netlify-headers.js >> docs/_dist/_headers', description: 'Post-process docs after build', hiddenFromHelp: true }, @@ -250,11 +292,13 @@ module.exports = { hiddenFromHelp: true }, watch: { - script: 'nps docs.prewatch && bundle exec jekyll serve --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts --watch', + script: + 'nps docs.prewatch && bundle exec jekyll serve --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts --watch', description: 'Watch docs for changes & build' }, api: { - script: 'mkdirp docs/api && jsdoc -c jsdoc.conf.json && cp LICENSE docs/api', + script: + 'mkdirp docs/api && jsdoc -c jsdoc.conf.json && cp LICENSE docs/api', description: 'build api docs' } }, diff --git a/test/browser-specific/esm.spec.js b/test/browser-specific/esm.spec.js index d7460f8090..2af61d3135 100644 --- a/test/browser-specific/esm.spec.js +++ b/test/browser-specific/esm.spec.js @@ -1,5 +1,5 @@ 'use strict'; -it('should register a global if it did not fail', function () { +it('should register a global if it did not fail', function() { expect(window.MOCHA_IS_OK).to.be.ok(); }); diff --git a/test/browser/array.spec.js b/test/browser/array.spec.js index b831f61717..bd44d4b6f4 100644 --- a/test/browser/array.spec.js +++ b/test/browser/array.spec.js @@ -1,8 +1,8 @@ 'use strict'; -describe('Array', function () { - describe('#push()', function () { - it('should append a value', function () { +describe('Array', function() { + describe('#push()', function() { + it('should append a value', function() { var arr = []; arr.push('foo'); arr.push('bar'); @@ -12,7 +12,7 @@ describe('Array', function () { assert(arr[2] === 'baz'); }); - it('should return the length', function () { + it('should return the length', function() { var arr = []; assert(arr.push('foo') === 1); assert(arr.push('bar') === 2); @@ -21,16 +21,16 @@ describe('Array', function () { }); }); -describe('Array', function () { - describe('#pop()', function () { - it('should remove and return the last value with expected error', function () { +describe('Array', function() { + describe('#pop()', function() { + it('should remove and return the last value with expected error', function() { var arr = [1, 2, 3]; assert(arr.pop() === 3); assert(arr.pop() === 2); assert(arr.pop() === -1); }); - it('should adjust .length', function () { + it('should adjust .length', function() { var arr = [1, 2, 3]; arr.pop(); assert(arr.length === 2); diff --git a/test/browser/grep.spec.js b/test/browser/grep.spec.js index 6c5a83aeb5..45041a7cda 100644 --- a/test/browser/grep.spec.js +++ b/test/browser/grep.spec.js @@ -1,110 +1,110 @@ 'use strict'; // numbers -describe('21', function () { - it('1', function () { +describe('21', function() { + it('1', function() { assert(true); }); - it('2', function () { + it('2', function() { assert(true); }); }); // symbols -describe('@Array', function () { - it('.pop()', function () { +describe('@Array', function() { + it('.pop()', function() { assert(true); }); - it('.push()', function () { + it('.push()', function() { assert(true); }); - it('.length', function () { + it('.length', function() { assert(true); }); }); -describe('@Function', function () { - it('.call()', function () { +describe('@Function', function() { + it('.call()', function() { assert(true); }); - it('.apply()', function () { + it('.apply()', function() { assert(true); }); - it('.length', function () { + it('.length', function() { assert(true); }); - it('.name', function () { + it('.name', function() { assert(true); }); - it('.prototype', function () { + it('.prototype', function() { assert(true); }); }); // url with hashtags -describe('#Services', function () { - describe('#http', function () { - it('.createClient()', function () { +describe('#Services', function() { + describe('#http', function() { + it('.createClient()', function() { assert(true); }); - it('.Server()', function () { + it('.Server()', function() { assert(true); }); }); - describe('#crypto', function () { - it('.randomBytes()', function () { + describe('#crypto', function() { + it('.randomBytes()', function() { assert(true); }); - it('.Hmac()', function () { + it('.Hmac()', function() { assert(true); }); }); }); // Uppercase -describe('CONSTANTS', function () { - it('.STATUS_CODES', function () { +describe('CONSTANTS', function() { + it('.STATUS_CODES', function() { assert(true); }); }); // Dates -describe('Date:', function () { - it('01/02/2015', function () { +describe('Date:', function() { + it('01/02/2015', function() { assert(true); }); - it('01/03/2015', function () { + it('01/03/2015', function() { assert(true); }); - it('01/06/2015', function () { + it('01/06/2015', function() { assert(true); }); }); // etc.. -describe('booking/summary', function () { - it('should be run last', function () { +describe('booking/summary', function() { + it('should be run last', function() { assert(true); }); }); -describe('component/booking/summary', function () { - it('should be run second', function () { +describe('component/booking/summary', function() { + it('should be run second', function() { assert(true); }); }); -describe('component/booking/intro', function () { - it('should be run first', function () { +describe('component/booking/intro', function() { + it('should be run first', function() { assert(true); }); }); -describe('contains numbers', function () { - it('should run if the number 92 matching', function () { +describe('contains numbers', function() { + it('should run if the number 92 matching', function() { assert(true); }); - it('should run if the number 8 matching', function () { + it('should run if the number 8 matching', function() { assert(true); }); }); diff --git a/test/browser/large.spec.js b/test/browser/large.spec.js index 7dfa62f2a2..3b26cc2860 100644 --- a/test/browser/large.spec.js +++ b/test/browser/large.spec.js @@ -2,19 +2,19 @@ var n = 30; while (n--) { - describe('Array ' + n, function () { + describe('Array ' + n, function() { var arr; - beforeEach(function () { + beforeEach(function() { arr = [1, 2, 3]; }); - describe('#indexOf()', function () { - it('should return -1 when the value is not present', function () { + describe('#indexOf()', function() { + it('should return -1 when the value is not present', function() { assert(arr.indexOf(5) === -1); }); - it('should return the correct index when the value is present', function (done) { + it('should return the correct index when the value is present', function(done) { assert(arr.indexOf(1) === 0); assert(arr.indexOf(2) === 1); done(); @@ -23,16 +23,16 @@ while (n--) { }); } -describe('something', function () { - it('should provide a useful error', function (done) { - setTimeout(function () { +describe('something', function() { + it('should provide a useful error', function(done) { + setTimeout(function() { throw new Error('boom'); }, 1); }); - it('should provide an even better error on phantomjs', function (done) { - setTimeout(function () { - var AssertionError = function (message, actual, expected) { + it('should provide an even better error on phantomjs', function(done) { + setTimeout(function() { + var AssertionError = function(message, actual, expected) { this.message = message; this.actual = actual; this.expected = expected; @@ -42,7 +42,9 @@ describe('something', function () { AssertionError.prototype.name = 'AssertionError'; AssertionError.prototype.constructor = AssertionError; - mocha.throwError(new AssertionError('kabooom', 'text with a typo', 'text without a typo')); + mocha.throwError( + new AssertionError('kabooom', 'text with a typo', 'text without a typo') + ); done(); }, 1); }); diff --git a/test/browser/multiple-done.spec.js b/test/browser/multiple-done.spec.js index ddb536735e..2a84e777e9 100644 --- a/test/browser/multiple-done.spec.js +++ b/test/browser/multiple-done.spec.js @@ -1,17 +1,17 @@ 'use strict'; -describe('Multiple Done calls', function () { - it('should report an error if done was called more than once', function (done) { +describe('Multiple Done calls', function() { + it('should report an error if done was called more than once', function(done) { done(); done(); }); - it('should report an error if an exception happened async after done was called', function (done) { + it('should report an error if an exception happened async after done was called', function(done) { done(); setTimeout(done, 50); }); - it('should report an error if an exception happened after done was called', function (done) { + it('should report an error if an exception happened after done was called', function(done) { done(); throw new Error('thrown error'); }); diff --git a/test/browser/opts.spec.js b/test/browser/opts.spec.js index 7b93f22615..78e6fbd333 100644 --- a/test/browser/opts.spec.js +++ b/test/browser/opts.spec.js @@ -1,7 +1,7 @@ 'use strict'; -describe('Options', function () { - it('should set timeout value', function () { +describe('Options', function() { + it('should set timeout value', function() { assert(this.test._timeout === 1500); }); }); diff --git a/test/browser/stack-trace.spec.js b/test/browser/stack-trace.spec.js index a4801bf32f..b10acf604b 100644 --- a/test/browser/stack-trace.spec.js +++ b/test/browser/stack-trace.spec.js @@ -1,6 +1,6 @@ 'use strict'; -describe('Stack trace', function () { - it('should prettify the stack-trace', function () { +describe('Stack trace', function() { + it('should prettify the stack-trace', function() { var err = new Error(); // We do this fake stack-trace because we under development, // and our root isn't `node_modules`, `bower` or `components` diff --git a/test/browser/ui.spec.js b/test/browser/ui.spec.js index 9b2addc92a..4247c30302 100644 --- a/test/browser/ui.spec.js +++ b/test/browser/ui.spec.js @@ -3,31 +3,29 @@ // test titles containing regex-conflicting characters // leading $ -describe('$.jQuery', function () { +describe('$.jQuery', function() { // parens - describe('.on()', function () { - it('should set an event', function () { + describe('.on()', function() { + it('should set an event', function() { assert(true); }); }); - describe('.off()', function () { - it('should remove an event', function () { - - }); + describe('.off()', function() { + it('should remove an event', function() {}); }); }); // another generic describe block to verify it is absent // when grepping on $.jQuery -describe('@Array', function () { - it('.pop()', function () { +describe('@Array', function() { + it('.pop()', function() { assert(true); }); - it('.push()', function () { + it('.push()', function() { assert(true); }); - it('.length', function () { + it('.length', function() { assert(true); }); }); diff --git a/test/bundle/amd.spec.js b/test/bundle/amd.spec.js index e42d3dab0b..bb616f02a7 100644 --- a/test/bundle/amd.spec.js +++ b/test/bundle/amd.spec.js @@ -3,10 +3,12 @@ var path = require('path'); var fs = require('fs'); -it('should build a non-broken bundle for AMD', function (done) { +it('should build a non-broken bundle for AMD', function(done) { var bundle = path.join(process.cwd(), 'mocha.js'); - fs.readFile(bundle, 'utf8', function (err, content) { - if (err) { return done(err); } + fs.readFile(bundle, 'utf8', function(err, content) { + if (err) { + return done(err); + } expect(content).not.to.match(/define.amd/); done(); diff --git a/test/integration/compiler-globbing.spec.js b/test/integration/compiler-globbing.spec.js index ee0a7237a5..c459a95bcf 100644 --- a/test/integration/compiler-globbing.spec.js +++ b/test/integration/compiler-globbing.spec.js @@ -4,21 +4,31 @@ var expect = require('expect.js'); var exec = require('child_process').exec; var path = require('path'); -describe('globbing like --compilers', function () { - it('should find a file of each type', function (done) { - exec('"' + process.execPath + '" "' + path.join('bin', 'mocha') + '" -R json --require coffee-script/register --require test/compiler-fixtures/foo.fixture "test/compiler/*.@(coffee|foo)"', { cwd: path.join(__dirname, '..', '..') }, function (error, stdout) { - if (error && !stdout) { return done(error); } - var results = JSON.parse(stdout); - expect(results).to.have.property('tests'); - var titles = []; - for (var index = 0; index < results.tests.length; index += 1) { - expect(results.tests[index]).to.have.property('fullTitle'); - titles.push(results.tests[index].fullTitle); +describe('globbing like --compilers', function() { + it('should find a file of each type', function(done) { + exec( + '"' + + process.execPath + + '" "' + + path.join('bin', 'mocha') + + '" -R json --require coffee-script/register --require test/compiler-fixtures/foo.fixture "test/compiler/*.@(coffee|foo)"', + {cwd: path.join(__dirname, '..', '..')}, + function(error, stdout) { + if (error && !stdout) { + return done(error); + } + var results = JSON.parse(stdout); + expect(results).to.have.property('tests'); + var titles = []; + for (var index = 0; index < results.tests.length; index += 1) { + expect(results.tests[index]).to.have.property('fullTitle'); + titles.push(results.tests[index].fullTitle); + } + expect(titles).to.contain('coffeescript should work'); + expect(titles).to.contain('custom compiler should work'); + expect(titles).to.have.length(2); + done(); } - expect(titles).to.contain('coffeescript should work'); - expect(titles).to.contain('custom compiler should work'); - expect(titles).to.have.length(2); - done(); - }); + ); }); }); diff --git a/test/integration/diffs.spec.js b/test/integration/diffs.spec.js index 88b6f69e0d..9282fc9756 100644 --- a/test/integration/diffs.spec.js +++ b/test/integration/diffs.spec.js @@ -6,20 +6,28 @@ var run = helpers.runMocha; var fs = require('fs'); var getDiffs = helpers.getDiffs; -function getExpectedOutput () { - var output = fs.readFileSync('test/integration/fixtures/diffs/output', 'UTF8').replace(/\r\n/g, '\n'); +function getExpectedOutput() { + var output = fs + .readFileSync('test/integration/fixtures/diffs/output', 'UTF8') + .replace(/\r\n/g, '\n'); // Diffs are delimited in file by "// DIFF" - return output.split(/\s*\/\/ DIFF/).slice(1).map(function (diff) { - return diff.split('\n').filter(Boolean).join('\n'); - }); + return output + .split(/\s*\/\/ DIFF/) + .slice(1) + .map(function(diff) { + return diff + .split('\n') + .filter(Boolean) + .join('\n'); + }); } -describe('diffs', function () { +describe('diffs', function() { var diffs, expected; - before(function (done) { - run('diffs/diffs.fixture.js', ['-C'], function (err, res) { + before(function(done) { + run('diffs/diffs.fixture.js', ['-C'], function(err, res) { expected = getExpectedOutput(); diffs = getDiffs(res.output.replace(/\r\n/g, '\n')); done(err); @@ -38,8 +46,8 @@ describe('diffs', function () { 'should work with objects', 'should show value diffs and not be affected by commas', 'should display diff by data and not like an objects' - ].forEach(function (title, i) { - it(title, function () { + ].forEach(function(title, i) { + it(title, function() { assert.equal(diffs[i], expected[i]); }); }); diff --git a/test/integration/fixtures/glob/glob.spec.js b/test/integration/fixtures/glob/glob.spec.js index 235c2f8417..c6c3d26a69 100644 --- a/test/integration/fixtures/glob/glob.spec.js +++ b/test/integration/fixtures/glob/glob.spec.js @@ -1,7 +1,7 @@ 'use strict'; -describe('globbing test', function () { - it('should find this test', function () { +describe('globbing test', function() { + it('should find this test', function() { // see test/integration/glob.spec.js for details }); }); diff --git a/test/integration/fixtures/glob/nested/glob.spec.js b/test/integration/fixtures/glob/nested/glob.spec.js index 235c2f8417..c6c3d26a69 100644 --- a/test/integration/fixtures/glob/nested/glob.spec.js +++ b/test/integration/fixtures/glob/nested/glob.spec.js @@ -1,7 +1,7 @@ 'use strict'; -describe('globbing test', function () { - it('should find this test', function () { +describe('globbing test', function() { + it('should find this test', function() { // see test/integration/glob.spec.js for details }); }); diff --git a/test/integration/fixtures/options/forbid-only/only-suite.js b/test/integration/fixtures/options/forbid-only/only-suite.js index ba15a5a2df..372cefbd9f 100644 --- a/test/integration/fixtures/options/forbid-only/only-suite.js +++ b/test/integration/fixtures/options/forbid-only/only-suite.js @@ -1,5 +1,5 @@ 'use strict'; -describe.only('forbid only - suite marked with only', function () { - it('test1', function () {}); +describe.only('forbid only - suite marked with only', function() { + it('test1', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-only/only.js b/test/integration/fixtures/options/forbid-only/only.js index c09e804126..1019808760 100644 --- a/test/integration/fixtures/options/forbid-only/only.js +++ b/test/integration/fixtures/options/forbid-only/only.js @@ -1,7 +1,7 @@ 'use strict'; -describe('forbid only - test marked with only', function () { - it('test1', function () {}); - it.only('test2', function () {}); - it('test3', function () {}); +describe('forbid only - test marked with only', function() { + it('test1', function() {}); + it.only('test2', function() {}); + it('test3', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-only/passed.js b/test/integration/fixtures/options/forbid-only/passed.js index 6c4d4ac1d4..afa8de7b53 100644 --- a/test/integration/fixtures/options/forbid-only/passed.js +++ b/test/integration/fixtures/options/forbid-only/passed.js @@ -1,7 +1,7 @@ 'use strict'; -describe('forbid only - `.only` is not used', function () { - it('test1', function () {}); - it('test2', function () {}); - it('test3', function () {}); +describe('forbid only - `.only` is not used', function() { + it('test1', function() {}); + it('test2', function() {}); + it('test3', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-pending/before-this.skip.js b/test/integration/fixtures/options/forbid-pending/before-this.skip.js index 7c329dff4a..2147afb77e 100644 --- a/test/integration/fixtures/options/forbid-pending/before-this.skip.js +++ b/test/integration/fixtures/options/forbid-pending/before-this.skip.js @@ -1,6 +1,8 @@ 'use strict'; -describe('forbid pending - before calls `skip()`', function () { - it('test', function () {}); - before(function () { this.skip(); }); +describe('forbid pending - before calls `skip()`', function() { + it('test', function() {}); + before(function() { + this.skip(); + }); }); diff --git a/test/integration/fixtures/options/forbid-pending/beforeEach-this.skip.js b/test/integration/fixtures/options/forbid-pending/beforeEach-this.skip.js index 58fa1fe8a3..d9051f8b17 100644 --- a/test/integration/fixtures/options/forbid-pending/beforeEach-this.skip.js +++ b/test/integration/fixtures/options/forbid-pending/beforeEach-this.skip.js @@ -1,6 +1,8 @@ 'use strict'; -describe('forbid pending - beforeEach calls `skip()`', function () { - it('test', function () {}); - beforeEach(function () { this.skip(); }); +describe('forbid pending - beforeEach calls `skip()`', function() { + it('test', function() {}); + beforeEach(function() { + this.skip(); + }); }); diff --git a/test/integration/fixtures/options/forbid-pending/passed.js b/test/integration/fixtures/options/forbid-pending/passed.js index cd12668f4d..27291cce17 100644 --- a/test/integration/fixtures/options/forbid-pending/passed.js +++ b/test/integration/fixtures/options/forbid-pending/passed.js @@ -1,7 +1,7 @@ 'use strict'; -describe('forbid pending - all test pass', function () { - it('test1', function () {}); - it('test2', function () {}); - it('test3', function () {}); +describe('forbid pending - all test pass', function() { + it('test1', function() {}); + it('test2', function() {}); + it('test3', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-pending/pending.js b/test/integration/fixtures/options/forbid-pending/pending.js index 96abd0bf47..81f6544831 100644 --- a/test/integration/fixtures/options/forbid-pending/pending.js +++ b/test/integration/fixtures/options/forbid-pending/pending.js @@ -1,7 +1,7 @@ 'use strict'; -describe('forbid pending - test without function', function () { - it('test1', function () {}); +describe('forbid pending - test without function', function() { + it('test1', function() {}); it('test2'); - it('test3', function () {}); + it('test3', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-pending/skip-suite.js b/test/integration/fixtures/options/forbid-pending/skip-suite.js index fe0a4578f0..628dc3a853 100644 --- a/test/integration/fixtures/options/forbid-pending/skip-suite.js +++ b/test/integration/fixtures/options/forbid-pending/skip-suite.js @@ -1,5 +1,5 @@ 'use strict'; -describe.skip('forbid pending - suite marked with skip', function () { - it('test1', function () {}); +describe.skip('forbid pending - suite marked with skip', function() { + it('test1', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-pending/skip.js b/test/integration/fixtures/options/forbid-pending/skip.js index c6fd31d303..8b4fcd91c4 100644 --- a/test/integration/fixtures/options/forbid-pending/skip.js +++ b/test/integration/fixtures/options/forbid-pending/skip.js @@ -1,7 +1,7 @@ 'use strict'; -describe('forbid pending - test marked with skip', function () { - it('test1', function () {}); - it.skip('test2', function () {}); - it('test3', function () {}); +describe('forbid pending - test marked with skip', function() { + it('test1', function() {}); + it.skip('test2', function() {}); + it('test3', function() {}); }); diff --git a/test/integration/fixtures/options/forbid-pending/this.skip.js b/test/integration/fixtures/options/forbid-pending/this.skip.js index a920813250..2f76a6fdad 100644 --- a/test/integration/fixtures/options/forbid-pending/this.skip.js +++ b/test/integration/fixtures/options/forbid-pending/this.skip.js @@ -1,7 +1,9 @@ 'use strict'; -describe('forbid pending - test calls `skip()`', function () { - it('test1', function () {}); - it('test2', function () { this.skip(); }); - it('test3', function () {}); +describe('forbid pending - test calls `skip()`', function() { + it('test1', function() {}); + it('test2', function() { + this.skip(); + }); + it('test3', function() {}); }); diff --git a/test/integration/fixtures/regression/1794/simple-ui.js b/test/integration/fixtures/regression/1794/simple-ui.js index 5cfde0465f..b27c623003 100644 --- a/test/integration/fixtures/regression/1794/simple-ui.js +++ b/test/integration/fixtures/regression/1794/simple-ui.js @@ -7,8 +7,8 @@ var Test = require(path + 'test'); /** * A simple UI that only exposes a single function: test */ -module.exports = Mocha.interfaces['simple-ui'] = function (suite) { - suite.on('pre-require', function (context, file, mocha) { +module.exports = Mocha.interfaces['simple-ui'] = function(suite) { + suite.on('pre-require', function(context, file, mocha) { var common = require(path + 'interfaces/common')([suite], context); context.run = mocha.options.delay && common.runWithSuite(suite); @@ -17,7 +17,7 @@ module.exports = Mocha.interfaces['simple-ui'] = function (suite) { * Describes a specification or test-case with the given `title` * and callback `fn` acting as a thunk. */ - context.test = function (title, fn) { + context.test = function(title, fn) { var test = new Test(title, fn); test.file = file; suite.addTest(test); diff --git a/test/integration/fixtures/simple-reporter.js b/test/integration/fixtures/simple-reporter.js index d172b2ae66..d066a84304 100644 --- a/test/integration/fixtures/simple-reporter.js +++ b/test/integration/fixtures/simple-reporter.js @@ -3,26 +3,26 @@ var baseReporter = require('../../../lib/reporters/base'); module.exports = simplereporter; -function simplereporter (runner) { +function simplereporter(runner) { baseReporter.call(this, runner); - runner.on('suite', function (suite) { - console.log('on(\'suite\') called'); + runner.on('suite', function(suite) { + console.log("on('suite') called"); }); - runner.on('fail', function (test, err) { - console.log('on(\'fail\') called'); + runner.on('fail', function(test, err) { + console.log("on('fail') called"); }); - runner.on('pass', function (test) { - console.log('on(\'pass\') called'); + runner.on('pass', function(test) { + console.log("on('pass') called"); }); - runner.on('test end', function (test, err) { - console.log('on(\'test end\') called'); + runner.on('test end', function(test, err) { + console.log("on('test end') called"); }); - runner.on('end', function () { - console.log('on(\'end\') called'); + runner.on('end', function() { + console.log("on('end') called"); }); } diff --git a/test/integration/glob.spec.js b/test/integration/glob.spec.js index 4d1c5a52f4..ebcd6353a6 100644 --- a/test/integration/glob.spec.js +++ b/test/integration/glob.spec.js @@ -6,96 +6,172 @@ var path = require('path'); var node = '"' + process.execPath + '"'; -describe('globbing', function () { - describe('by the shell', function () { - it('should find the first level test', function (done) { - testGlob.shouldSucceed('./*.js', function (results) { - expect(results.stdout).to.contain('["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,'); - }, done); +describe('globbing', function() { + describe('by the shell', function() { + it('should find the first level test', function(done) { + testGlob.shouldSucceed( + './*.js', + function(results) { + expect(results.stdout).to.contain( + '["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,' + ); + }, + done + ); }); - it('should not find a non-matching pattern', function (done) { - testGlob.shouldFail('./*-none.js', function (results) { - expect(results.stderr).to.contain('Could not find any test files matching pattern'); - }, done); + it('should not find a non-matching pattern', function(done) { + testGlob.shouldFail( + './*-none.js', + function(results) { + expect(results.stderr).to.contain( + 'Could not find any test files matching pattern' + ); + }, + done + ); }); - it('should handle both matching and non-matching patterns in the same command', function (done) { - testGlob.shouldSucceed('./*.js ./*-none.js', function (results) { - expect(results.stdout).to.contain('["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,'); - expect(results.stderr).to.contain('Could not find any test files matching pattern'); - }, done); + it('should handle both matching and non-matching patterns in the same command', function(done) { + testGlob.shouldSucceed( + './*.js ./*-none.js', + function(results) { + expect(results.stdout).to.contain( + '["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,' + ); + expect(results.stderr).to.contain( + 'Could not find any test files matching pattern' + ); + }, + done + ); }); }); - describe('by Mocha', function () { - it('should find the first level test', function (done) { - testGlob.shouldSucceed('"./*.js"', function (results) { - expect(results.stdout).to.contain('["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,'); - }, done); + describe('by Mocha', function() { + it('should find the first level test', function(done) { + testGlob.shouldSucceed( + '"./*.js"', + function(results) { + expect(results.stdout).to.contain( + '["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,' + ); + }, + done + ); }); - it('should not find a non-matching pattern', function (done) { - testGlob.shouldFail('"./*-none.js"', function (results) { - expect(results.stderr).to.contain('Could not find any test files matching pattern'); - }, done); + it('should not find a non-matching pattern', function(done) { + testGlob.shouldFail( + '"./*-none.js"', + function(results) { + expect(results.stderr).to.contain( + 'Could not find any test files matching pattern' + ); + }, + done + ); }); - it('should handle both matching and non-matching patterns in the same command', function (done) { - testGlob.shouldSucceed('"./*.js" "./*-none.js"', function (results) { - expect(results.stdout).to.contain('["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,'); - expect(results.stderr).to.contain('Could not find any test files matching pattern'); - }, done); + it('should handle both matching and non-matching patterns in the same command', function(done) { + testGlob.shouldSucceed( + '"./*.js" "./*-none.js"', + function(results) { + expect(results.stdout).to.contain( + '["end",{"suites":1,"tests":1,"passes":1,"pending":0,"failures":0,' + ); + expect(results.stderr).to.contain( + 'Could not find any test files matching pattern' + ); + }, + done + ); }); - describe('double-starred', function () { - it('should find the tests on multiple levels', function (done) { - testGlob.shouldSucceed('"./**/*.js"', function (results) { - expect(results.stdout).to.contain('["end",{"suites":2,"tests":2,"passes":2,"pending":0,"failures":0,'); - }, done); + describe('double-starred', function() { + it('should find the tests on multiple levels', function(done) { + testGlob.shouldSucceed( + '"./**/*.js"', + function(results) { + expect(results.stdout).to.contain( + '["end",{"suites":2,"tests":2,"passes":2,"pending":0,"failures":0,' + ); + }, + done + ); }); - it('should not find a non-matching pattern', function (done) { - testGlob.shouldFail('"./**/*-none.js"', function (results) { - expect(results.stderr).to.contain('Could not find any test files matching pattern'); - }, done); + it('should not find a non-matching pattern', function(done) { + testGlob.shouldFail( + '"./**/*-none.js"', + function(results) { + expect(results.stderr).to.contain( + 'Could not find any test files matching pattern' + ); + }, + done + ); }); - it('should handle both matching and non-matching patterns in the same command', function (done) { - testGlob.shouldSucceed('"./**/*.js" "./**/*-none.js"', function (results) { - expect(results.stdout).to.contain('["end",{"suites":2,"tests":2,"passes":2,"pending":0,"failures":0,'); - expect(results.stderr).to.contain('Could not find any test files matching pattern'); - }, done); + it('should handle both matching and non-matching patterns in the same command', function(done) { + testGlob.shouldSucceed( + '"./**/*.js" "./**/*-none.js"', + function(results) { + expect(results.stdout).to.contain( + '["end",{"suites":2,"tests":2,"passes":2,"pending":0,"failures":0,' + ); + expect(results.stderr).to.contain( + 'Could not find any test files matching pattern' + ); + }, + done + ); }); }); }); }); var testGlob = { - shouldSucceed: execMochaWith(function shouldNotError (error) { if (error) { throw error; } }), + shouldSucceed: execMochaWith(function shouldNotError(error) { + if (error) { + throw error; + } + }), - shouldFail: execMochaWith(function shouldFailWithStderr (error, stderr) { expect(error && error.message).to.contain(stderr); }) + shouldFail: execMochaWith(function shouldFailWithStderr(error, stderr) { + expect(error && error.message).to.contain(stderr); + }) }; -var isFlakeyNode = (function () { +var isFlakeyNode = (function() { var version = process.versions.node.split('.'); - return version[0] === '0' && version[1] === '10' && process.platform === 'win32'; -}()); + return ( + version[0] === '0' && version[1] === '10' && process.platform === 'win32' + ); +})(); -function execMochaWith (validate) { - return function execMocha (glob, assertOn, done) { - exec(node + ' "' + path.join('..', '..', '..', '..', 'bin', 'mocha') + '" -R json-stream ' + glob, { cwd: path.join(__dirname, 'fixtures', 'glob') }, function (error, stdout, stderr) { - try { - validate(error, stderr); - if (isFlakeyNode && error && (stderr === '')) { - execMocha(glob, assertOn, done); - } else { - assertOn({ stdout: stdout, stderr: stderr }); - done(); +function execMochaWith(validate) { + return function execMocha(glob, assertOn, done) { + exec( + node + + ' "' + + path.join('..', '..', '..', '..', 'bin', 'mocha') + + '" -R json-stream ' + + glob, + {cwd: path.join(__dirname, 'fixtures', 'glob')}, + function(error, stdout, stderr) { + try { + validate(error, stderr); + if (isFlakeyNode && error && stderr === '') { + execMocha(glob, assertOn, done); + } else { + assertOn({stdout: stdout, stderr: stderr}); + done(); + } + } catch (assertion) { + done(assertion); } - } catch (assertion) { - done(assertion); } - }); + ); }; } diff --git a/test/integration/helpers.js b/test/integration/helpers.js index 09ca5deac9..c0f61f7487 100644 --- a/test/integration/helpers.js +++ b/test/integration/helpers.js @@ -25,13 +25,13 @@ module.exports = { * @param {Array} args - Extra args to mocha executable * @param {Function} done - Callback */ - runMocha: function (fixturePath, args, done) { + runMocha: function(fixturePath, args, done) { var path; path = resolveFixturePath(fixturePath); args = args || []; - invokeMocha(args.concat(['-C', path]), function (err, res) { + invokeMocha(args.concat(['-C', path]), function(err, res) { if (err) { return done(err); } @@ -48,13 +48,16 @@ module.exports = { * @param {string[]} args - Array of args * @param {Function} fn - Callback */ - runMochaJSON: function (fixturePath, args, fn) { + runMochaJSON: function(fixturePath, args, fn) { var path; path = resolveFixturePath(fixturePath); args = args || []; - return invokeMocha(args.concat(['--reporter', 'json', path]), function (err, res) { + return invokeMocha(args.concat(['--reporter', 'json', path]), function( + err, + res + ) { if (err) return fn(err); try { @@ -75,11 +78,11 @@ module.exports = { * @param {string} output * returns {string[]} */ - getDiffs: function (output) { + getDiffs: function(output) { var diffs, i, inDiff, inStackTrace; diffs = []; - output.split('\n').forEach(function (line) { + output.split('\n').forEach(function(line) { if (line.match(/^\s{2}\d+\)/)) { // New spec, e.g. "1) spec title" diffs.push([]); @@ -89,7 +92,6 @@ module.exports = { } else if (!diffs.length || inStackTrace) { // Haven't encountered a spec yet // or we're in the middle of a stack trace - } else if (line.indexOf('+ expected - actual') !== -1) { inDiff = true; } else if (line.match(/at Context/)) { @@ -102,7 +104,7 @@ module.exports = { }); // Ignore empty lines before/after diff - return diffs.map(function (diff) { + return diffs.map(function(diff) { return diff.slice(1, -3).join('\n'); }); }, @@ -137,14 +139,14 @@ module.exports = { resolveFixturePath: resolveFixturePath }; -function invokeMocha (args, fn, cwd) { +function invokeMocha(args, fn, cwd) { var output, mocha, listener; output = ''; args = [path.join(__dirname, '..', '..', 'bin', 'mocha')].concat(args); - mocha = spawn(process.execPath, args, { cwd: cwd }); + mocha = spawn(process.execPath, args, {cwd: cwd}); - listener = function (data) { + listener = function(data) { output += data; }; @@ -152,7 +154,7 @@ function invokeMocha (args, fn, cwd) { mocha.stderr.on('data', listener); mocha.on('error', fn); - mocha.on('close', function (code) { + mocha.on('close', function(code) { fn(null, { output: output.split('\n').join('\n'), code: code @@ -162,17 +164,17 @@ function invokeMocha (args, fn, cwd) { return mocha; } -function resolveFixturePath (fixture) { +function resolveFixturePath(fixture) { return path.join('./test/integration/fixtures', fixture); } -function getSummary (res) { - return ['passing', 'pending', 'failing'].reduce(function (summary, type) { +function getSummary(res) { + return ['passing', 'pending', 'failing'].reduce(function(summary, type) { var pattern, match; pattern = new RegExp(' (\\d+) ' + type + '\\s'); match = pattern.exec(res.output); - summary[type] = (match) ? parseInt(match, 10) : 0; + summary[type] = match ? parseInt(match, 10) : 0; return summary; }, res); diff --git a/test/integration/hook-err.spec.js b/test/integration/hook-err.spec.js index 10d0e97c4a..493e91004c 100644 --- a/test/integration/hook-err.spec.js +++ b/test/integration/hook-err.spec.js @@ -5,193 +5,159 @@ var runMocha = require('./helpers').runMocha; var splitRegExp = require('./helpers').splitRegExp; var bang = require('../../lib/reporters/base').symbols.bang; -describe('hook error handling', function () { +describe('hook error handling', function() { var lines; - describe('before hook error', function () { + describe('before hook error', function() { before(run('hooks/before-hook-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['before', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['before', bang + 'test 3']); }); }); - describe('before hook error tip', function () { + describe('before hook error tip', function() { before(run('hooks/before-hook-error-tip.fixture.js', onlyErrorTitle())); - it('should verify results', function () { - assert.deepEqual( - lines, - ['1) spec 2', '"before all" hook:'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['1) spec 2', '"before all" hook:']); }); }); - describe('before each hook error', function () { + describe('before each hook error', function() { before(run('hooks/beforeEach-hook-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['before', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['before', bang + 'test 3']); }); }); - describe('after hook error', function () { + describe('after hook error', function() { before(run('hooks/after-hook-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['test 1', 'test 2', 'after', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['test 1', 'test 2', 'after', bang + 'test 3']); }); }); - describe('after each hook error', function () { + describe('after each hook error', function() { before(run('hooks/afterEach-hook-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['test 1', 'after', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['test 1', 'after', bang + 'test 3']); }); }); - describe('multiple hook errors', function () { + describe('multiple hook errors', function() { before(run('hooks/multiple-hook-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - [ - 'root before', - '1-1 before', - 'root before each', - '1 before each', - '1-1 before each', - bang + '1-1 after each', - '1 after each', - 'root after each', - '1-1 after', - bang + '1-2 before', - 'root before each', - '1 before each', - '1-2 before each', - '1-2 test 1', - '1-2 after each', - bang + '1 after each', - 'root after each', - '1-2 after', - '1 after', - '2-1 before', - 'root before each', - '2 before each', - bang + '2 after each', - bang + 'root after each', - '2-1 after', - '2 after', - 'root after' - ] - ); + it('should verify results', function() { + assert.deepEqual(lines, [ + 'root before', + '1-1 before', + 'root before each', + '1 before each', + '1-1 before each', + bang + '1-1 after each', + '1 after each', + 'root after each', + '1-1 after', + bang + '1-2 before', + 'root before each', + '1 before each', + '1-2 before each', + '1-2 test 1', + '1-2 after each', + bang + '1 after each', + 'root after each', + '1-2 after', + '1 after', + '2-1 before', + 'root before each', + '2 before each', + bang + '2 after each', + bang + 'root after each', + '2-1 after', + '2 after', + 'root after' + ]); }); }); - describe('async - before hook error', function () { + describe('async - before hook error', function() { before(run('hooks/before-hook-async-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['before', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['before', bang + 'test 3']); }); }); - describe('async - before hook error tip', function () { - before(run('hooks/before-hook-async-error-tip.fixture.js', onlyErrorTitle())); - it('should verify results', function () { - assert.deepEqual( - lines, - ['1) spec 2', '"before all" hook:'] - ); + describe('async - before hook error tip', function() { + before( + run('hooks/before-hook-async-error-tip.fixture.js', onlyErrorTitle()) + ); + it('should verify results', function() { + assert.deepEqual(lines, ['1) spec 2', '"before all" hook:']); }); }); - describe('async - before each hook error', function () { + describe('async - before each hook error', function() { before(run('hooks/beforeEach-hook-async-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['before', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['before', bang + 'test 3']); }); }); - describe('async - after hook error', function () { + describe('async - after hook error', function() { before(run('hooks/after-hook-async-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['test 1', 'test 2', 'after', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['test 1', 'test 2', 'after', bang + 'test 3']); }); }); - describe('async - after each hook error', function () { + describe('async - after each hook error', function() { before(run('hooks/afterEach-hook-async-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - ['test 1', 'after', bang + 'test 3'] - ); + it('should verify results', function() { + assert.deepEqual(lines, ['test 1', 'after', bang + 'test 3']); }); }); - describe('async - multiple hook errors', function () { + describe('async - multiple hook errors', function() { before(run('hooks/multiple-hook-async-error.fixture.js')); - it('should verify results', function () { - assert.deepEqual( - lines, - [ - 'root before', - '1-1 before', - 'root before each', - '1 before each', - '1-1 before each', - bang + '1-1 after each', - '1 after each', - 'root after each', - '1-1 after', - bang + '1-2 before', - 'root before each', - '1 before each', - '1-2 before each', - '1-2 test 1', - '1-2 after each', - bang + '1 after each', - 'root after each', - '1-2 after', - '1 after', - '2-1 before', - 'root before each', - '2 before each', - bang + '2 after each', - bang + 'root after each', - '2-1 after', - '2 after', - 'root after' - ] - ); + it('should verify results', function() { + assert.deepEqual(lines, [ + 'root before', + '1-1 before', + 'root before each', + '1 before each', + '1-1 before each', + bang + '1-1 after each', + '1 after each', + 'root after each', + '1-1 after', + bang + '1-2 before', + 'root before each', + '1 before each', + '1-2 before each', + '1-2 test 1', + '1-2 after each', + bang + '1 after each', + 'root after each', + '1-2 after', + '1 after', + '2-1 before', + 'root before each', + '2 before each', + bang + '2 after each', + bang + 'root after each', + '2-1 after', + '2 after', + 'root after' + ]); }); }); - function run (fnPath, outputFilter) { - return function (done) { - runMocha(fnPath, ['--reporter', 'dot'], function (err, res) { + function run(fnPath, outputFilter) { + return function(done) { + runMocha(fnPath, ['--reporter', 'dot'], function(err, res) { assert.ifError(err); lines = res.output .split(splitRegExp) - .map(function (line) { + .map(function(line) { return line.trim(); }) .filter(outputFilter || onlyConsoleOutput()); @@ -202,25 +168,25 @@ describe('hook error handling', function () { } }); -function onlyConsoleOutput () { +function onlyConsoleOutput() { var foundSummary = false; - return function (line) { + return function(line) { if (!foundSummary) { - foundSummary = !!(/\(\d+ms\)/).exec(line); + foundSummary = !!/\(\d+ms\)/.exec(line); } return !foundSummary && line.length > 0; }; } -function onlyErrorTitle (line) { +function onlyErrorTitle(line) { var foundErrorTitle = false; var foundError = false; - return function (line) { + return function(line) { if (!foundErrorTitle) { - foundErrorTitle = !!(/^1\)/).exec(line); + foundErrorTitle = !!/^1\)/.exec(line); } if (!foundError) { - foundError = (/Error:/).exec(line); + foundError = /Error:/.exec(line); } return foundErrorTitle && !foundError; }; diff --git a/test/integration/hooks.spec.js b/test/integration/hooks.spec.js index e68aa66b64..316d522771 100644 --- a/test/integration/hooks.spec.js +++ b/test/integration/hooks.spec.js @@ -5,9 +5,9 @@ var runMocha = require('./helpers').runMocha; var splitRegExp = require('./helpers').splitRegExp; var args = ['--reporter', 'dot']; -describe('hooks', function () { - it('are ran in correct order', function (done) { - runMocha('cascade.fixture.js', args, function (err, res) { +describe('hooks', function() { + it('are ran in correct order', function(done) { + runMocha('cascade.fixture.js', args, function(err, res) { var lines, expected; if (err) { @@ -15,11 +15,15 @@ describe('hooks', function () { return; } - lines = res.output.split(splitRegExp).map(function (line) { - return line.trim(); - }).filter(function (line) { - return line.length; - }).slice(0, -1); + lines = res.output + .split(splitRegExp) + .map(function(line) { + return line.trim(); + }) + .filter(function(line) { + return line.length; + }) + .slice(0, -1); expected = [ 'before one', @@ -37,7 +41,7 @@ describe('hooks', function () { 'after one' ]; - expected.forEach(function (line, i) { + expected.forEach(function(line, i) { assert.equal(lines[i], line); }); diff --git a/test/integration/multiple-done.spec.js b/test/integration/multiple-done.spec.js index 3ac216e457..781871a631 100644 --- a/test/integration/multiple-done.spec.js +++ b/test/integration/multiple-done.spec.js @@ -4,42 +4,42 @@ var assert = require('assert'); var run = require('./helpers').runMochaJSON; var args = []; -describe('multiple calls to done()', function () { +describe('multiple calls to done()', function() { var res; - describe('from a spec', function () { - before(function (done) { - run('multiple-done.fixture.js', args, function (err, result) { + describe('from a spec', function() { + before(function(done) { + run('multiple-done.fixture.js', args, function(err, result) { res = result; done(err); }); }); - it('results in failures', function () { + it('results in failures', function() { assert.equal(res.stats.pending, 0, 'wrong "pending" count'); assert.equal(res.stats.passes, 1, 'wrong "passes" count'); assert.equal(res.stats.failures, 1, 'wrong "failures" count'); }); - it('throws a descriptive error', function () { + it('throws a descriptive error', function() { assert.equal(res.failures[0].err.message, 'done() called multiple times'); }); }); - describe('with error passed on second call', function () { - before(function (done) { - run('multiple-done-with-error.fixture.js', args, function (err, result) { + describe('with error passed on second call', function() { + before(function(done) { + run('multiple-done-with-error.fixture.js', args, function(err, result) { res = result; done(err); }); }); - it('results in failures', function () { + it('results in failures', function() { assert.equal(res.stats.pending, 0, 'wrong "pending" count'); assert.equal(res.stats.passes, 1, 'wrong "passes" count'); assert.equal(res.stats.failures, 1, 'wrong "failures" count'); }); - it('should throw a descriptive error', function () { + it('should throw a descriptive error', function() { assert.equal( res.failures[0].err.message, "second error (and Mocha's done() called multiple times)" @@ -47,66 +47,66 @@ describe('multiple calls to done()', function () { }); }); - describe('with multiple specs', function () { - before(function (done) { - run('multiple-done-specs.fixture.js', args, function (err, result) { + describe('with multiple specs', function() { + before(function(done) { + run('multiple-done-specs.fixture.js', args, function(err, result) { res = result; done(err); }); }); - it('results in a failure', function () { + it('results in a failure', function() { assert.equal(res.stats.pending, 0); assert.equal(res.stats.passes, 2); assert.equal(res.stats.failures, 1); assert.equal(res.code, 1); }); - it('correctly attributes the error', function () { + it('correctly attributes the error', function() { assert.equal(res.failures[0].fullTitle, 'suite test1'); assert.equal(res.failures[0].err.message, 'done() called multiple times'); }); }); - describe('from a before hook', function () { - before(function (done) { - run('multiple-done-before.fixture.js', args, function (err, result) { + describe('from a before hook', function() { + before(function(done) { + run('multiple-done-before.fixture.js', args, function(err, result) { res = result; done(err); }); }); - it('results in a failure', function () { + it('results in a failure', function() { assert.equal(res.stats.pending, 0); assert.equal(res.stats.passes, 1); assert.equal(res.stats.failures, 1); assert.equal(res.code, 1); }); - it('correctly attributes the error', function () { + it('correctly attributes the error', function() { assert.equal(res.failures[0].fullTitle, 'suite "before all" hook'); assert.equal(res.failures[0].err.message, 'done() called multiple times'); }); }); - describe('from a beforeEach hook', function () { - before(function (done) { - run('multiple-done-beforeEach.fixture.js', args, function (err, result) { + describe('from a beforeEach hook', function() { + before(function(done) { + run('multiple-done-beforeEach.fixture.js', args, function(err, result) { res = result; done(err); }); }); - it('results in a failure', function () { + it('results in a failure', function() { assert.equal(res.stats.pending, 0); assert.equal(res.stats.passes, 2); assert.equal(res.stats.failures, 2); assert.equal(res.code, 2); }); - it('correctly attributes the errors', function () { + it('correctly attributes the errors', function() { assert.equal(res.failures.length, 2); - res.failures.forEach(function (failure) { + res.failures.forEach(function(failure) { assert.equal(failure.fullTitle, 'suite "before each" hook'); assert.equal(failure.err.message, 'done() called multiple times'); }); diff --git a/test/integration/no-diff.spec.js b/test/integration/no-diff.spec.js index 10bb53c2d7..acde326f65 100644 --- a/test/integration/no-diff.spec.js +++ b/test/integration/no-diff.spec.js @@ -3,10 +3,10 @@ var helpers = require('./helpers'); var run = helpers.runMocha; -describe('no-diff', function () { - describe('when enabled', function () { - it('should not display a diff', function (done) { - run('no-diff.fixture.js', ['--no-diff'], function (err, res) { +describe('no-diff', function() { + describe('when enabled', function() { + it('should not display a diff', function(done) { + run('no-diff.fixture.js', ['--no-diff'], function(err, res) { if (err) { done(err); return; @@ -18,9 +18,9 @@ describe('no-diff', function () { }); }); - describe('when disabled', function () { - it('should display a diff', function (done) { - run('no-diff.fixture.js', ['--diff'], function (err, res) { + describe('when disabled', function() { + it('should display a diff', function(done) { + run('no-diff.fixture.js', ['--diff'], function(err, res) { if (err) { done(err); return; diff --git a/test/integration/only.spec.js b/test/integration/only.spec.js index 098af6786c..f3bbbd1eab 100644 --- a/test/integration/only.spec.js +++ b/test/integration/only.spec.js @@ -3,10 +3,10 @@ var run = require('./helpers').runMochaJSON; var assert = require('assert'); -describe('.only()', function () { - describe('bdd', function () { - it('should run only tests that marked as `only`', function (done) { - run('options/only/bdd.fixture.js', ['--ui', 'bdd'], function (err, res) { +describe('.only()', function() { + describe('bdd', function() { + it('should run only tests that marked as `only`', function(done) { + run('options/only/bdd.fixture.js', ['--ui', 'bdd'], function(err, res) { if (err) { done(err); return; @@ -20,9 +20,9 @@ describe('.only()', function () { }); }); - describe('tdd', function () { - it('should run only tests that marked as `only`', function (done) { - run('options/only/tdd.fixture.js', ['--ui', 'tdd'], function (err, res) { + describe('tdd', function() { + it('should run only tests that marked as `only`', function(done) { + run('options/only/tdd.fixture.js', ['--ui', 'tdd'], function(err, res) { if (err) { done(err); return; @@ -36,9 +36,12 @@ describe('.only()', function () { }); }); - describe('qunit', function () { - it('should run only tests that marked as `only`', function (done) { - run('options/only/qunit.fixture.js', ['--ui', 'qunit'], function (err, res) { + describe('qunit', function() { + it('should run only tests that marked as `only`', function(done) { + run('options/only/qunit.fixture.js', ['--ui', 'qunit'], function( + err, + res + ) { if (err) { done(err); return; diff --git a/test/integration/options.spec.js b/test/integration/options.spec.js index 5cc63b42d5..a8119db695 100644 --- a/test/integration/options.spec.js +++ b/test/integration/options.spec.js @@ -8,14 +8,14 @@ var directInvoke = helpers.invokeMocha; var resolvePath = helpers.resolveFixturePath; var args = []; -describe('options', function () { - describe('--async-only', function () { - before(function () { +describe('options', function() { + describe('--async-only', function() { + before(function() { args = ['--async-only']; }); - it('should fail synchronous specs', function (done) { - run('options/async-only-sync.fixture.js', args, function (err, res) { + it('should fail synchronous specs', function(done) { + run('options/async-only-sync.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -30,8 +30,8 @@ describe('options', function () { }); }); - it('should allow asynchronous specs', function (done) { - run('options/async-only-async.fixture.js', args, function (err, res) { + it('should allow asynchronous specs', function(done) { + run('options/async-only-async.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -47,13 +47,13 @@ describe('options', function () { }); }); - describe('--bail', function () { - before(function () { + describe('--bail', function() { + before(function() { args = ['--bail']; }); - it('should stop after the first error', function (done) { - run('options/bail.fixture.js', args, function (err, res) { + it('should stop after the first error', function(done) { + run('options/bail.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -69,8 +69,8 @@ describe('options', function () { }); }); - it('should stop all hooks after the first error', function (done) { - run('options/bail-with-after.fixture.js', args, function (err, res) { + it('should stop all hooks after the first error', function(done) { + run('options/bail-with-after.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -86,13 +86,13 @@ describe('options', function () { }); }); - describe('--sort', function () { - before(function () { + describe('--sort', function() { + before(function() { args = ['--sort']; }); - it('should sort tests in alphabetical order', function (done) { - run('options/sort*', args, function (err, res) { + it('should sort tests in alphabetical order', function(done) { + run('options/sort*', args, function(err, res) { if (err) { done(err); return; @@ -101,19 +101,18 @@ describe('options', function () { assert.equal(res.stats.passes, 2); assert.equal(res.stats.failures, 0); - assert.equal(res.passes[0].fullTitle, - 'alpha should be executed first'); + assert.equal(res.passes[0].fullTitle, 'alpha should be executed first'); assert.equal(res.code, 0); done(); }); }); }); - describe('--file', function () { - it('should run tests passed via file first', function (done) { + describe('--file', function() { + it('should run tests passed via file first', function(done) { args = ['--file', resolvePath('options/file-alpha.fixture.js')]; - run('options/file-beta.fixture.js', args, function (err, res) { + run('options/file-beta.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -122,20 +121,21 @@ describe('options', function () { assert.equal(res.stats.passes, 2); assert.equal(res.stats.failures, 0); - assert.equal(res.passes[0].fullTitle, - 'alpha should be executed first'); + assert.equal(res.passes[0].fullTitle, 'alpha should be executed first'); assert.equal(res.code, 0); done(); }); }); - it('should run multiple tests passed via file first', function (done) { + it('should run multiple tests passed via file first', function(done) { args = [ - '--file', resolvePath('options/file-alpha.fixture.js'), - '--file', resolvePath('options/file-beta.fixture.js') + '--file', + resolvePath('options/file-alpha.fixture.js'), + '--file', + resolvePath('options/file-beta.fixture.js') ]; - run('options/file-theta.fixture.js', args, function (err, res) { + run('options/file-theta.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -144,25 +144,22 @@ describe('options', function () { assert.equal(res.stats.passes, 3); assert.equal(res.stats.failures, 0); - assert.equal(res.passes[0].fullTitle, - 'alpha should be executed first'); - assert.equal(res.passes[1].fullTitle, - 'beta should be executed second'); - assert.equal(res.passes[2].fullTitle, - 'theta should be executed third'); + assert.equal(res.passes[0].fullTitle, 'alpha should be executed first'); + assert.equal(res.passes[1].fullTitle, 'beta should be executed second'); + assert.equal(res.passes[2].fullTitle, 'theta should be executed third'); assert.equal(res.code, 0); done(); }); }); }); - describe('--delay', function () { - before(function () { + describe('--delay', function() { + before(function() { args = ['--delay']; }); - it('should run the generated test suite', function (done) { - run('options/delay.fixture.js', args, function (err, res) { + it('should run the generated test suite', function(done) { + run('options/delay.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -171,15 +168,17 @@ describe('options', function () { assert.equal(res.stats.passes, 1); assert.equal(res.stats.failures, 0); - assert.equal(res.passes[0].title, - 'should have no effect if attempted twice in the same suite'); + assert.equal( + res.passes[0].title, + 'should have no effect if attempted twice in the same suite' + ); assert.equal(res.code, 0); done(); }); }); - it('should execute exclusive tests only', function (done) { - run('options/delay-only.fixture.js', args, function (err, res) { + it('should execute exclusive tests only', function(done) { + run('options/delay-only.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -197,8 +196,8 @@ describe('options', function () { }); }); - it('should throw an error if the test suite failed to run', function (done) { - run('options/delay-fail.fixture.js', args, function (err, res) { + it('should throw an error if the test suite failed to run', function(done) { + run('options/delay-fail.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -207,18 +206,20 @@ describe('options', function () { assert.equal(res.stats.passes, 0); assert.equal(res.stats.failures, 1); - assert.equal(res.failures[0].title, - 'Uncaught error outside test suite'); + assert.equal( + res.failures[0].title, + 'Uncaught error outside test suite' + ); assert.equal(res.code, 1); done(); }); }); }); - describe('--grep', function () { - it('runs specs matching a string', function (done) { + describe('--grep', function() { + it('runs specs matching a string', function(done) { args = ['--grep', 'match']; - run('options/grep.fixture.js', args, function (err, res) { + run('options/grep.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -231,10 +232,10 @@ describe('options', function () { }); }); - describe('runs specs matching a RegExp', function () { - it('with RegExp like strings(pattern follow by flag)', function (done) { + describe('runs specs matching a RegExp', function() { + it('with RegExp like strings(pattern follow by flag)', function(done) { args = ['--grep', '/match/i']; - run('options/grep.fixture.js', args, function (err, res) { + run('options/grep.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -247,9 +248,9 @@ describe('options', function () { }); }); - it('string as pattern', function (done) { + it('string as pattern', function(done) { args = ['--grep', '.*']; - run('options/grep.fixture.js', args, function (err, res) { + run('options/grep.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -263,10 +264,10 @@ describe('options', function () { }); }); - describe('with --invert', function () { - it('runs specs that do not match the pattern', function (done) { + describe('with --invert', function() { + it('runs specs that do not match the pattern', function(done) { args = ['--grep', 'fail', '--invert']; - run('options/grep.fixture.js', args, function (err, res) { + run('options/grep.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -281,10 +282,10 @@ describe('options', function () { }); }); - describe('--retries', function () { - it('retries after a certain threshold', function (done) { + describe('--retries', function() { + it('retries after a certain threshold', function(done) { args = ['--retries', '3']; - run('options/retries.fixture.js', args, function (err, res) { + run('options/retries.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -300,15 +301,15 @@ describe('options', function () { }); }); - describe('--forbid-only', function () { + describe('--forbid-only', function() { var onlyErrorMessage = '`.only` forbidden'; - before(function () { + before(function() { args = ['--forbid-only']; }); - it('succeeds if there are only passed tests', function (done) { - run('options/forbid-only/passed.js', args, function (err, res) { + it('succeeds if there are only passed tests', function(done) { + run('options/forbid-only/passed.js', args, function(err, res) { if (err) { done(err); return; @@ -318,8 +319,8 @@ describe('options', function () { }); }); - it('fails if there are tests marked only', function (done) { - run('options/forbid-only/only.js', args, function (err, res) { + it('fails if there are tests marked only', function(done) { + run('options/forbid-only/only.js', args, function(err, res) { if (err) { done(err); return; @@ -330,8 +331,8 @@ describe('options', function () { }); }); - it('fails if there are tests in suites marked only', function (done) { - run('options/forbid-only/only-suite.js', args, function (err, res) { + it('fails if there are tests in suites marked only', function(done) { + run('options/forbid-only/only-suite.js', args, function(err, res) { assert(!err); assert.equal(res.code, 1); assert.equal(res.failures[0].err.message, onlyErrorMessage); @@ -340,15 +341,15 @@ describe('options', function () { }); }); - describe('--forbid-pending', function () { + describe('--forbid-pending', function() { var pendingErrorMessage = 'Pending test forbidden'; - before(function () { + before(function() { args = ['--forbid-pending']; }); - it('succeeds if there are only passed tests', function (done) { - run('options/forbid-pending/passed.js', args, function (err, res) { + it('succeeds if there are only passed tests', function(done) { + run('options/forbid-pending/passed.js', args, function(err, res) { if (err) { done(err); return; @@ -367,11 +368,16 @@ describe('options', function () { 'fails if there are tests in suites marked skip': 'skip-suite.js' }; - Object.keys(forbidPendingFailureTests).forEach(function (title) { - it(title, function (done) { - run(path.join('options', 'forbid-pending', forbidPendingFailureTests[title]), + Object.keys(forbidPendingFailureTests).forEach(function(title) { + it(title, function(done) { + run( + path.join( + 'options', + 'forbid-pending', + forbidPendingFailureTests[title] + ), args, - function (err, res) { + function(err, res) { if (err) { done(err); return; @@ -379,12 +385,13 @@ describe('options', function () { assert.equal(res.code, 1); assert.equal(res.failures[0].err.message, pendingErrorMessage); done(); - }); + } + ); }); }); }); - describe('--exit', function () { + describe('--exit', function() { var behaviors = { enabled: '--exit', disabled: '--no-exit' @@ -398,15 +405,15 @@ describe('options', function () { * @param {string} [behavior] - 'enabled' or 'disabled' * @returns {Function} */ - var runExit = function (shouldExit, behavior) { - return function (done) { + var runExit = function(shouldExit, behavior) { + return function(done) { this.timeout(0); this.slow(3000); var didExit = true; var t; var args = behaviors[behavior] ? [behaviors[behavior]] : []; - var mocha = run('exit.fixture.js', args, function (err) { + var mocha = run('exit.fixture.js', args, function(err) { clearTimeout(t); if (err) { done(err); @@ -417,7 +424,7 @@ describe('options', function () { }); // if this callback happens, then Mocha didn't automatically exit. - t = setTimeout(function () { + t = setTimeout(function() { didExit = false; // this is the only way to kill the child, afaik. // after the process ends, the callback to `run()` above is handled. @@ -426,38 +433,48 @@ describe('options', function () { }; }; - describe('default behavior', function () { + describe('default behavior', function() { it('should force exit after root suite completion', runExit(false)); }); - describe('with exit enabled', function () { - it('should force exit after root suite completion', runExit(true, 'enabled')); + describe('with exit enabled', function() { + it( + 'should force exit after root suite completion', + runExit(true, 'enabled') + ); }); - describe('with exit disabled', function () { - it('should not force exit after root suite completion', runExit(false, 'disabled')); + describe('with exit disabled', function() { + it( + 'should not force exit after root suite completion', + runExit(false, 'disabled') + ); }); }); - describe('--help', function () { - it('works despite the presence of mocha.opts', function (done) { - directInvoke(['-h'], function (error, result) { - if (error) { - return done(error); - } - expect(result.output).to.contain('Usage:'); - done(); - }, path.join(__dirname, 'fixtures', 'options', 'help')); + describe('--help', function() { + it('works despite the presence of mocha.opts', function(done) { + directInvoke( + ['-h'], + function(error, result) { + if (error) { + return done(error); + } + expect(result.output).to.contain('Usage:'); + done(); + }, + path.join(__dirname, 'fixtures', 'options', 'help') + ); }); }); - describe('--exclude', function () { + describe('--exclude', function() { /* * Runs mocha in {path} with the given args. * Calls handleResult with the result. */ - function runMochaTest (fixture, args, handleResult, done) { - run(fixture, args, function (err, res) { + function runMochaTest(fixture, args, handleResult, done) { + run(fixture, args, function(err, res) { if (err) { done(err); return; @@ -467,40 +484,55 @@ describe('options', function () { }); } - it('should exclude specific files', function (done) { - runMochaTest('options/exclude/*.fixture.js', [ - '--exclude', - 'test/integration/fixtures/options/exclude/fail.fixture.js' - ], function (res) { - assert.equal(res.stats.pending, 0); - assert.equal(res.stats.passes, 1); - assert.equal(res.stats.failures, 0); - assert.equal(res.passes[0].title, 'should find this test'); - assert.equal(res.code, 0); - }, done); - }); - - it('should exclude globbed files', function (done) { - runMochaTest('options/exclude/**/*.fixture.js', ['--exclude', '**/fail.fixture.js'], function (res) { - assert.equal(res.stats.pending, 0); - assert.equal(res.stats.passes, 2); - assert.equal(res.stats.failures, 0); - assert.equal(res.code, 0); - }, done); + it('should exclude specific files', function(done) { + runMochaTest( + 'options/exclude/*.fixture.js', + [ + '--exclude', + 'test/integration/fixtures/options/exclude/fail.fixture.js' + ], + function(res) { + assert.equal(res.stats.pending, 0); + assert.equal(res.stats.passes, 1); + assert.equal(res.stats.failures, 0); + assert.equal(res.passes[0].title, 'should find this test'); + assert.equal(res.code, 0); + }, + done + ); }); - it('should exclude multiple patterns', function (done) { - runMochaTest('options/exclude/**/*.fixture.js', [ - '--exclude', - 'test/integration/fixtures/options/exclude/fail.fixture.js', - '--exclude', - 'test/integration/fixtures/options/exclude/nested/fail.fixture.js' - ], function (res) { - assert.equal(res.stats.pending, 0); - assert.equal(res.stats.passes, 2); - assert.equal(res.stats.failures, 0); - assert.equal(res.code, 0); - }, done); + it('should exclude globbed files', function(done) { + runMochaTest( + 'options/exclude/**/*.fixture.js', + ['--exclude', '**/fail.fixture.js'], + function(res) { + assert.equal(res.stats.pending, 0); + assert.equal(res.stats.passes, 2); + assert.equal(res.stats.failures, 0); + assert.equal(res.code, 0); + }, + done + ); + }); + + it('should exclude multiple patterns', function(done) { + runMochaTest( + 'options/exclude/**/*.fixture.js', + [ + '--exclude', + 'test/integration/fixtures/options/exclude/fail.fixture.js', + '--exclude', + 'test/integration/fixtures/options/exclude/nested/fail.fixture.js' + ], + function(res) { + assert.equal(res.stats.pending, 0); + assert.equal(res.stats.passes, 2); + assert.equal(res.stats.failures, 0); + assert.equal(res.code, 0); + }, + done + ); }); }); }); diff --git a/test/integration/pending.spec.js b/test/integration/pending.spec.js index af665accf6..27601b7a0e 100644 --- a/test/integration/pending.spec.js +++ b/test/integration/pending.spec.js @@ -4,10 +4,10 @@ var assert = require('assert'); var run = require('./helpers').runMochaJSON; var args = []; -describe('pending', function () { - describe('pending specs', function () { - it('should be created by omitting a function', function (done) { - run('pending/spec.fixture.js', args, function (err, res) { +describe('pending', function() { + describe('pending specs', function() { + it('should be created by omitting a function', function(done) { + run('pending/spec.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -19,8 +19,8 @@ describe('pending', function () { done(); }); }); - it('should return the test object when used via shorthand methods', function (done) { - run('pending/skip-shorthand.fixture.js', args, function (err, res) { + it('should return the test object when used via shorthand methods', function(done) { + run('pending/skip-shorthand.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -32,8 +32,8 @@ describe('pending', function () { done(); }); }); - it('should keep hierarchies of suites', function (done) { - run('pending/skip-hierarchy.fixture.js', args, function (err, res) { + it('should keep hierarchies of suites', function(done) { + run('pending/skip-hierarchy.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -49,10 +49,10 @@ describe('pending', function () { }); }); - describe('synchronous skip()', function () { - describe('in spec', function () { - it('should immediately skip the spec and run all others', function (done) { - run('pending/skip-sync-spec.fixture.js', args, function (err, res) { + describe('synchronous skip()', function() { + describe('in spec', function() { + it('should immediately skip the spec and run all others', function(done) { + run('pending/skip-sync-spec.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -66,9 +66,9 @@ describe('pending', function () { }); }); - describe('in before', function () { - it('should skip all suite specs', function (done) { - run('pending/skip-sync-before.fixture.js', args, function (err, res) { + describe('in before', function() { + it('should skip all suite specs', function(done) { + run('pending/skip-sync-before.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -82,9 +82,12 @@ describe('pending', function () { }); }); - describe('in beforeEach', function () { - it('should skip all suite specs', function (done) { - run('pending/skip-sync-beforeEach.fixture.js', args, function (err, res) { + describe('in beforeEach', function() { + it('should skip all suite specs', function(done) { + run('pending/skip-sync-beforeEach.fixture.js', args, function( + err, + res + ) { if (err) { done(err); return; @@ -99,10 +102,10 @@ describe('pending', function () { }); }); - describe('asynchronous skip()', function () { - describe('in spec', function () { - it('should immediately skip the spec and run all others', function (done) { - run('pending/skip-async-spec.fixture.js', args, function (err, res) { + describe('asynchronous skip()', function() { + describe('in spec', function() { + it('should immediately skip the spec and run all others', function(done) { + run('pending/skip-async-spec.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -116,9 +119,9 @@ describe('pending', function () { }); }); - describe('in before', function () { - it('should skip all suite specs', function (done) { - run('pending/skip-async-before.fixture.js', args, function (err, res) { + describe('in before', function() { + it('should skip all suite specs', function(done) { + run('pending/skip-async-before.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -132,9 +135,12 @@ describe('pending', function () { }); }); - describe('in beforeEach', function () { - it('should skip all suite specs', function (done) { - run('pending/skip-sync-beforeEach.fixture.js', args, function (err, res) { + describe('in beforeEach', function() { + it('should skip all suite specs', function(done) { + run('pending/skip-sync-beforeEach.fixture.js', args, function( + err, + res + ) { if (err) { done(err); return; diff --git a/test/integration/regression.spec.js b/test/integration/regression.spec.js index 1c0466b180..e1f6b19dde 100644 --- a/test/integration/regression.spec.js +++ b/test/integration/regression.spec.js @@ -6,11 +6,11 @@ var path = require('path'); var run = require('./helpers').runMocha; var runJSON = require('./helpers').runMochaJSON; -describe('regressions', function () { - it('issue-1327: should run all 3 specs exactly once', function (done) { +describe('regressions', function() { + it('issue-1327: should run all 3 specs exactly once', function(done) { var args = []; - run('regression/issue-1327.fixture.js', args, function (err, res) { - var occurences = function (str) { + run('regression/issue-1327.fixture.js', args, function(err, res) { + var occurences = function(str) { var pattern = new RegExp(str, 'g'); return (res.output.match(pattern) || []).length; }; @@ -28,17 +28,34 @@ describe('regressions', function () { }); }); - it('should not duplicate mocha.opts args in process.argv', function () { + it('should not duplicate mocha.opts args in process.argv', function() { var processArgv = process.argv.join(''); - var mochaOpts = fs.readFileSync(path.join(__dirname, '..', 'mocha.opts'), 'utf-8').split(/[\s]+/).join(''); - assert.notEqual(processArgv.indexOf(mochaOpts), -1, 'process.argv missing mocha.opts'); - assert.equal(processArgv.indexOf(mochaOpts), processArgv.lastIndexOf(mochaOpts), 'process.argv contains duplicated mocha.opts'); + var mochaOpts = fs + .readFileSync(path.join(__dirname, '..', 'mocha.opts'), 'utf-8') + .split(/[\s]+/) + .join(''); + assert.notEqual( + processArgv.indexOf(mochaOpts), + -1, + 'process.argv missing mocha.opts' + ); + assert.equal( + processArgv.indexOf(mochaOpts), + processArgv.lastIndexOf(mochaOpts), + 'process.argv contains duplicated mocha.opts' + ); }); - it('issue-1794: Can\'t --require custom UI and use it', function (done) { - var simpleUiPath = path.join(__dirname, 'fixtures', 'regression', '1794', 'simple-ui.js'); + it("issue-1794: Can't --require custom UI and use it", function(done) { + var simpleUiPath = path.join( + __dirname, + 'fixtures', + 'regression', + '1794', + 'simple-ui.js' + ); var args = ['--require', simpleUiPath, '--ui', 'simple-ui']; - run('regression/1794/issue-1794.fixture.js', args, function (err, res) { + run('regression/1794/issue-1794.fixture.js', args, function(err, res) { if (err) { done(err); return; @@ -48,36 +65,48 @@ describe('regressions', function () { }); }); - it('issue-1991: Declarations do not get cleaned up unless you set them to `null` - Memory Leak', function (done) { + it('issue-1991: Declarations do not get cleaned up unless you set them to `null` - Memory Leak', function(done) { // on a modern MBP takes ±5 seconds on node 4.0, but on older laptops with node 0.12 ±40 seconds. // Could easily take longer on even weaker machines (Travis-CI containers for example). this.timeout(120000); this.slow(12000); - run('regression/issue-1991.fixture.js', [], function (err, res) { + run('regression/issue-1991.fixture.js', [], function(err, res) { if (err) { done(err); return; } - assert.equal(/process out of memory/.test(res.output), false, 'fixture\'s process out of memory!'); - assert.equal(res.code, 0, 'Runnable fn (it/before[Each]/after[Each]) references should be deleted to avoid memory leaks'); + assert.equal( + /process out of memory/.test(res.output), + false, + "fixture's process out of memory!" + ); + assert.equal( + res.code, + 0, + 'Runnable fn (it/before[Each]/after[Each]) references should be deleted to avoid memory leaks' + ); done(); }); }); - describe('issue-2286: after doesn\'t execute if test was skipped in beforeEach', function () { + describe("issue-2286: after doesn't execute if test was skipped in beforeEach", function() { var afterWasRun = false; - describe('suite with skipped test for meta test', function () { - beforeEach(function () { this.skip(); }); - after(function () { afterWasRun = true; }); - it('should be pending', function () {}); + describe('suite with skipped test for meta test', function() { + beforeEach(function() { + this.skip(); + }); + after(function() { + afterWasRun = true; + }); + it('should be pending', function() {}); }); - after('meta test', function () { + after('meta test', function() { expect(afterWasRun).to.be.ok(); }); }); - it('issue-2315: cannot read property currentRetry of undefined', function (done) { - runJSON('regression/issue-2315.fixture.js', [], function (err, res) { + it('issue-2315: cannot read property currentRetry of undefined', function(done) { + runJSON('regression/issue-2315.fixture.js', [], function(err, res) { if (err) { done(err); return; @@ -90,9 +119,9 @@ describe('regressions', function () { }); }); - it('issue-2406: should run nested describe.only suites', function (done) { + it('issue-2406: should run nested describe.only suites', function(done) { this.timeout(2000); - runJSON('regression/issue-2406.fixture.js', [], function (err, res) { + runJSON('regression/issue-2406.fixture.js', [], function(err, res) { if (err) { done(err); return; @@ -105,8 +134,8 @@ describe('regressions', function () { }); }); - it('issue-2417: should not recurse infinitely with .only suites nested within each other', function (done) { - runJSON('regression/issue-2417.fixture.js', [], function (err, res) { + it('issue-2417: should not recurse infinitely with .only suites nested within each other', function(done) { + runJSON('regression/issue-2417.fixture.js', [], function(err, res) { if (err) { done(err); return; @@ -119,8 +148,8 @@ describe('regressions', function () { }); }); - it('issue-1417 uncaught exceptions from async specs', function (done) { - runJSON('regression/issue-1417.fixture.js', [], function (err, res) { + it('issue-1417 uncaught exceptions from async specs', function(done) { + runJSON('regression/issue-1417.fixture.js', [], function(err, res) { if (err) { done(err); return; @@ -129,11 +158,15 @@ describe('regressions', function () { assert.equal(res.stats.passes, 0); assert.equal(res.stats.failures, 2); - assert.equal(res.failures[0].title, - 'fails exactly once when a global error is thrown synchronously and done errors'); + assert.equal( + res.failures[0].title, + 'fails exactly once when a global error is thrown synchronously and done errors' + ); assert.equal(res.failures[0].err.message, 'sync error'); - assert.equal(res.failures[1].title, - 'fails exactly once when a global error is thrown synchronously and done completes'); + assert.equal( + res.failures[1].title, + 'fails exactly once when a global error is thrown synchronously and done completes' + ); assert.equal(res.failures[1].err.message, 'sync error'); assert.equal(res.code, 2); done(); diff --git a/test/integration/reporters.spec.js b/test/integration/reporters.spec.js index 9bf8df289c..bd1e755ed8 100644 --- a/test/integration/reporters.spec.js +++ b/test/integration/reporters.spec.js @@ -7,52 +7,55 @@ var crypto = require('crypto'); var path = require('path'); var run = require('./helpers').runMocha; -describe('reporters', function () { - describe('markdown', function () { +describe('reporters', function() { + describe('markdown', function() { var res; - before(function (done) { - run('passing.fixture.js', ['--reporter', 'markdown'], function (err, result) { + before(function(done) { + run('passing.fixture.js', ['--reporter', 'markdown'], function( + err, + result + ) { res = result; done(err); }); }); - it('does not exceed maximum callstack (issue: 1875)', function () { + it('does not exceed maximum callstack (issue: 1875)', function() { assert(res.output.indexOf('RangeError') === -1, 'Threw RangeError'); }); - it('contains spec src', function () { - var src = [ - '```js', - 'assert(true);', - '```' - ].join('\n'); + it('contains spec src', function() { + var src = ['```js', 'assert(true);', '```'].join('\n'); assert(res.output.indexOf(src) !== -1, 'No assert found'); }); }); - describe('xunit', function () { - it('prints test cases with --reporter-options output (issue: 1864)', function (done) { + describe('xunit', function() { + it('prints test cases with --reporter-options output (issue: 1864)', function(done) { var randomStr = crypto.randomBytes(8).toString('hex'); var tmpDir = os.tmpdir().replace(new RegExp(path.sep + '$'), ''); var tmpFile = tmpDir + path.sep + 'test-issue-1864-' + randomStr + '.xml'; - var args = ['--reporter=xunit', '--reporter-options', 'output=' + tmpFile]; + var args = [ + '--reporter=xunit', + '--reporter-options', + 'output=' + tmpFile + ]; var expectedOutput = [ ' (/usr/local/dev/test.js:16:12)', @@ -28,9 +28,7 @@ describe('stackTraceFilter()', function () { 'Immediate._onImmediate (/usr/local/lib/node_modules/mocha/lib/runner.js:276:5)', 'at processImmediate [as _immediateCallback] (timers.js:321:17)' ]; - expect(filter(stack.join('\n'))) - .to.equal(stack.slice(0, 3) - .join('\n')); + expect(filter(stack.join('\n'))).to.equal(stack.slice(0, 3).join('\n')); stack = [ 'AssertionError: bar baz', @@ -46,12 +44,10 @@ describe('stackTraceFilter()', function () { 'at processImmediate [as _immediateCallback] (timers.js:321:17)' ]; - expect(filter(stack.join('\n'))) - .to.equal(stack.slice(0, 7) - .join('\n')); + expect(filter(stack.join('\n'))).to.equal(stack.slice(0, 7).join('\n')); }); - it('does not ignore other bower_components and components', function () { + it('does not ignore other bower_components and components', function() { var stack = [ 'Error: failed', 'at assert (index.html:11:26)', @@ -67,12 +63,10 @@ describe('stackTraceFilter()', function () { 'at file:///.../components/mochajs/mocha/2.1.0/mocha.js:4970:12', 'at next (file:///.../components/mochajs/mocha/2.1.0/mocha.js:4817:14)' ]; - expect(filter(stack.join('\n'))) - .to.equal(stack.slice(0, 7) - .join('\n')); + expect(filter(stack.join('\n'))).to.equal(stack.slice(0, 7).join('\n')); }); - it('should replace absolute with relative paths', function () { + it('should replace absolute with relative paths', function() { var stack = [ 'Error: ' + process.cwd() + '/bla.js has a problem', 'at foo (' + process.cwd() + '/foo/index.js:13:226)', @@ -85,11 +79,10 @@ describe('stackTraceFilter()', function () { 'at bar (/usr/local/dev/own/tmp/node_modules/bluebird/js/main/promise.js:11:26)' ]; - expect(filter(stack.join('\n'))) - .to.equal(expected.join('\n')); + expect(filter(stack.join('\n'))).to.equal(expected.join('\n')); }); - it('should not replace absolute path which has cwd as infix', function () { + it('should not replace absolute path which has cwd as infix', function() { var stack = [ 'Error: /www' + process.cwd() + '/bla.js has a problem', 'at foo (/www' + process.cwd() + '/foo/index.js:13:226)', @@ -102,19 +95,18 @@ describe('stackTraceFilter()', function () { 'at bar (/usr/local/dev/own/tmp/node_modules/bluebird/js/main/promise.js:11:26)' ]; - expect(filter(stack.join('\n'))) - .to.equal(expected.join('\n')); + expect(filter(stack.join('\n'))).to.equal(expected.join('\n')); }); }); - describe('on Windows', function () { - before(function () { + describe('on Windows', function() { + before(function() { if (path.sep === '/') { this.skip(); } }); - it('should work on Windows', function () { + it('should work on Windows', function() { var stack = [ 'Error: failed', 'at Context. (C:\\Users\\ishida\\src\\test\\test\\mytest.js:5:9)', @@ -127,21 +119,19 @@ describe('stackTraceFilter()', function () { 'at next (C:\\Users\\ishida\\src\\test\\node_modules\\mocha\\lib\\runner.js:284:14)', 'at Immediate._onImmediate (C:\\Users\\ishida\\src\\test\\node_modules\\mocha\\lib\\runner.js:320:5)' ]; - expect(filter(stack.join('\n'))) - .to.equal(stack.slice(0, 2) - .join('\n')); + expect(filter(stack.join('\n'))).to.equal(stack.slice(0, 2).join('\n')); }); }); }); - describe('on browser', function () { + describe('on browser', function() { var filter; - before(function () { + before(function() { global.document = true; global.location = {href: 'localhost:3000/foo/bar/index.html'}; filter = utils.stackTraceFilter(); }); - it('does not strip out other bower_components', function () { + it('does not strip out other bower_components', function() { var stack = [ 'Error: failed', 'at assert (index.html:11:26)', @@ -154,12 +144,10 @@ describe('stackTraceFilter()', function () { 'at localhost:3000/foo/bar/node_modules/mocha.js:4970:12', 'at next (node_modules/mocha.js:4817:14)' ]; - expect(filter(stack.join('\n'))) - .to.equal(stack.slice(0, 7) - .join('\n')); + expect(filter(stack.join('\n'))).to.equal(stack.slice(0, 7).join('\n')); }); - after(function () { + after(function() { delete global.document; delete global.location; }); diff --git a/test/only/bdd-require.spec.js b/test/only/bdd-require.spec.js index 9b85052c23..8f1b239642 100644 --- a/test/only/bdd-require.spec.js +++ b/test/only/bdd-require.spec.js @@ -6,12 +6,12 @@ var beforeEach = mocha.beforeEach; var it = mocha.it; var describe = mocha.describe; -describe('it.only via require("mocha")', function () { - beforeEach(function () { +describe('it.only via require("mocha")', function() { + beforeEach(function() { this.didRunBeforeEach = true; }); - describe('nested within a describe/context', function () { - it.only('should run all enclosing beforeEach hooks', function () { + describe('nested within a describe/context', function() { + it.only('should run all enclosing beforeEach hooks', function() { require('assert').equal(this.didRunBeforeEach, true); }); }); diff --git a/test/only/bdd.spec.js b/test/only/bdd.spec.js index ac9f92a0d4..b317e51bed 100644 --- a/test/only/bdd.spec.js +++ b/test/only/bdd.spec.js @@ -1,77 +1,77 @@ 'use strict'; -describe('should only run .only test in this bdd suite', function () { - it('should not run this test', function () { +describe('should only run .only test in this bdd suite', function() { + it('should not run this test', function() { expect(0).to.equal(1, 'this test should have been skipped'); }); - it.only('should run this test', function () { + it.only('should run this test', function() { expect(0).to.equal(0, 'this .only test should run'); }); - it('should run this test, not (includes the title of the .only test)', function () { + it('should run this test, not (includes the title of the .only test)', function() { expect(0).to.equal(1, 'this test should have been skipped'); }); }); -describe('should not run this suite', function () { - it('should not run this test', function () { +describe('should not run this suite', function() { + it('should not run this test', function() { expect(true).to.equal(false); }); - it('should not run this test', function () { + it('should not run this test', function() { expect(true).to.equal(false); }); - it('should not run this test', function () { + it('should not run this test', function() { expect(true).to.equal(false); }); }); -describe.only('should run all tests in this bdd suite', function () { - it('should run this test #1', function () { +describe.only('should run all tests in this bdd suite', function() { + it('should run this test #1', function() { expect(true).to.equal(true); }); - it('should run this test #2', function () { + it('should run this test #2', function() { expect(1).to.equal(1); }); - it('should run this test #3', function () { + it('should run this test #3', function() { expect('foo').to.equal('foo'); }); }); -describe('should run only suites that marked as `only`', function () { - describe.only('should run all this tdd suite', function () { - it('should run this test #1', function () { +describe('should run only suites that marked as `only`', function() { + describe.only('should run all this tdd suite', function() { + it('should run this test #1', function() { expect(true).to.equal(true); }); - it('should run this test #2', function () { + it('should run this test #2', function() { expect(true).to.equal(true); }); }); - describe('should not run this suite', function () { - it('should run this test', function () { + describe('should not run this suite', function() { + it('should run this test', function() { expect(true).to.equal(false); }); }); }); // Nested situation -describe('should not run parent tests', function () { - it('should not run this test', function () { +describe('should not run parent tests', function() { + it('should not run this test', function() { expect(true).to.equal(false); }); - describe('and not the child tests too', function () { - it('should not run this test', function () { + describe('and not the child tests too', function() { + it('should not run this test', function() { expect(true).to.equal(false); }); - describe.only('but run all the tests in this suite', function () { - it('should run this test #1', function () { + describe.only('but run all the tests in this suite', function() { + it('should run this test #1', function() { expect(true).to.equal(true); }); - it('should run this test #2', function () { + it('should run this test #2', function() { expect(true).to.equal(true); }); }); @@ -79,49 +79,49 @@ describe('should not run parent tests', function () { }); // mark test as `only` override the suite behavior -describe.only('should run only tests that marked as `only`', function () { - it('should not run this test #1', function () { +describe.only('should run only tests that marked as `only`', function() { + it('should not run this test #1', function() { expect(false).to.equal(true); }); - it.only('should run this test #2', function () { + it.only('should run this test #2', function() { expect(true).to.equal(true); }); - it('should not run this test #3', function () { + it('should not run this test #3', function() { expect(false).to.equal(true); }); - it.only('should run this test #4', function () { + it.only('should run this test #4', function() { expect(true).to.equal(true); }); }); -describe.only('Should run only test cases that mark as only', function () { - it.only('should runt his test', function () { +describe.only('Should run only test cases that mark as only', function() { + it.only('should runt his test', function() { expect(true).to.equal(true); }); - it('should not run this test', function () { + it('should not run this test', function() { expect(false).to.equal(true); }); - describe('should not run this suite', function () { - it('should not run this test', function () { + describe('should not run this suite', function() { + it('should not run this test', function() { expect(false).to.equal(true); }); }); }); // Root Suite -it.only('#Root-Suite, should run this test-case #1', function () { +it.only('#Root-Suite, should run this test-case #1', function() { expect(true).to.equal(true); }); -it.only('#Root-Suite, should run this test-case #2', function () { +it.only('#Root-Suite, should run this test-case #2', function() { expect(true).to.equal(true); }); -it('#Root-Suite, should not run this test', function () { +it('#Root-Suite, should not run this test', function() { expect(false).to.equal(true); }); diff --git a/test/only/global/bdd.spec.js b/test/only/global/bdd.spec.js index 5e5e271350..759d3e6f4e 100644 --- a/test/only/global/bdd.spec.js +++ b/test/only/global/bdd.spec.js @@ -1,14 +1,14 @@ 'use strict'; // Root-only test cases -it.only('#Root-Suite, should run this bdd test-case #1', function () { +it.only('#Root-Suite, should run this bdd test-case #1', function() { expect(true).to.equal(true); }); -it('#Root-Suite, should not run this bdd test-case #2', function () { +it('#Root-Suite, should not run this bdd test-case #2', function() { expect(false).to.equal(true); }); -it('#Root-Suite, should not run this bdd test-case #3', function () { +it('#Root-Suite, should not run this bdd test-case #3', function() { expect(false).to.equal(true); }); diff --git a/test/only/global/qunit.spec.js b/test/only/global/qunit.spec.js index 20a16ddced..2d09c3fb9c 100644 --- a/test/only/global/qunit.spec.js +++ b/test/only/global/qunit.spec.js @@ -1,14 +1,14 @@ 'use strict'; // Root-only test cases -test.only('#Root-Suite, should run this qunit test-case #1', function () { +test.only('#Root-Suite, should run this qunit test-case #1', function() { expect(true).to.equal(true); }); -test('#Root-Suite, should not run this qunit test-case #2', function () { +test('#Root-Suite, should not run this qunit test-case #2', function() { expect(false).to.equal(true); }); -test('#Root-Suite, should not run this qunit test-case #3', function () { +test('#Root-Suite, should not run this qunit test-case #3', function() { expect(false).to.equal(true); }); diff --git a/test/only/global/tdd.spec.js b/test/only/global/tdd.spec.js index f140de29b3..29f21c6b8d 100644 --- a/test/only/global/tdd.spec.js +++ b/test/only/global/tdd.spec.js @@ -1,14 +1,14 @@ 'use strict'; // Root-only test cases -test.only('#Root-Suite, should run this tdd test-case #1', function () { +test.only('#Root-Suite, should run this tdd test-case #1', function() { expect(true).to.equal(true); }); -test('#Root-Suite, should not run this tdd test-case #2', function () { +test('#Root-Suite, should not run this tdd test-case #2', function() { expect(false).to.equal(true); }); -test('#Root-Suite, should not run this tdd test-case #3', function () { +test('#Root-Suite, should not run this tdd test-case #3', function() { expect(false).to.equal(true); }); diff --git a/test/only/qunit.spec.js b/test/only/qunit.spec.js index 1e1c84c532..b027602118 100644 --- a/test/only/qunit.spec.js +++ b/test/only/qunit.spec.js @@ -1,75 +1,75 @@ 'use strict'; // Root Suite -test.only('#Root-Suite, should run this test-case #1', function () { +test.only('#Root-Suite, should run this test-case #1', function() { expect(true).to.equal(true); }); -test.only('#Root-Suite, should run this test-case #2', function () { +test.only('#Root-Suite, should run this test-case #2', function() { expect(true).to.equal(true); }); -test('#Root-Suite, should not run this test', function () { +test('#Root-Suite, should not run this test', function() { expect(false).to.equal(true); }); suite('should only run .only test in this qunit suite'); -test('should not run this test', function () { +test('should not run this test', function() { expect(0).to.equal(1, 'this test should have been skipped'); }); -test.only('should run this test', function () { +test.only('should run this test', function() { expect(0).to.equal(0, 'this .only test should run'); }); -test('should run this test, not (includes the title of the .only test)', function () { +test('should run this test, not (includes the title of the .only test)', function() { expect(0).to.equal(1, 'this test should have been skipped'); }); // Mark suite suite.only('should run all tests in this suite'); -test('should run this test #1', function () { +test('should run this test #1', function() { expect(true).to.equal(true); }); -test('should run this test #2', function () { +test('should run this test #2', function() { expect(true).to.equal(true); }); -test('should run this test #3', function () { +test('should run this test #3', function() { expect(true).to.equal(true); }); // Unmark this suite -suite('should not run any of this suite\'s tests'); +suite("should not run any of this suite's tests"); -test('should not run this test', function () { +test('should not run this test', function() { expect(false).to.equal(true); }); -test('should not run this test', function () { +test('should not run this test', function() { expect(false).to.equal(true); }); -test('should not run this test', function () { +test('should not run this test', function() { expect(false).to.equal(true); }); // Mark test as `only` override the suite behavior suite.only('should run only tests that marked as `only`'); -test('should not run this test #1', function () { +test('should not run this test #1', function() { expect(false).to.equal(true); }); -test.only('should not run this test #2', function () { +test.only('should not run this test #2', function() { expect(true).to.equal(true); }); -test('should not run this test #3', function () { +test('should not run this test #3', function() { expect(false).to.equal(true); }); -test.only('should not run this test #4', function () { +test.only('should not run this test #4', function() { expect(true).to.equal(true); }); diff --git a/test/only/tdd.spec.js b/test/only/tdd.spec.js index 425828f8b1..981bbfeb4b 100644 --- a/test/only/tdd.spec.js +++ b/test/only/tdd.spec.js @@ -1,77 +1,77 @@ 'use strict'; -suite('should only run .only test in this tdd suite', function () { - test('should not run this test', function () { +suite('should only run .only test in this tdd suite', function() { + test('should not run this test', function() { expect(0).to.equal(1, 'this test should have been skipped'); }); - test.only('should run this test', function () { + test.only('should run this test', function() { expect(0).to.equal(0, 'this .only test should run'); }); - test('should run this test, not (includes the title of the .only test)', function () { + test('should run this test, not (includes the title of the .only test)', function() { expect(0).to.equal(1, 'this test should have been skipped'); }); }); -suite('should not run this suite', function () { - test('should not run this test', function () { +suite('should not run this suite', function() { + test('should not run this test', function() { expect(true).to.equal(false); }); - test('should not run this test', function () { + test('should not run this test', function() { expect(true).to.equal(false); }); - test('should not run this test', function () { + test('should not run this test', function() { expect(true).to.equal(false); }); }); -suite.only('should run all tests in this tdd suite', function () { - test('should run this test #1', function () { +suite.only('should run all tests in this tdd suite', function() { + test('should run this test #1', function() { expect(true).to.equal(true); }); - test('should run this test #2', function () { + test('should run this test #2', function() { expect(1).to.equal(1); }); - test('should run this test #3', function () { + test('should run this test #3', function() { expect('foo').to.equal('foo'); }); }); -suite('should run only suites that marked as `only`', function () { - suite.only('should run all this tdd suite', function () { - test('should run this test #1', function () { +suite('should run only suites that marked as `only`', function() { + suite.only('should run all this tdd suite', function() { + test('should run this test #1', function() { expect(true).to.equal(true); }); - test('should run this test #2', function () { + test('should run this test #2', function() { expect(true).to.equal(true); }); }); - suite('should not run this suite', function () { - test('should not run this test', function () { + suite('should not run this suite', function() { + test('should not run this test', function() { expect(true).to.equal(false); }); }); }); // Nested situation -suite('should not run parent tests', function () { - test('should not run this test', function () { +suite('should not run parent tests', function() { + test('should not run this test', function() { expect(true).to.equal(false); }); - suite('and not the child tests too', function () { - test('should not run this test', function () { + suite('and not the child tests too', function() { + test('should not run this test', function() { expect(true).to.equal(false); }); - suite.only('but run all the tests in this suite', function () { - test('should run this test #1', function () { + suite.only('but run all the tests in this suite', function() { + test('should run this test #1', function() { expect(true).to.equal(true); }); - test('should run this test #2', function () { + test('should run this test #2', function() { expect(true).to.equal(true); }); }); @@ -79,49 +79,49 @@ suite('should not run parent tests', function () { }); // mark test as `only` override the suite behavior -suite.only('should run only tests that marked as `only`', function () { - test('should not run this test #1', function () { +suite.only('should run only tests that marked as `only`', function() { + test('should not run this test #1', function() { expect(false).to.equal(true); }); - test.only('should run this test #2', function () { + test.only('should run this test #2', function() { expect(true).to.equal(true); }); - test('should not run this test #3', function () { + test('should not run this test #3', function() { expect(false).to.equal(true); }); - test.only('should run this test #4', function () { + test.only('should run this test #4', function() { expect(true).to.equal(true); }); }); -suite.only('Should run only test cases that mark as only', function () { - test.only('should runt his test', function () { +suite.only('Should run only test cases that mark as only', function() { + test.only('should runt his test', function() { expect(true).to.equal(true); }); - test('should not run this test', function () { + test('should not run this test', function() { expect(false).to.equal(true); }); - suite('should not run this suite', function () { - test('should not run this test', function () { + suite('should not run this suite', function() { + test('should not run this test', function() { expect(false).to.equal(true); }); }); }); // Root Suite -test.only('#Root-Suite, should run this test-case #1', function () { +test.only('#Root-Suite, should run this test-case #1', function() { expect(true).to.equal(true); }); -test.only('#Root-Suite, should run this test-case #2', function () { +test.only('#Root-Suite, should run this test-case #2', function() { expect(true).to.equal(true); }); -test('#Root-Suite, should not run this test', function () { +test('#Root-Suite, should not run this test', function() { expect(false).to.equal(true); }); diff --git a/test/reporters/base.spec.js b/test/reporters/base.spec.js index ce815264ea..dc7065309b 100644 --- a/test/reporters/base.spec.js +++ b/test/reporters/base.spec.js @@ -8,7 +8,7 @@ var Assert = require('assert').AssertionError; var makeTest = require('./helpers').makeTest; var createElements = require('./helpers').createElements; -describe('Base reporter', function () { +describe('Base reporter', function() { var stdout; var stdoutWrite; var useColors; @@ -16,27 +16,27 @@ describe('Base reporter', function () { var errOut; var test; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; useColors = Base.useColors; Base.useColors = false; }); - afterEach(function () { + afterEach(function() { process.stdout.write = stdoutWrite; Base.useColors = useColors; }); - describe('showDiff', function () { - beforeEach(function () { - err = new Assert({ actual: 'foo', expected: 'bar' }); + describe('showDiff', function() { + beforeEach(function() { + err = new Assert({actual: 'foo', expected: 'bar'}); }); - it('should show diffs by default', function () { + it('should show diffs by default', function() { test = makeTest(err); Base.list([test]); @@ -46,7 +46,7 @@ describe('Base reporter', function () { expect(errOut).to.match(/\+ expected/); }); - it('should show diffs if property set to `true`', function () { + it('should show diffs if property set to `true`', function() { err.showDiff = true; test = makeTest(err); @@ -57,7 +57,7 @@ describe('Base reporter', function () { expect(errOut).to.match(/\+ expected/); }); - it('should not show diffs when showDiff property set to `false`', function () { + it('should not show diffs when showDiff property set to `false`', function() { err.showDiff = false; test = makeTest(err); @@ -68,7 +68,7 @@ describe('Base reporter', function () { expect(errOut).to.not.match(/\+ expected/); }); - it('should not show diffs when expected is not defined', function () { + it('should not show diffs when expected is not defined', function() { err = new Error('ouch'); test = makeTest(err); @@ -80,7 +80,7 @@ describe('Base reporter', function () { expect(errOut).to.not.match(/\+ expected/); }); - it('should not show diffs when hideDiff is set', function () { + it('should not show diffs when hideDiff is set', function() { test = makeTest(err); Base.hideDiff = true; @@ -93,9 +93,9 @@ describe('Base reporter', function () { }); }); - describe('Getting two strings', function () { + describe('Getting two strings', function() { // Fix regression V1.2.1(see: issue #1241) - it('should show strings diff as is', function () { + it('should show strings diff as is', function() { err = new Error('test'); err.actual = 'foo\nbar'; @@ -108,50 +108,56 @@ describe('Base reporter', function () { errOut = stdout.join('\n'); expect(errOut).to.not.match(/"foo\\nbar"/); - expect(errOut).to.match(/foo/).and.match(/bar/); + expect(errOut) + .to.match(/foo/) + .and.match(/bar/); expect(errOut).to.match(/test/); expect(errOut).to.match(/actual/); expect(errOut).to.match(/expected/); }); }); - describe('Diff generation', function () { + describe('Diff generation', function() { var oldInlineDiffs; var actual; var expected; var output; - beforeEach(function () { + beforeEach(function() { oldInlineDiffs = Base.inlineDiffs; }); - afterEach(function () { + afterEach(function() { Base.inlineDiffs = oldInlineDiffs; }); - it('should generate unified diffs if `inlineDiff === false`', function () { + it('should generate unified diffs if `inlineDiff === false`', function() { actual = 'a foo unified diff'; expected = 'a bar unified diff'; Base.inlineDiffs = false; output = Base.generateDiff(actual, expected); - expect(output).to.equal('\n + expected - actual\n\n -a foo unified diff\n +a bar unified diff\n '); + expect(output).to.equal( + '\n + expected - actual\n\n -a foo unified diff\n +a bar unified diff\n ' + ); }); - it('should generate inline diffs if `inlineDiffs === true`', function () { + it('should generate inline diffs if `inlineDiffs === true`', function() { actual = 'a foo inline diff'; expected = 'a bar inline diff'; Base.inlineDiffs = true; output = Base.generateDiff(actual, expected); - expect(output).to.equal(' \n actual expected\n \n a foobar inline diff\n '); + expect(output).to.equal( + ' \n actual expected\n \n a foobar inline diff\n ' + ); }); }); - describe('Inline strings diff', function () { - it('should show single line diff if property set to `true`', function () { + describe('Inline strings diff', function() { + it('should show single line diff if property set to `true`', function() { err = new Error('test'); err.actual = 'a foo inline diff'; @@ -170,7 +176,7 @@ describe('Base reporter', function () { expect(errOut).to.match(/expected/); }); - it('should split lines when string has more than 4 line breaks', function () { + it('should split lines when string has more than 4 line breaks', function() { err = new Error('test'); err.actual = 'a\nfoo\ninline\ndiff\nwith\nmultiple lines'; @@ -195,14 +201,14 @@ describe('Base reporter', function () { }); }); - describe('unified diff reporter', function () { - beforeEach(function () { + describe('unified diff reporter', function() { + beforeEach(function() { err = new Error('test'); }); - it('should separate diff hunks by two dashes', function () { - err.actual = createElements({ from: 2, to: 11 }); - err.expected = createElements({ from: 1, to: 10 }); + it('should separate diff hunks by two dashes', function() { + err.actual = createElements({from: 2, to: 11}); + err.expected = createElements({from: 1, to: 10}); err.showDiff = true; test = makeTest(err); @@ -230,13 +236,13 @@ describe('Base reporter', function () { /actual/ ]; - regexesToMatch.forEach(function (aRegex) { + regexesToMatch.forEach(function(aRegex) { expect(errOut).to.match(aRegex); }); }); }); - it('should stringify objects', function () { + it('should stringify objects', function() { err = new Error('test'); err.actual = {key: 'a1'}; @@ -253,7 +259,7 @@ describe('Base reporter', function () { expect(errOut).to.match(/\+ expected/); }); - it('should stringify Object.create(null)', function () { + it('should stringify Object.create(null)', function() { err = new Error('test'); err.actual = Object.create(null); @@ -272,7 +278,7 @@ describe('Base reporter', function () { expect(errOut).to.match(/\+ expected/); }); - it('should handle error messages that are not strings', function () { + it('should handle error messages that are not strings', function() { try { assert(false, true); } catch (err) { @@ -291,7 +297,7 @@ describe('Base reporter', function () { } }); - it('should interpret chaijs custom error messages', function () { + it('should interpret chaijs custom error messages', function() { try { // expect(43, 'custom error message').to.equal(42); // AssertionError: custom error message: expected 43 to equal 42. @@ -313,7 +319,7 @@ describe('Base reporter', function () { } }); - it('should remove message from stack', function () { + it('should remove message from stack', function() { err = { message: 'Error', stack: 'Error\nfoo\nbar', @@ -327,10 +333,12 @@ describe('Base reporter', function () { expect(errOut).to.equal('1) test title:\n Error\n foo\n bar'); }); - it('should use the inspect() property if `message` is not set', function () { + it('should use the inspect() property if `message` is not set', function() { err = { showDiff: false, - inspect: function () { return 'an error happened'; } + inspect: function() { + return 'an error happened'; + } }; test = makeTest(err); Base.list([test]); @@ -338,7 +346,7 @@ describe('Base reporter', function () { expect(errOut).to.equal('1) test title:\n an error happened'); }); - it('should set an empty message if `message` and `inspect()` are not set', function () { + it('should set an empty message if `message` and `inspect()` are not set', function() { err = { showDiff: false }; @@ -348,7 +356,7 @@ describe('Base reporter', function () { expect(errOut).to.equal('1) test title:'); }); - it('should not modify stack if it does not contain message', function () { + it('should not modify stack if it does not contain message', function() { err = { message: 'Error', stack: 'foo\nbar', diff --git a/test/reporters/doc.spec.js b/test/reporters/doc.spec.js index 4f3b48868a..b6584e004b 100644 --- a/test/reporters/doc.spec.js +++ b/test/reporters/doc.spec.js @@ -5,27 +5,27 @@ var Doc = reporters.Doc; var createMockRunner = require('./helpers.js').createMockRunner; -describe('Doc reporter', function () { +describe('Doc reporter', function() { var stdout; var stdoutWrite; var runner; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('on suite', function () { - describe('if suite root does not exist', function () { + describe('on suite', function() { + describe('if suite root does not exist', function() { var expectedTitle = 'expectedTitle'; var unescapedTitle = '
      ' + expectedTitle + '
      '; var suite = { root: false, title: expectedTitle }; - it('should log html with indents and expected title', function () { + it('should log html with indents and expected title', function() { runner = createMockRunner('suite', 'suite', null, null, suite); Doc.call(this, runner); process.stdout.write = stdoutWrite; @@ -36,7 +36,7 @@ describe('Doc reporter', function () { ]; expect(stdout).to.eql(expectedArray); }); - it('should escape title where necessary', function () { + it('should escape title where necessary', function() { var suite = { root: false, title: unescapedTitle @@ -53,11 +53,11 @@ describe('Doc reporter', function () { expect(stdout).to.eql(expectedArray); }); }); - describe('if suite root does exist', function () { + describe('if suite root does exist', function() { var suite = { root: true }; - it('should not log any html', function () { + it('should not log any html', function() { runner = createMockRunner('suite', 'suite', null, null, suite); Doc.call(this, runner); process.stdout.write = stdoutWrite; @@ -66,26 +66,24 @@ describe('Doc reporter', function () { }); }); - describe('on suite end', function () { - describe('if suite root does not exist', function () { + describe('on suite end', function() { + describe('if suite root does not exist', function() { var suite = { root: false }; - it('should log expected html with indents', function () { + it('should log expected html with indents', function() { runner = createMockRunner('suite end', 'suite end', null, null, suite); Doc.call(this, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - '
\n', '\n' - ]; + var expectedArray = [' \n', '\n']; expect(stdout).to.eql(expectedArray); }); }); - describe('if suite root does exist', function () { + describe('if suite root does exist', function() { var suite = { root: true }; - it('should not log any html', function () { + it('should not log any html', function() { runner = createMockRunner('suite end', 'suite end', null, null, suite); Doc.call(this, runner); process.stdout.write = stdoutWrite; @@ -94,17 +92,17 @@ describe('Doc reporter', function () { }); }); - describe('on pass', function () { + describe('on pass', function() { var expectedTitle = 'some tite'; var expectedBody = 'some body'; var test = { title: expectedTitle, body: expectedBody, - slow: function () { + slow: function() { return ''; } }; - it('should log html with indents and expected title and body', function () { + it('should log html with indents and expected title and body', function() { runner = createMockRunner('pass', 'pass', null, null, test); Doc.call(this, runner); process.stdout.write = stdoutWrite; @@ -114,14 +112,16 @@ describe('Doc reporter', function () { ]; expect(stdout).to.eql(expectedArray); }); - it('should escape title and body where necessary', function () { + it('should escape title and body where necessary', function() { var unescapedTitle = '
' + expectedTitle + '
'; var unescapedBody = '
' + expectedBody + '
'; test.title = unescapedTitle; test.body = unescapedBody; - var expectedEscapedTitle = '<div>' + expectedTitle + '</div>'; - var expectedEscapedBody = '<div>' + expectedBody + '</div>'; + var expectedEscapedTitle = + '<div>' + expectedTitle + '</div>'; + var expectedEscapedBody = + '<div>' + expectedBody + '</div>'; runner = createMockRunner('pass', 'pass', null, null, test); Doc.call(this, runner); process.stdout.write = stdoutWrite; @@ -133,44 +133,65 @@ describe('Doc reporter', function () { }); }); - describe('on fail', function () { + describe('on fail', function() { var expectedTitle = 'some tite'; var expectedBody = 'some body'; var expectedError = 'some error'; var test = { title: expectedTitle, body: expectedBody, - slow: function () { + slow: function() { return ''; } }; - it('should log html with indents and expected title, body and error', function () { - runner = createMockRunner('fail two args', 'fail', null, null, test, expectedError); + it('should log html with indents and expected title, body and error', function() { + runner = createMockRunner( + 'fail two args', + 'fail', + null, + null, + test, + expectedError + ); Doc.call(this, runner); process.stdout.write = stdoutWrite; var expectedArray = [ '
' + expectedTitle + '
\n', - '
' + expectedBody + '
\n', + '
' +
+          expectedBody +
+          '
\n', '
' + expectedError + '
\n' ]; expect(stdout).to.eql(expectedArray); }); - it('should escape title, body and error where necessary', function () { + it('should escape title, body and error where necessary', function() { var unescapedTitle = '
' + expectedTitle + '
'; var unescapedBody = '
' + expectedBody + '
'; var unescapedError = '
' + expectedError + '
'; test.title = unescapedTitle; test.body = unescapedBody; - var expectedEscapedTitle = '<div>' + expectedTitle + '</div>'; - var expectedEscapedBody = '<div>' + expectedBody + '</div>'; - var expectedEscapedError = '<div>' + expectedError + '</div>'; - runner = createMockRunner('fail two args', 'fail', null, null, test, unescapedError); + var expectedEscapedTitle = + '<div>' + expectedTitle + '</div>'; + var expectedEscapedBody = + '<div>' + expectedBody + '</div>'; + var expectedEscapedError = + '<div>' + expectedError + '</div>'; + runner = createMockRunner( + 'fail two args', + 'fail', + null, + null, + test, + unescapedError + ); Doc.call(this, runner); process.stdout.write = stdoutWrite; var expectedArray = [ '
' + expectedEscapedTitle + '
\n', - '
' + expectedEscapedBody + '
\n', + '
' +
+          expectedEscapedBody +
+          '
\n', '
' + expectedEscapedError + '
\n' ]; expect(stdout).to.eql(expectedArray); diff --git a/test/reporters/dot.spec.js b/test/reporters/dot.spec.js index 228487ff0d..701d179f37 100644 --- a/test/reporters/dot.spec.js +++ b/test/reporters/dot.spec.js @@ -6,17 +6,17 @@ var Base = reporters.Base; var createMockRunner = require('./helpers.js').createMockRunner; -describe('Dot reporter', function () { +describe('Dot reporter', function() { var stdout; var stdoutWrite; var runner; var useColors; var windowWidth; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; useColors = Base.useColors; @@ -25,136 +25,119 @@ describe('Dot reporter', function () { Base.window.width = 0; }); - afterEach(function () { + afterEach(function() { Base.useColors = useColors; Base.window.width = windowWidth; }); - describe('on start', function () { - it('should return a new line', function () { + describe('on start', function() { + it('should return a new line', function() { runner = createMockRunner('start', 'start'); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\n' - ]; + var expectedArray = ['\n']; expect(stdout).to.eql(expectedArray); }); }); - describe('on pending', function () { - describe('if window width is greater than 1', function () { - beforeEach(function () { + describe('on pending', function() { + describe('if window width is greater than 1', function() { + beforeEach(function() { Base.window.width = 2; }); - it('should return a new line and then a coma', function () { + it('should return a new line and then a coma', function() { runner = createMockRunner('pending', 'pending'); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\n ', - Base.symbols.comma - ]; + var expectedArray = ['\n ', Base.symbols.comma]; expect(stdout).to.eql(expectedArray); }); }); - describe('if window width is equal to or less than 1', function () { - it('should return a coma', function () { + describe('if window width is equal to or less than 1', function() { + it('should return a coma', function() { runner = createMockRunner('pending', 'pending'); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - Base.symbols.comma - ]; + var expectedArray = [Base.symbols.comma]; expect(stdout).to.eql(expectedArray); }); }); }); - describe('on pass', function () { + describe('on pass', function() { var test = { duration: 1, - slow: function () { return 2; } + slow: function() { + return 2; + } }; - describe('if window width is greater than 1', function () { - beforeEach(function () { + describe('if window width is greater than 1', function() { + beforeEach(function() { Base.window.width = 2; }); - describe('if test speed is fast', function () { - it('should return a new line and then a dot', function () { + describe('if test speed is fast', function() { + it('should return a new line and then a dot', function() { runner = createMockRunner('pass', 'pass', null, null, test); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\n ', - Base.symbols.dot - ]; + var expectedArray = ['\n ', Base.symbols.dot]; expect(stdout).to.eql(expectedArray); }); }); }); - describe('if window width is equal to or less than 1', function () { - describe('if test speed is fast', function () { - it('should return a dot', function () { + describe('if window width is equal to or less than 1', function() { + describe('if test speed is fast', function() { + it('should return a dot', function() { runner = createMockRunner('pass', 'pass', null, null, test); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - Base.symbols.dot - ]; + var expectedArray = [Base.symbols.dot]; expect(stdout).to.eql(expectedArray); }); }); - describe('if test speed is slow', function () { - it('should return a dot', function () { + describe('if test speed is slow', function() { + it('should return a dot', function() { test.duration = 2; runner = createMockRunner('pass', 'pass', null, null, test); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - Base.symbols.dot - ]; + var expectedArray = [Base.symbols.dot]; expect(stdout).to.eql(expectedArray); }); }); }); }); - describe('on fail', function () { + describe('on fail', function() { var test = { test: { err: 'some error' } }; - describe('if window width is greater than 1', function () { - beforeEach(function () { + describe('if window width is greater than 1', function() { + beforeEach(function() { Base.window.width = 2; }); - it('should return a new line and then an exclamation mark', function () { + it('should return a new line and then an exclamation mark', function() { runner = createMockRunner('fail', 'fail', null, null, test); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\n ', - Base.symbols.bang - ]; + var expectedArray = ['\n ', Base.symbols.bang]; expect(stdout).to.eql(expectedArray); }); }); - describe('if window width is equal to or less than 1', function () { - it('should return an exclamation mark', function () { + describe('if window width is equal to or less than 1', function() { + it('should return an exclamation mark', function() { runner = createMockRunner('fail', 'fail', null, null, test); - Dot.call({epilogue: function () {}}, runner); + Dot.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - Base.symbols.bang - ]; + var expectedArray = [Base.symbols.bang]; expect(stdout).to.eql(expectedArray); }); }); }); - describe('on end', function () { - it('should call the epilogue', function () { + describe('on end', function() { + it('should call the epilogue', function() { runner = createMockRunner('end', 'end'); var epilogueCalled = false; - var epilogue = function () { + var epilogue = function() { epilogueCalled = true; }; Dot.call({epilogue: epilogue}, runner); diff --git a/test/reporters/helpers.js b/test/reporters/helpers.js index aa1af15742..e0c6604216 100644 --- a/test/reporters/helpers.js +++ b/test/reporters/helpers.js @@ -8,21 +8,28 @@ scope of this function for the tests to run properly. */ -function createMockRunner (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { - var runnerFunction = createRunnerFunction(runStr, ifStr1, ifStr2, ifStr3, arg1, arg2); +function createMockRunner(runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { + var runnerFunction = createRunnerFunction( + runStr, + ifStr1, + ifStr2, + ifStr3, + arg1, + arg2 + ); return { on: runnerFunction, once: runnerFunction }; } -function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { +function createRunnerFunction(runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { var test = null; switch (runStr) { case 'start': case 'pending': case 'end': - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(); } @@ -34,7 +41,7 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { case 'suite end': case 'test end': test = arg1; - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(test); } @@ -42,14 +49,14 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { case 'fail two args': test = arg1; var expectedError = arg2; - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(test, expectedError); } }; case 'start test': test = arg1; - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(); } @@ -59,7 +66,7 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { }; case 'suite suite end': var expectedSuite = arg1; - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(expectedSuite); } @@ -72,7 +79,7 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { }; case 'pass end': test = arg1; - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(test); } @@ -83,7 +90,7 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { case 'test end fail': test = arg1; var error = arg2; - return function (event, callback) { + return function(event, callback) { if (event === ifStr1) { callback(); } @@ -92,7 +99,7 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { } }; case 'fail end pass': - return function (event, callback) { + return function(event, callback) { test = arg1; if (event === ifStr1) { callback(test, {}); @@ -111,16 +118,16 @@ function createRunnerFunction (runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) { } } -function makeTest (err) { +function makeTest(err) { return { err: err, - titlePath: function () { + titlePath: function() { return ['test title']; } }; } -function createElements (argObj) { +function createElements(argObj) { var res = []; for (var i = argObj.from; i <= argObj.to; i++) { res.push('element ' + i); @@ -128,7 +135,7 @@ function createElements (argObj) { return res; } -function makeExpectedTest ( +function makeExpectedTest( expectedTitle, expectedFullTitle, expectedDuration, @@ -137,14 +144,14 @@ function makeExpectedTest ( ) { return { title: expectedTitle, - fullTitle: function () { + fullTitle: function() { return expectedFullTitle; }, duration: expectedDuration, - currentRetry: function () { + currentRetry: function() { return currentRetry; }, - slow: function () {} + slow: function() {} }; } diff --git a/test/reporters/json-stream.spec.js b/test/reporters/json-stream.spec.js index 0d11597038..bfd0c16b81 100644 --- a/test/reporters/json-stream.spec.js +++ b/test/reporters/json-stream.spec.js @@ -6,7 +6,7 @@ var JSONStream = reporters.JSONStream; var createMockRunner = require('./helpers').createMockRunner; var makeExpectedTest = require('./helpers').makeExpectedTest; -describe('Json Stream reporter', function () { +describe('Json Stream reporter', function() { var runner; var stdout; var stdoutWrite; @@ -15,23 +15,28 @@ describe('Json Stream reporter', function () { var expectedFullTitle = 'full title'; var expectedDuration = 1000; var currentRetry = 1; - var expectedTest = makeExpectedTest(expectedTitle, expectedFullTitle, expectedDuration, currentRetry); + var expectedTest = makeExpectedTest( + expectedTitle, + expectedFullTitle, + expectedDuration, + currentRetry + ); var expectedErrorMessage = 'error message'; var expectedErrorStack = 'error stack'; var expectedError = { message: expectedErrorMessage }; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('on start', function () { - it('should write stringified start with expected total', function () { + describe('on start', function() { + it('should write stringified start with expected total', function() { runner = createMockRunner('start', 'start'); var expectedTotal = 12; runner.total = expectedTotal; @@ -43,46 +48,96 @@ describe('Json Stream reporter', function () { }); }); - describe('on pass', function () { - it('should write stringified test data', function () { + describe('on pass', function() { + it('should write stringified test data', function() { runner = createMockRunner('pass', 'pass', null, null, expectedTest); JSONStream.call({}, runner); process.stdout.write = stdoutWrite; - expect(stdout[0]).to.eql('["pass",{"title":"' + expectedTitle + '","fullTitle":"' + expectedFullTitle + '","duration":' + expectedDuration + ',"currentRetry":' + currentRetry + '}]\n'); + expect(stdout[0]).to.eql( + '["pass",{"title":"' + + expectedTitle + + '","fullTitle":"' + + expectedFullTitle + + '","duration":' + + expectedDuration + + ',"currentRetry":' + + currentRetry + + '}]\n' + ); }); }); - describe('on fail', function () { - describe('if error stack exists', function () { - it('should write stringified test data with error data', function () { + describe('on fail', function() { + describe('if error stack exists', function() { + it('should write stringified test data with error data', function() { expectedError.stack = expectedErrorStack; - runner = createMockRunner('fail two args', 'fail', null, null, expectedTest, expectedError); + runner = createMockRunner( + 'fail two args', + 'fail', + null, + null, + expectedTest, + expectedError + ); JSONStream.call({}, runner); process.stdout.write = stdoutWrite; - expect(stdout[0]).to.eql('["fail",{"title":"' + expectedTitle + '","fullTitle":"' + expectedFullTitle + '","duration":' + expectedDuration + ',"currentRetry":' + currentRetry + ',"err":"' + expectedErrorMessage + '","stack":"' + expectedErrorStack + '"}]\n'); + expect(stdout[0]).to.eql( + '["fail",{"title":"' + + expectedTitle + + '","fullTitle":"' + + expectedFullTitle + + '","duration":' + + expectedDuration + + ',"currentRetry":' + + currentRetry + + ',"err":"' + + expectedErrorMessage + + '","stack":"' + + expectedErrorStack + + '"}]\n' + ); }); }); - describe('if error stack does not exist', function () { - it('should write stringified test data with error data', function () { + describe('if error stack does not exist', function() { + it('should write stringified test data with error data', function() { expectedError.stack = null; - runner = createMockRunner('fail two args', 'fail', null, null, expectedTest, expectedError); + runner = createMockRunner( + 'fail two args', + 'fail', + null, + null, + expectedTest, + expectedError + ); JSONStream.call({}, runner); process.stdout.write = stdoutWrite; - expect(stdout[0]).to.eql('["fail",{"title":"' + expectedTitle + '","fullTitle":"' + expectedFullTitle + '","duration":' + expectedDuration + ',"currentRetry":' + currentRetry + ',"err":"' + expectedErrorMessage + '","stack":null}]\n'); + expect(stdout[0]).to.eql( + '["fail",{"title":"' + + expectedTitle + + '","fullTitle":"' + + expectedFullTitle + + '","duration":' + + expectedDuration + + ',"currentRetry":' + + currentRetry + + ',"err":"' + + expectedErrorMessage + + '","stack":null}]\n' + ); }); }); }); - describe('on end', function () { - it('should write end details', function () { + describe('on end', function() { + it('should write end details', function() { runner = createMockRunner('end', 'end'); JSONStream.call({}, runner); process.stdout.write = stdoutWrite; diff --git a/test/reporters/json.spec.js b/test/reporters/json.spec.js index a40eead75f..fcab2882d2 100644 --- a/test/reporters/json.spec.js +++ b/test/reporters/json.spec.js @@ -5,11 +5,11 @@ var Suite = Mocha.Suite; var Runner = Mocha.Runner; var Test = Mocha.Test; -describe('json reporter', function () { +describe('json reporter', function() { var suite, runner; var testTitle = 'json test 1'; - beforeEach(function () { + beforeEach(function() { var mocha = new Mocha({ reporter: 'json' }); @@ -19,14 +19,16 @@ describe('json reporter', function () { var mochaReporter = new mocha._reporter(runner); }); - it('should have 1 test failure', function (done) { - var error = { message: 'oh shit' }; + it('should have 1 test failure', function(done) { + var error = {message: 'oh shit'}; - suite.addTest(new Test(testTitle, function (done) { - done(new Error(error.message)); - })); + suite.addTest( + new Test(testTitle, function(done) { + done(new Error(error.message)); + }) + ); - runner.run(function (failureCount) { + runner.run(function(failureCount) { expect(failureCount).to.be(1); expect(runner).to.have.property('testResults'); expect(runner.testResults).to.have.property('failures'); @@ -42,10 +44,10 @@ describe('json reporter', function () { }); }); - it('should have 1 test pending', function (done) { + it('should have 1 test pending', function(done) { suite.addTest(new Test(testTitle)); - runner.run(function (failureCount) { + runner.run(function(failureCount) { expect(failureCount).to.be(0); expect(runner).to.have.property('testResults'); expect(runner.testResults).to.have.property('pending'); @@ -59,19 +61,21 @@ describe('json reporter', function () { }); }); - it('should handle circular objects in errors', function (done) { + it('should handle circular objects in errors', function(done) { var testTitle = 'json test 1'; - function CircleError () { + function CircleError() { this.message = 'oh shit'; this.circular = this; } var error = new CircleError(); - suite.addTest(new Test(testTitle, function (done) { - throw error; - })); + suite.addTest( + new Test(testTitle, function(done) { + throw error; + }) + ); - runner.run(function (failureCount) { + runner.run(function(failureCount) { expect(failureCount).to.equal(1); expect(runner).to.have.property('testResults'); expect(runner.testResults).to.have.property('failures'); diff --git a/test/reporters/landing.spec.js b/test/reporters/landing.spec.js index 633c29e823..ac110e6d23 100644 --- a/test/reporters/landing.spec.js +++ b/test/reporters/landing.spec.js @@ -6,7 +6,7 @@ var Base = reporters.Base; var createMockRunner = require('./helpers').createMockRunner; -describe('Landing reporter', function () { +describe('Landing reporter', function() { var stdout; var stdoutWrite; var runner; @@ -24,10 +24,10 @@ describe('Landing reporter', function () { resetCode ]; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; useColors = Base.useColors; @@ -36,15 +36,15 @@ describe('Landing reporter', function () { Base.window.width = 1; }); - afterEach(function () { + afterEach(function() { Base.useColors = useColors; Base.window.width = windowWidth; }); - describe('on start', function () { - it('should write new lines', function () { + describe('on start', function() { + it('should write new lines', function() { var cachedCursor = Base.cursor; - Base.cursor.hide = function () {}; + Base.cursor.hide = function() {}; runner = createMockRunner('start', 'start'); Landing.call({}, runner); @@ -54,10 +54,10 @@ describe('Landing reporter', function () { Base.cursor = cachedCursor; }); - it('should call cursor hide', function () { + it('should call cursor hide', function() { var cachedCursor = Base.cursor; var calledCursorHide = false; - Base.cursor.hide = function () { + Base.cursor.hide = function() { calledCursorHide = true; }; runner = createMockRunner('start', 'start'); @@ -70,9 +70,9 @@ describe('Landing reporter', function () { }); }); - describe('on test end', function () { - describe('if test has failed', function () { - it('should write expected landing strip', function () { + describe('on test end', function() { + describe('if test has failed', function() { + it('should write expected landing strip', function() { var test = { state: 'failed' }; @@ -85,8 +85,8 @@ describe('Landing reporter', function () { expect(stdout).to.eql(expectedArray); }); }); - describe('if test has not failed', function () { - it('should write expected landing strip', function () { + describe('if test has not failed', function() { + it('should write expected landing strip', function() { var test = { state: 'success' }; @@ -100,21 +100,24 @@ describe('Landing reporter', function () { }); }); }); - describe('on end', function () { - it('should call cursor show and epilogue', function () { + describe('on end', function() { + it('should call cursor show and epilogue', function() { var cachedCursor = Base.cursor; var calledCursorShow = false; - Base.cursor.show = function () { + Base.cursor.show = function() { calledCursorShow = true; }; runner = createMockRunner('end', 'end'); var calledEpilogue = false; - Landing.call({ - epilogue: function () { - calledEpilogue = true; - } - }, runner); + Landing.call( + { + epilogue: function() { + calledEpilogue = true; + } + }, + runner + ); process.stdout.write = stdoutWrite; expect(calledEpilogue).to.be(true); diff --git a/test/reporters/list.spec.js b/test/reporters/list.spec.js index 7871caf82e..179e320ef5 100644 --- a/test/reporters/list.spec.js +++ b/test/reporters/list.spec.js @@ -6,7 +6,7 @@ var Base = reporters.Base; var createMockRunner = require('./helpers').createMockRunner; -describe('List reporter', function () { +describe('List reporter', function() { var stdout; var stdoutWrite; var runner; @@ -14,60 +14,57 @@ describe('List reporter', function () { var expectedTitle = 'some title'; var expectedDuration = 100; var test = { - fullTitle: function () { + fullTitle: function() { return expectedTitle; }, duration: expectedDuration, - slow: function () {} + slow: function() {} }; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; useColors = Base.useColors; Base.useColors = false; }); - afterEach(function () { + afterEach(function() { Base.useColors = useColors; }); - describe('on start and test', function () { - it('should write expected new line and title to the console', function () { + describe('on start and test', function() { + it('should write expected new line and title to the console', function() { runner = createMockRunner('start test', 'start', 'test', null, test); - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; var startString = '\n'; var testString = ' ' + expectedTitle + ': '; - var expectedArray = [ - startString, - testString - ]; + var expectedArray = [startString, testString]; expect(stdout).to.eql(expectedArray); }); }); - describe('on pending', function () { - it('should write expected title to the console', function () { + describe('on pending', function() { + it('should write expected title to the console', function() { runner = createMockRunner('pending test', 'pending', null, null, test); - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; expect(stdout[0]).to.eql(' - ' + expectedTitle + '\n'); }); }); - describe('on pass', function () { - it('should call cursor CR', function () { + describe('on pass', function() { + it('should call cursor CR', function() { var calledCursorCR = false; var cachedCursor = Base.cursor; - Base.cursor.CR = function () { + Base.cursor.CR = function() { calledCursorCR = true; }; runner = createMockRunner('pass', 'pass', null, null, test); - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; @@ -75,32 +72,40 @@ describe('List reporter', function () { Base.cursor = cachedCursor; }); - it('should write expected symbol, title and duration to the console', function () { + it('should write expected symbol, title and duration to the console', function() { var cachedSymbols = Base.symbols; var expectedOkSymbol = 'OK'; Base.symbols.ok = expectedOkSymbol; var cachedCursor = Base.cursor; - Base.cursor.CR = function () {}; + Base.cursor.CR = function() {}; runner = createMockRunner('pass', 'pass', null, null, test); - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - expect(stdout[0]).to.equal(' ' + expectedOkSymbol + ' ' + expectedTitle + ': ' + expectedDuration + 'ms\n'); + expect(stdout[0]).to.equal( + ' ' + + expectedOkSymbol + + ' ' + + expectedTitle + + ': ' + + expectedDuration + + 'ms\n' + ); Base.cursor = cachedCursor; Base.symbols = cachedSymbols; }); }); - describe('on fail', function () { - it('should call cursor CR', function () { + describe('on fail', function() { + it('should call cursor CR', function() { var calledCursorCR = false; var cachedCursor = Base.cursor; - Base.cursor.CR = function () { + Base.cursor.CR = function() { calledCursorCR = true; }; runner = createMockRunner('fail', 'fail', null, null, test); - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; @@ -108,26 +113,28 @@ describe('List reporter', function () { Base.cursor = cachedCursor; }); - it('should write expected error number and title', function () { + it('should write expected error number and title', function() { var cachedCursor = Base.cursor; var expectedErrorCount = 1; - Base.cursor.CR = function () {}; + Base.cursor.CR = function() {}; runner = createMockRunner('fail', 'fail', null, null, test); - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - expect(stdout[0]).to.equal(' ' + expectedErrorCount + ') ' + expectedTitle + '\n'); + expect(stdout[0]).to.equal( + ' ' + expectedErrorCount + ') ' + expectedTitle + '\n' + ); Base.cursor = cachedCursor; }); - it('should immediately construct fail strings', function () { - var actual = { a: 'actual' }; - var expected = { a: 'expected' }; + it('should immediately construct fail strings', function() { + var actual = {a: 'actual'}; + var expected = {a: 'expected'}; var checked = false; var err; test = {}; - runner.on = runner.once = function (event, callback) { + runner.on = runner.once = function(event, callback) { if (!checked && event === 'fail') { err = new Error('fake failure object with actual/expected'); err.actual = actual; @@ -137,7 +144,7 @@ describe('List reporter', function () { checked = true; } }; - List.call({epilogue: function () {}}, runner); + List.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; expect(typeof err.actual).to.equal('string'); @@ -145,15 +152,18 @@ describe('List reporter', function () { }); }); - describe('on end', function () { - it('should call epilogue', function () { + describe('on end', function() { + it('should call epilogue', function() { var calledEpilogue = false; runner = createMockRunner('end', 'end'); - List.call({ - epilogue: function () { - calledEpilogue = true; - } - }, runner); + List.call( + { + epilogue: function() { + calledEpilogue = true; + } + }, + runner + ); process.stdout.write = stdoutWrite; expect(calledEpilogue).to.be(true); diff --git a/test/reporters/markdown.spec.js b/test/reporters/markdown.spec.js index f6fcf095e0..4303ef2aaf 100644 --- a/test/reporters/markdown.spec.js +++ b/test/reporters/markdown.spec.js @@ -5,7 +5,7 @@ var Markdown = reporters.Markdown; var createMockRunner = require('./helpers').createMockRunner; -describe('Markdown reporter', function () { +describe('Markdown reporter', function() { var stdout; var stdoutWrite; var runner; @@ -13,44 +13,66 @@ describe('Markdown reporter', function () { var expectedFullTitle = 'full title'; var sluggedFullTitle = 'full-title'; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('on \'suite\'', function () { - it('should write expected slugged titles on \'end\' event', function () { + describe("on 'suite'", function() { + it("should write expected slugged titles on 'end' event", function() { var expectedSuite = { title: expectedTitle, - fullTitle: function () { return expectedFullTitle; }, - suites: [{ - title: expectedTitle, - fullTitle: function () { return expectedFullTitle; }, - suites: [] - }] + fullTitle: function() { + return expectedFullTitle; + }, + suites: [ + { + title: expectedTitle, + fullTitle: function() { + return expectedFullTitle; + }, + suites: [] + } + ] }; - runner = createMockRunner('suite suite end', 'suite', 'suite end', 'end', expectedSuite); + runner = createMockRunner( + 'suite suite end', + 'suite', + 'suite end', + 'end', + expectedSuite + ); runner.suite = expectedSuite; Markdown.call({}, runner); process.stdout.write = stdoutWrite; var expectedArray = [ '# TOC\n', - ' - [' + expectedTitle + '](#' + sluggedFullTitle + ')\n - [' + expectedTitle + '](#' + sluggedFullTitle + ')\n', + ' - [' + + expectedTitle + + '](#' + + sluggedFullTitle + + ')\n - [' + + expectedTitle + + '](#' + + sluggedFullTitle + + ')\n', '\n ' + expectedTitle + '\n' ]; expect(stdout).to.eql(expectedArray); }); }); - describe('on \'pass\'', function () { - it('should write test code inside js code block, on \'end\' event', function () { + describe("on 'pass'", function() { + it("should write test code inside js code block, on 'end' event", function() { var expectedSuite = { title: expectedTitle, - fullTitle: function () { return expectedFullTitle; }, + fullTitle: function() { + return expectedFullTitle; + }, suites: [] }; var expectedDuration = 1000; @@ -58,10 +80,14 @@ describe('Markdown reporter', function () { var expectedBody = 'some body'; var expectedTest = { title: expectedTitle, - fullTitle: function () { return expectedFullTitle; }, + fullTitle: function() { + return expectedFullTitle; + }, duration: expectedDuration, - currentRetry: function () { return currentRetry; }, - slow: function () {}, + currentRetry: function() { + return currentRetry; + }, + slow: function() {}, body: expectedBody }; runner = createMockRunner('pass end', 'pass', 'end', null, expectedTest); diff --git a/test/reporters/min.spec.js b/test/reporters/min.spec.js index 1312e21ea8..129a3b35d6 100644 --- a/test/reporters/min.spec.js +++ b/test/reporters/min.spec.js @@ -5,42 +5,42 @@ var Min = reporters.Min; var createMockRunner = require('./helpers').createMockRunner; -describe('Min reporter', function () { +describe('Min reporter', function() { var stdout; var stdoutWrite; var runner; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('on start', function () { - it('should clear screen then set cursor position', function () { + describe('on start', function() { + it('should clear screen then set cursor position', function() { runner = createMockRunner('start', 'start'); - Min.call({epilogue: function () {}}, runner); + Min.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\u001b[2J', - '\u001b[1;3H' - ]; + var expectedArray = ['\u001b[2J', '\u001b[1;3H']; expect(stdout).to.eql(expectedArray); }); }); - describe('on end', function () { - it('should call epilogue', function () { + describe('on end', function() { + it('should call epilogue', function() { var calledEpilogue = false; runner = createMockRunner('end', 'end'); - Min.call({ - epilogue: function () { - calledEpilogue = true; - } - }, runner); + Min.call( + { + epilogue: function() { + calledEpilogue = true; + } + }, + runner + ); process.stdout.write = stdoutWrite; expect(calledEpilogue).to.be(true); diff --git a/test/reporters/nyan.spec.js b/test/reporters/nyan.spec.js index 43e8c778e1..633a2ce4f8 100644 --- a/test/reporters/nyan.spec.js +++ b/test/reporters/nyan.spec.js @@ -6,129 +6,152 @@ var Base = reporters.Base; var createMockRunner = require('./helpers').createMockRunner; -describe('Nyan reporter', function () { - describe('events', function () { +describe('Nyan reporter', function() { + describe('events', function() { var runner; var stdout; var stdoutWrite; var calledDraw; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('on start', function () { - it('should call draw', function () { + describe('on start', function() { + it('should call draw', function() { calledDraw = false; runner = createMockRunner('start', 'start'); - NyanCat.call({ - draw: function () { - calledDraw = true; + NyanCat.call( + { + draw: function() { + calledDraw = true; + }, + generateColors: function() {} }, - generateColors: function () {} - }, runner); + runner + ); process.stdout.write = stdoutWrite; expect(calledDraw).to.be(true); }); }); - describe('on pending', function () { - it('should call draw', function () { + describe('on pending', function() { + it('should call draw', function() { calledDraw = false; runner = createMockRunner('pending', 'pending'); - NyanCat.call({ - draw: function () { - calledDraw = true; + NyanCat.call( + { + draw: function() { + calledDraw = true; + }, + generateColors: function() {} }, - generateColors: function () {} - }, runner); + runner + ); process.stdout.write = stdoutWrite; expect(calledDraw).to.be(true); }); }); - describe('on pass', function () { - it('should call draw', function () { + describe('on pass', function() { + it('should call draw', function() { calledDraw = false; var test = { duration: '', - slow: function () {} + slow: function() {} }; runner = createMockRunner('pass', 'pass', null, null, test); - NyanCat.call({ - draw: function () { - calledDraw = true; + NyanCat.call( + { + draw: function() { + calledDraw = true; + }, + generateColors: function() {} }, - generateColors: function () {} - }, runner); + runner + ); process.stdout.write = stdoutWrite; expect(calledDraw).to.be(true); }); }); - describe('on fail', function () { - it('should call draw', function () { + describe('on fail', function() { + it('should call draw', function() { calledDraw = false; var test = { err: '' }; runner = createMockRunner('fail', 'fail', null, null, test); - NyanCat.call({ - draw: function () { - calledDraw = true; + NyanCat.call( + { + draw: function() { + calledDraw = true; + }, + generateColors: function() {} }, - generateColors: function () {} - }, runner); + runner + ); process.stdout.write = stdoutWrite; expect(calledDraw).to.be(true); }); }); - describe('on end', function () { - it('should call epilogue', function () { + describe('on end', function() { + it('should call epilogue', function() { var calledEpilogue = false; runner = createMockRunner('end', 'end'); - NyanCat.call({ - draw: function () {}, - generateColors: function () {}, - epilogue: function () { - calledEpilogue = true; - } - }, runner); + NyanCat.call( + { + draw: function() {}, + generateColors: function() {}, + epilogue: function() { + calledEpilogue = true; + } + }, + runner + ); process.stdout.write = stdoutWrite; expect(calledEpilogue).to.be(true); }); - it('should write numberOfLines amount of new lines', function () { + it('should write numberOfLines amount of new lines', function() { var expectedNumberOfLines = 4; runner = createMockRunner('end', 'end'); - NyanCat.call({ - draw: function () {}, - generateColors: function () {}, - epilogue: function () {} - }, runner); + NyanCat.call( + { + draw: function() {}, + generateColors: function() {}, + epilogue: function() {} + }, + runner + ); - var arrayOfNewlines = stdout.filter(function (value) { return value === '\n'; }); + var arrayOfNewlines = stdout.filter(function(value) { + return value === '\n'; + }); process.stdout.write = stdoutWrite; expect(arrayOfNewlines).to.have.length(expectedNumberOfLines); }); - it('should call Base show', function () { + it('should call Base show', function() { var showCalled = false; var cachedShow = Base.cursor.show; - Base.cursor.show = function () { + Base.cursor.show = function() { showCalled = true; }; runner = createMockRunner('end', 'end'); - NyanCat.call({ - draw: function () {}, - generateColors: function () {}, - epilogue: function () {} - }, runner); + NyanCat.call( + { + draw: function() {}, + generateColors: function() {}, + epilogue: function() {} + }, + runner + ); process.stdout.write = stdoutWrite; expect(showCalled).to.be(true); @@ -137,34 +160,34 @@ describe('Nyan reporter', function () { }); }); - describe('draw', function () { + describe('draw', function() { var stdout; var stdoutWrite; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('if tick is false', function () { - it('should draw face with expected spaces, _ and ^', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); - nyanCat.stats = { passes: 2, pending: 1, failures: 0 }; + describe('if tick is false', function() { + it('should draw face with expected spaces, _ and ^', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); + nyanCat.stats = {passes: 2, pending: 1, failures: 0}; nyanCat.draw.call({ tick: false, - appendRainbow: function () {}, - rainbowify: function () {}, - drawScoreboard: function () {}, - drawRainbow: function () {}, + appendRainbow: function() {}, + rainbowify: function() {}, + drawScoreboard: function() {}, + drawRainbow: function() {}, drawNyanCat: NyanCat.prototype.drawNyanCat, scoreboardWidth: 0, trajectories: [[]], - face: function () {}, - cursorUp: function () {} + face: function() {}, + cursorUp: function() {} }); process.stdout.write = stdoutWrite; @@ -185,22 +208,22 @@ describe('Nyan reporter', function () { expect(stdout).to.eql(expectedArray); }); }); - describe('if tick is true', function () { - it('should draw face with expected spaces, _ and ~', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); - nyanCat.stats = { passes: 2, pending: 1, failures: 0 }; + describe('if tick is true', function() { + it('should draw face with expected spaces, _ and ~', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); + nyanCat.stats = {passes: 2, pending: 1, failures: 0}; nyanCat.draw.call({ tick: true, - appendRainbow: function () {}, - rainbowify: function () {}, - drawScoreboard: function () {}, - drawRainbow: function () {}, + appendRainbow: function() {}, + rainbowify: function() {}, + drawScoreboard: function() {}, + drawRainbow: function() {}, drawNyanCat: NyanCat.prototype.drawNyanCat, scoreboardWidth: 0, trajectories: [[]], - face: function () {}, - cursorUp: function () {} + face: function() {}, + cursorUp: function() {} }); process.stdout.write = stdoutWrite; @@ -223,117 +246,115 @@ describe('Nyan reporter', function () { }); }); - describe('cursorDown', function () { + describe('cursorDown', function() { var stdout; var stdoutWrite; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - it('should write cursor down interaction with expected number', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + it('should write cursor down interaction with expected number', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var expectedNumber = 25; nyanCat.cursorDown(expectedNumber); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\u001b[' + expectedNumber + 'B' - ]; + var expectedArray = ['\u001b[' + expectedNumber + 'B']; expect(stdout).to.eql(expectedArray); }); }); - describe('cursorUp', function () { + describe('cursorUp', function() { var stdout; var stdoutWrite; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - it('should write cursor up interaction with expected number', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + it('should write cursor up interaction with expected number', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var expectedNumber = 25; nyanCat.cursorUp(expectedNumber); process.stdout.write = stdoutWrite; - var expectedArray = [ - '\u001b[' + expectedNumber + 'A' - ]; + var expectedArray = ['\u001b[' + expectedNumber + 'A']; expect(stdout).to.eql(expectedArray); }); }); - describe('rainbowify', function () { - describe('useColors is false', function () { + describe('rainbowify', function() { + describe('useColors is false', function() { var useColors; - beforeEach(function () { + beforeEach(function() { useColors = Base.useColors; Base.useColors = false; }); - afterEach(function () { + afterEach(function() { Base.useColors = useColors; }); - it('should return argument string', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + it('should return argument string', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var expectedString = 'hello'; var outputString = nyanCat.rainbowify(expectedString); expect(outputString).to.equal(expectedString); }); }); - describe('useColors is true', function () { + describe('useColors is true', function() { var useColors; - beforeEach(function () { + beforeEach(function() { useColors = Base.useColors; Base.useColors = true; }); - afterEach(function () { + afterEach(function() { Base.useColors = useColors; }); - it('should return rainbowified string from the given string and predefined codes', function () { + it('should return rainbowified string from the given string and predefined codes', function() { var startCode = '\u001b[38;5;'; var endCode = '\u001b[0m'; - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var expectedString = 'hello'; var colorCode = 'somecode'; - var expectedRainbowifyString = startCode + colorCode + 'm' + expectedString + endCode; + var expectedRainbowifyString = + startCode + colorCode + 'm' + expectedString + endCode; var outputString = nyanCat.rainbowify.call( { rainbowColors: [colorCode], colorIndex: 0 }, - expectedString); + expectedString + ); expect(outputString).to.equal(expectedRainbowifyString); }); }); }); - describe('appendRainbow', function () { - describe('if tick is true', function () { - it('should set an _ segment', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + describe('appendRainbow', function() { + describe('if tick is true', function() { + it('should set an _ segment', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var expectedSegment; var inputArray = []; var trajectories = [inputArray, inputArray, inputArray, inputArray]; nyanCat.appendRainbow.call({ tick: true, - rainbowify: function (segment) { + rainbowify: function(segment) { expectedSegment = segment; }, numberOfLines: 4, @@ -343,17 +364,24 @@ describe('Nyan reporter', function () { expect(expectedSegment).to.equal('_'); }); - it('should shift each trajectory item, if its length is greater of equal to its max width', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + it('should shift each trajectory item, if its length is greater of equal to its max width', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var rainbowifyResult = 'rainbowify'; var inputArray = ['itemToShify']; var trajectories = [inputArray, inputArray, inputArray, inputArray]; var expectedArray = [rainbowifyResult]; - var expectedTrajectories = [expectedArray, expectedArray, expectedArray, expectedArray]; + var expectedTrajectories = [ + expectedArray, + expectedArray, + expectedArray, + expectedArray + ]; nyanCat.appendRainbow.call({ tick: true, - rainbowify: function () { return rainbowifyResult; }, + rainbowify: function() { + return rainbowifyResult; + }, numberOfLines: 4, trajectoryWidthMax: 0, trajectories: trajectories @@ -362,15 +390,15 @@ describe('Nyan reporter', function () { expect(trajectories).to.eql(expectedTrajectories); }); }); - describe('if tick is false', function () { - it('should set an - segment', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + describe('if tick is false', function() { + it('should set an - segment', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); var expectedSegment; var inputArray = []; var trajectories = [inputArray, inputArray, inputArray, inputArray]; nyanCat.appendRainbow.call({ tick: false, - rainbowify: function (segment) { + rainbowify: function(segment) { expectedSegment = segment; }, numberOfLines: 4, @@ -383,25 +411,25 @@ describe('Nyan reporter', function () { }); }); - describe('drawScoreboard', function () { - it('should write scoreboard with color set with each stat', function () { + describe('drawScoreboard', function() { + it('should write scoreboard with color set with each stat', function() { var cachedColor = Base.color; - Base.color = function (type, n) { + Base.color = function(type, n) { return type + n; }; var stdout = []; var stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; var passes = 2; var pending = 1; var failures = 1; - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); nyanCat.drawScoreboard.call({ - cursorUp: function () {}, - stats: { passes: passes, pending: pending, failures: failures }, + cursorUp: function() {}, + stats: {passes: passes, pending: pending, failures: failures}, numberOfLines: 4 }); var expectedArray = [ @@ -420,21 +448,21 @@ describe('Nyan reporter', function () { process.stdout.write = stdoutWrite; Base.color = cachedColor; }); - it('should call cursorUp with given numberOfLines', function () { + it('should call cursorUp with given numberOfLines', function() { var stdout = []; var stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; var expectedCursorArgument = null; var expectedNumberOfLines = 1000; - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); nyanCat.drawScoreboard.call({ - cursorUp: function (lines) { + cursorUp: function(lines) { expectedCursorArgument = lines; }, - stats: { passes: 0, pending: 0, failures: 0 }, + stats: {passes: 0, pending: 0, failures: 0}, numberOfLines: expectedNumberOfLines }); @@ -443,11 +471,11 @@ describe('Nyan reporter', function () { }); }); - describe('drawRainbow', function () { - it('should write width, contents and newline for each trajectory', function () { + describe('drawRainbow', function() { + it('should write width, contents and newline for each trajectory', function() { var stdout = []; var stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; var expectedWidth = 444; @@ -455,9 +483,9 @@ describe('Nyan reporter', function () { var expectedContents = 'input'; var inputArray = [expectedContents]; var trajectories = [inputArray]; - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); nyanCat.drawRainbow.call({ - cursorUp: function () {}, + cursorUp: function() {}, trajectories: trajectories, scoreboardWidth: expectedWidth, numberOfLines: 1 @@ -472,18 +500,18 @@ describe('Nyan reporter', function () { expect(stdout).to.eql(expectedArray); }); - it('should call cursorUp with given numberOfLines', function () { + it('should call cursorUp with given numberOfLines', function() { var stdout = []; var stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; var expectedCursorArgument = null; var expectedNumberOfLines = 1000; - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); nyanCat.drawRainbow.call({ - cursorUp: function (lines) { + cursorUp: function(lines) { expectedCursorArgument = lines; }, trajectories: [['input']], @@ -495,28 +523,28 @@ describe('Nyan reporter', function () { process.stdout.write = stdoutWrite; }); }); - describe('face', function () { - it('expected face:(x .x) when "failures" at least one', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); - nyanCat.stats = { passes: 2, pending: 1, failures: 1 }; + describe('face', function() { + it('expected face:(x .x) when "failures" at least one', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); + nyanCat.stats = {passes: 2, pending: 1, failures: 1}; expect(nyanCat.face()).to.equal('( x .x)'); }); - it('expected face:(x .x) when "pending" at least one and no failing', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); - nyanCat.stats = { passes: 2, pending: 1, failures: 0 }; + it('expected face:(x .x) when "pending" at least one and no failing', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); + nyanCat.stats = {passes: 2, pending: 1, failures: 0}; expect(nyanCat.face()).to.equal('( o .o)'); }); - it('expected face:(^ .^) when "passing" only', function () { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); - nyanCat.stats = { passes: 1, pending: 0, failures: 0 }; + it('expected face:(^ .^) when "passing" only', function() { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); + nyanCat.stats = {passes: 1, pending: 0, failures: 0}; expect(nyanCat.face()).to.equal('( ^ .^)'); }); - it('expected face:(- .-) when otherwise', function (done) { - var nyanCat = new NyanCat({on: function () {}, once: function () {}}); - nyanCat.stats = { passes: 0, pending: 0, failures: 0 }; + it('expected face:(- .-) when otherwise', function(done) { + var nyanCat = new NyanCat({on: function() {}, once: function() {}}); + nyanCat.stats = {passes: 0, pending: 0, failures: 0}; expect(nyanCat.face()).to.equal('( - .-)'); done(); }); diff --git a/test/reporters/progress.spec.js b/test/reporters/progress.spec.js index 47818f841d..1cca6e58d2 100644 --- a/test/reporters/progress.spec.js +++ b/test/reporters/progress.spec.js @@ -6,24 +6,24 @@ var Base = reporters.Base; var createMockRunner = require('./helpers').createMockRunner; -describe('Progress reporter', function () { +describe('Progress reporter', function() { var stdout; var stdoutWrite; var runner; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; }); - describe('on start', function () { - it('should call cursor hide', function () { + describe('on start', function() { + it('should call cursor hide', function() { var cachedCursor = Base.cursor; var calledCursorHide = false; - Base.cursor.hide = function () { + Base.cursor.hide = function() { calledCursorHide = true; }; runner = createMockRunner('start', 'start'); @@ -36,13 +36,13 @@ describe('Progress reporter', function () { }); }); - describe('on test end', function () { - describe('if line has not changed', function () { - it('should return and not write anything', function () { + describe('on test end', function() { + describe('if line has not changed', function() { + it('should return and not write anything', function() { var cachedCursor = Base.cursor; var useColors = Base.useColors; Base.useColors = false; - Base.cursor.CR = function () {}; + Base.cursor.CR = function() {}; var windowWidth = Base.window.width; Base.window.width = -3; @@ -61,13 +61,13 @@ describe('Progress reporter', function () { Base.window.width = windowWidth; }); }); - describe('if line has changed', function () { - it('should write expected progress of open and close options', function () { + describe('if line has changed', function() { + it('should write expected progress of open and close options', function() { var calledCursorCR = false; var cachedCursor = Base.cursor; var useColors = Base.useColors; Base.useColors = false; - Base.cursor.CR = function () { + Base.cursor.CR = function() { calledCursorCR = true; }; var windowWidth = Base.window.width; @@ -108,20 +108,23 @@ describe('Progress reporter', function () { }); }); - describe('on end', function () { - it('should call cursor show and epilogue', function () { + describe('on end', function() { + it('should call cursor show and epilogue', function() { var cachedCursor = Base.cursor; var calledCursorShow = false; - Base.cursor.show = function () { + Base.cursor.show = function() { calledCursorShow = true; }; runner = createMockRunner('end', 'end'); var calledEpilogue = false; - Progress.call({ - epilogue: function () { - calledEpilogue = true; - } - }, runner); + Progress.call( + { + epilogue: function() { + calledEpilogue = true; + } + }, + runner + ); process.stdout.write = stdoutWrite; expect(calledEpilogue).to.be(true); diff --git a/test/reporters/spec.spec.js b/test/reporters/spec.spec.js index cb662e4530..da929fb16a 100644 --- a/test/reporters/spec.spec.js +++ b/test/reporters/spec.spec.js @@ -6,99 +6,106 @@ var Base = reporters.Base; var createMockRunner = require('./helpers').createMockRunner; -describe('Spec reporter', function () { +describe('Spec reporter', function() { var stdout; var stdoutWrite; var runner; var useColors; var expectedTitle = 'expectedTitle'; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; useColors = Base.useColors; Base.useColors = false; }); - afterEach(function () { + afterEach(function() { Base.useColors = useColors; }); - describe('on suite', function () { - it('should return title', function () { + describe('on suite', function() { + it('should return title', function() { var suite = { title: expectedTitle }; runner = createMockRunner('suite', 'suite', null, null, suite); - Spec.call({epilogue: function () {}}, runner); + Spec.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - expectedTitle + '\n' - ]; + var expectedArray = [expectedTitle + '\n']; expect(stdout).to.eql(expectedArray); }); }); - describe('on pending', function () { - it('should return title', function () { + describe('on pending', function() { + it('should return title', function() { var suite = { title: expectedTitle }; runner = createMockRunner('pending test', 'pending', null, null, suite); - Spec.call({epilogue: function () {}}, runner); + Spec.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - ' - ' + expectedTitle + '\n' - ]; + var expectedArray = [' - ' + expectedTitle + '\n']; expect(stdout).to.eql(expectedArray); }); }); - describe('on pass', function () { - describe('if test speed is slow', function () { - it('should return expected tick, title and duration', function () { + describe('on pass', function() { + describe('if test speed is slow', function() { + it('should return expected tick, title and duration', function() { var expectedDuration = 2; var test = { title: expectedTitle, duration: expectedDuration, - slow: function () { return 1; } + slow: function() { + return 1; + } }; runner = createMockRunner('pass', 'pass', null, null, test); - Spec.call({epilogue: function () {}}, runner); + Spec.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedString = ' ' + Base.symbols.ok + ' ' + expectedTitle + ' (' + expectedDuration + 'ms)' + '\n'; + var expectedString = + ' ' + + Base.symbols.ok + + ' ' + + expectedTitle + + ' (' + + expectedDuration + + 'ms)' + + '\n'; expect(stdout[0]).to.equal(expectedString); }); }); - describe('if test speed is fast', function () { - it('should return expected tick, title and without a duration', function () { + describe('if test speed is fast', function() { + it('should return expected tick, title and without a duration', function() { var expectedDuration = 1; var test = { title: expectedTitle, duration: expectedDuration, - slow: function () { return 2; } + slow: function() { + return 2; + } }; runner = createMockRunner('pass', 'pass', null, null, test); - Spec.call({epilogue: function () {}}, runner); + Spec.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedString = ' ' + Base.symbols.ok + ' ' + expectedTitle + '\n'; + var expectedString = + ' ' + Base.symbols.ok + ' ' + expectedTitle + '\n'; expect(stdout[0]).to.equal(expectedString); }); }); }); - describe('on fail', function () { - it('should return title and function count', function () { + describe('on fail', function() { + it('should return title and function count', function() { var functionCount = 1; var test = { title: expectedTitle }; runner = createMockRunner('fail', 'fail', null, null, test); - Spec.call({epilogue: function () {}}, runner); + Spec.call({epilogue: function() {}}, runner); process.stdout.write = stdoutWrite; - var expectedArray = [ - ' ' + functionCount + ') ' + expectedTitle + '\n' - ]; + var expectedArray = [' ' + functionCount + ') ' + expectedTitle + '\n']; expect(stdout).to.eql(expectedArray); }); }); diff --git a/test/reporters/tap.spec.js b/test/reporters/tap.spec.js index 6a29ffbe26..09577838be 100644 --- a/test/reporters/tap.spec.js +++ b/test/reporters/tap.spec.js @@ -5,7 +5,7 @@ var TAP = reporters.TAP; var createMockRunner = require('./helpers').createMockRunner; -describe('TAP reporter', function () { +describe('TAP reporter', function() { var stdout; var stdoutWrite; var runner; @@ -13,36 +13,34 @@ describe('TAP reporter', function () { var countAfterTestEnd = 2; var test; - beforeEach(function () { + beforeEach(function() { stdout = []; stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; test = { - fullTitle: function () { + fullTitle: function() { return expectedTitle; }, - slow: function () {} + slow: function() {} }; }); - describe('on start', function () { - it('should hand runners suite into grepTotal and log the total', function () { + describe('on start', function() { + it('should hand runners suite into grepTotal and log the total', function() { var expectedSuite = 'some suite'; var expectedTotal = 10; var expectedString; runner = createMockRunner('start', 'start'); runner.suite = expectedSuite; - runner.grepTotal = function (string) { + runner.grepTotal = function(string) { expectedString = string; return expectedTotal; }; TAP.call({}, runner); - var expectedArray = [ - '1..' + expectedTotal + '\n' - ]; + var expectedArray = ['1..' + expectedTotal + '\n']; process.stdout.write = stdoutWrite; expect(stdout).to.eql(expectedArray); @@ -50,45 +48,60 @@ describe('TAP reporter', function () { }); }); - describe('on pending', function () { - it('should write expected message including count and title', function () { - runner = createMockRunner('start test', 'test end', 'pending', null, test); + describe('on pending', function() { + it('should write expected message including count and title', function() { + runner = createMockRunner( + 'start test', + 'test end', + 'pending', + null, + test + ); runner.suite = ''; - runner.grepTotal = function () { }; + runner.grepTotal = function() {}; TAP.call({}, runner); process.stdout.write = stdoutWrite; - var expectedMessage = 'ok ' + countAfterTestEnd + ' ' + expectedTitle + ' # SKIP -\n'; + var expectedMessage = + 'ok ' + countAfterTestEnd + ' ' + expectedTitle + ' # SKIP -\n'; expect(stdout[0]).to.eql(expectedMessage); }); }); - describe('on pass', function () { - it('should write expected message including count and title', function () { + describe('on pass', function() { + it('should write expected message including count and title', function() { runner = createMockRunner('start test', 'test end', 'pass', null, test); runner.suite = ''; - runner.grepTotal = function () { }; + runner.grepTotal = function() {}; TAP.call({}, runner); process.stdout.write = stdoutWrite; - var expectedMessage = 'ok ' + countAfterTestEnd + ' ' + expectedTitle + '\n'; + var expectedMessage = + 'ok ' + countAfterTestEnd + ' ' + expectedTitle + '\n'; expect(stdout[0]).to.eql(expectedMessage); }); }); - describe('on fail', function () { - describe('if there is an error stack', function () { - it('should write expected message and stack', function () { + describe('on fail', function() { + describe('if there is an error stack', function() { + it('should write expected message and stack', function() { var expectedStack = 'some stack'; var error = { stack: expectedStack }; - runner = createMockRunner('test end fail', 'test end', 'fail', null, test, error); + runner = createMockRunner( + 'test end fail', + 'test end', + 'fail', + null, + test, + error + ); runner.suite = ''; - runner.grepTotal = function () { }; + runner.grepTotal = function() {}; TAP.call({}, runner); process.stdout.write = stdoutWrite; @@ -100,10 +113,10 @@ describe('TAP reporter', function () { expect(stdout).to.eql(expectedArray); }); }); - describe('if there is no error stack', function () { - it('should write expected message only', function () { + describe('if there is no error stack', function() { + it('should write expected message only', function() { var error = {}; - runner.on = runner.once = function (event, callback) { + runner.on = runner.once = function(event, callback) { if (event === 'test end') { callback(); } @@ -112,7 +125,7 @@ describe('TAP reporter', function () { } }; runner.suite = ''; - runner.grepTotal = function () { }; + runner.grepTotal = function() {}; TAP.call({}, runner); process.stdout.write = stdoutWrite; @@ -125,13 +138,13 @@ describe('TAP reporter', function () { }); }); - describe('on end', function () { - it('should write total tests, passes and failures', function () { + describe('on end', function() { + it('should write total tests, passes and failures', function() { var numberOfPasses = 1; var numberOfFails = 1; runner = createMockRunner('fail end pass', 'fail', 'end', 'pass', test); runner.suite = ''; - runner.grepTotal = function () { }; + runner.grepTotal = function() {}; TAP.call({}, runner); process.stdout.write = stdoutWrite; diff --git a/test/reporters/xunit.spec.js b/test/reporters/xunit.spec.js index c0c066d60b..18a43cb882 100644 --- a/test/reporters/xunit.spec.js +++ b/test/reporters/xunit.spec.js @@ -7,7 +7,7 @@ var assert = require('assert'); var reporters = require('../../').reporters; var XUnit = reporters.XUnit; -describe('XUnit reporter', function () { +describe('XUnit reporter', function() { var stdout; var stdoutWrite; var runner; @@ -21,37 +21,45 @@ describe('XUnit reporter', function () { var expectedStack = 'some-stack'; var expectedWrite = null; - beforeEach(function () { + beforeEach(function() { stdout = []; - runner = {on: function () {}, once: function () {}}; + runner = {on: function() {}, once: function() {}}; }); - describe('if reporter options output is given', function () { + describe('if reporter options output is given', function() { var expectedOutput = 'some-output'; var options = { reporterOptions: { output: expectedOutput } }; - describe('but it cant create a write stream', function () { - it('should throw expected error', function () { + describe('but it cant create a write stream', function() { + it('should throw expected error', function() { var fsCreateWriteStream = fs.createWriteStream; fs.createWriteStream = false; var boundXUnit = XUnit.bind({}, runner, options); - expect(boundXUnit).to.throwException('file output not supported in browser'); + expect(boundXUnit).to.throwException( + 'file output not supported in browser' + ); fs.createWriteStream = fsCreateWriteStream; }); }); - describe('and it can create a write stream', function () { - it('should locate the output dir, create it, then assign as fileStream', function () { + describe('and it can create a write stream', function() { + it('should locate the output dir, create it, then assign as fileStream', function() { var expectedDirectory; var mkdirpSync = mkdirp.sync; var pathDirname = path.dirname; var fsCreateWriteStream = fs.createWriteStream; - mkdirp.sync = function (directory) { expectedDirectory = directory; }; - path.dirname = function (location) { return location; }; - fs.createWriteStream = function (streamDetails) { return streamDetails; }; + mkdirp.sync = function(directory) { + expectedDirectory = directory; + }; + path.dirname = function(location) { + return location; + }; + fs.createWriteStream = function(streamDetails) { + return streamDetails; + }; var contextVariables = { fileStream: null @@ -68,21 +76,21 @@ describe('XUnit reporter', function () { }); }); - describe('on \'pending\', \'pass\' and \'fail\' events', function () { - it('should add test to tests called on \'end\' event', function () { + describe("on 'pending', 'pass' and 'fail' events", function() { + it("should add test to tests called on 'end' event", function() { var pendingTest = { name: 'pending', - slow: function () {} + slow: function() {} }; var failTest = { name: 'fail', - slow: function () {} + slow: function() {} }; var passTest = { name: 'pass', - slow: function () {} + slow: function() {} }; - runner.on = runner.once = function (event, callback) { + runner.on = runner.once = function(event, callback) { if (event === 'pending') { callback(pendingTest); } @@ -98,112 +106,94 @@ describe('XUnit reporter', function () { }; var calledTests = []; - XUnit.call({ - write: function () {}, - test: function (test) { - calledTests.push(test); - } - }, runner); + XUnit.call( + { + write: function() {}, + test: function(test) { + calledTests.push(test); + } + }, + runner + ); - var expectedCalledTests = [ - pendingTest, - passTest, - failTest - ]; + var expectedCalledTests = [pendingTest, passTest, failTest]; expect(calledTests).to.eql(expectedCalledTests); }); }); - describe('done', function () { - describe('if fileStream is truthly', function () { - it('should run callback with failure inside streams end', function () { - var xunit = new XUnit({on: function () {}, once: function () {}}); - var callback = function (failures) { + describe('done', function() { + describe('if fileStream is truthly', function() { + it('should run callback with failure inside streams end', function() { + var xunit = new XUnit({on: function() {}, once: function() {}}); + var callback = function(failures) { callbackArgument = failures; }; var calledEnd = false; var fileStream = { - end: function (callback) { + end: function(callback) { calledEnd = true; callback(); } }; - xunit.done.call( - { fileStream: fileStream }, - expectedFailure, - callback - ); + xunit.done.call({fileStream: fileStream}, expectedFailure, callback); expect(calledEnd).to.be(true); expect(callbackArgument).to.equal(expectedFailure); }); }); - describe('if fileStream is falsy', function () { - it('should run callback with failure', function () { - var xunit = new XUnit({on: function () {}, once: function () {}}); - var callback = function (failures) { + describe('if fileStream is falsy', function() { + it('should run callback with failure', function() { + var xunit = new XUnit({on: function() {}, once: function() {}}); + var callback = function(failures) { callbackArgument = failures; }; - xunit.done.call( - { fileStream: false }, - expectedFailure, - callback - ); + xunit.done.call({fileStream: false}, expectedFailure, callback); expect(callbackArgument).to.equal(expectedFailure); }); }); }); - describe('write', function () { - describe('if fileStream is truthly', function () { - it('should call fileStream write with line and new line', function () { - var xunit = new XUnit({on: function () {}, once: function () {}}); + describe('write', function() { + describe('if fileStream is truthly', function() { + it('should call fileStream write with line and new line', function() { + var xunit = new XUnit({on: function() {}, once: function() {}}); var fileStream = { - write: function (write) { + write: function(write) { expectedWrite = write; } }; - xunit.write.call( - { fileStream: fileStream }, - expectedLine - ); + xunit.write.call({fileStream: fileStream}, expectedLine); expect(expectedWrite).to.equal(expectedLine + '\n'); }); }); - describe('if fileStream is falsy and stdout exists', function () { - it('should call write with line and new line', function () { + describe('if fileStream is falsy and stdout exists', function() { + it('should call write with line and new line', function() { stdoutWrite = process.stdout.write; - process.stdout.write = function (string) { + process.stdout.write = function(string) { stdout.push(string); }; - var xunit = new XUnit({on: function () {}, once: function () {}}); - xunit.write.call( - { fileStream: false }, - expectedLine - ); + var xunit = new XUnit({on: function() {}, once: function() {}}); + xunit.write.call({fileStream: false}, expectedLine); process.stdout.write = stdoutWrite; expect(stdout[0]).to.equal(expectedLine + '\n'); }); }); - describe('if fileStream is falsy and stdout does not exist', function () { - it('should call write with line', function () { + describe('if fileStream is falsy and stdout does not exist', function() { + it('should call write with line', function() { stdoutWrite = process; process = false; // eslint-disable-line no-native-reassign, no-global-assign var cachedConsoleLog = console.log; - console.log = function (string) { + console.log = function(string) { stdout.push(string); }; - var xunit = new XUnit({on: function () {}, once: function () {}}); - xunit.write.call( - { fileStream: false }, - expectedLine - ); + var xunit = new XUnit({on: function() {}, once: function() {}}); + xunit.write.call({fileStream: false}, expectedLine); console.log = cachedConsoleLog; process = stdoutWrite; // eslint-disable-line no-native-reassign, no-global-assign @@ -212,15 +202,15 @@ describe('XUnit reporter', function () { }); }); - describe('test', function () { - describe('on test failure', function () { - it('should write expected tag with error details', function () { - var xunit = new XUnit({on: function () {}, once: function () {}}); + describe('test', function() { + describe('on test failure', function() { + it('should write expected tag with error details', function() { + var xunit = new XUnit({on: function() {}, once: function() {}}); var expectedTest = { state: 'failed', title: expectedTitle, parent: { - fullTitle: function () { + fullTitle: function() { return expectedClassName; } }, @@ -232,27 +222,38 @@ describe('XUnit reporter', function () { }; xunit.test.call( { - write: function (string) { + write: function(string) { expectedWrite = string; } }, expectedTest ); - var expectedTag = '' + expectedMessage + '\n' + expectedStack + ''; + var expectedTag = + '' + + expectedMessage + + '\n' + + expectedStack + + ''; expect(expectedWrite).to.equal(expectedTag); }); }); - describe('on test pending', function () { - it('should write expected tag', function () { - var xunit = new XUnit({on: function () {}, once: function () {}}); + describe('on test pending', function() { + it('should write expected tag', function() { + var xunit = new XUnit({on: function() {}, once: function() {}}); var expectedTest = { - isPending: function () { return true; }, + isPending: function() { + return true; + }, title: expectedTitle, parent: { - fullTitle: function () { + fullTitle: function() { return expectedClassName; } }, @@ -260,27 +261,34 @@ describe('XUnit reporter', function () { }; xunit.test.call( { - write: function (string) { + write: function(string) { expectedWrite = string; } }, expectedTest ); - var expectedTag = ''; + var expectedTag = + ''; expect(expectedWrite).to.equal(expectedTag); }); }); - describe('on test in any other state', function () { - it('should write expected tag', function () { - var xunit = new XUnit({on: function () {}, once: function () {}}); + describe('on test in any other state', function() { + it('should write expected tag', function() { + var xunit = new XUnit({on: function() {}, once: function() {}}); var expectedTest = { - isPending: function () { return false; }, + isPending: function() { + return false; + }, title: expectedTitle, parent: { - fullTitle: function () { + fullTitle: function() { return expectedClassName; } }, @@ -288,21 +296,26 @@ describe('XUnit reporter', function () { }; xunit.test.call( { - write: function (string) { + write: function(string) { expectedWrite = string; } }, expectedTest ); - var expectedTag = ''; + var expectedTag = + ''; expect(expectedWrite).to.equal(expectedTag); }); }); }); - describe('custom suite name', function () { + describe('custom suite name', function() { // capture the events that the reporter subscribes to var events; // the runner parameter of the reporter @@ -312,11 +325,11 @@ describe('XUnit reporter', function () { // the file stream into which the xunit reporter will write into var fileStream; - beforeEach(function () { + beforeEach(function() { events = {}; runner = { - on: function (eventName, eventHandler) { + on: function(eventName, eventHandler) { // capture the event handler events[eventName] = eventHandler; } @@ -325,14 +338,14 @@ describe('XUnit reporter', function () { lines = []; fileStream = { - write: function (line) { + write: function(line) { // capture the output lines lines.push(line); } }; }); - it('should use "Mocha Tests" as the suite name if no custom name is provided', function () { + it('should use "Mocha Tests" as the suite name if no custom name is provided', function() { // arrange var xunit = new XUnit(runner); xunit.fileStream = fileStream; @@ -341,10 +354,13 @@ describe('XUnit reporter', function () { events['end'](); // assert - assert(lines[0].indexOf('Mocha Tests') >= 0, 'it should contain the text "Mocha Tests"'); + assert( + lines[0].indexOf('Mocha Tests') >= 0, + 'it should contain the text "Mocha Tests"' + ); }); - it('should use the custom suite name as the suite name when provided in the reporter options', function () { + it('should use the custom suite name as the suite name when provided in the reporter options', function() { // arrange var options = { reporterOptions: { @@ -360,7 +376,10 @@ describe('XUnit reporter', function () { events['end'](); // assert - assert(lines[0].indexOf('2^31', function () { - it('should set disabled', function () { + describe('#timeout(ms) when ms>2^31', function() { + it('should set disabled', function() { var run = new Runnable(); run.timeout(1e10); expect(run.enableTimeouts()).to.equal(false); }); }); - describe('#enableTimeouts(enabled)', function () { - it('should set enabled', function () { + describe('#enableTimeouts(enabled)', function() { + it('should set enabled', function() { var run = new Runnable(); run.enableTimeouts(false); expect(run.enableTimeouts()).to.equal(false); }); }); - describe('#slow(ms)', function () { + describe('#slow(ms)', function() { var run; - beforeEach(function () { + beforeEach(function() { run = new Runnable(); }); - it('should set the slow threshold', function () { + it('should set the slow threshold', function() { run.slow(100); expect(run.slow()).to.equal(100); }); - it('should not set the slow threshold if the parameter is not passed', function () { + it('should not set the slow threshold if the parameter is not passed', function() { run.slow(); expect(run.slow()).to.equal(75); }); - it('should not set the slow threshold if the parameter is undefined', function () { + it('should not set the slow threshold if the parameter is undefined', function() { run.slow(undefined); expect(run.slow()).to.equal(75); }); }); - describe('.title', function () { - it('should be present', function () { + describe('.title', function() { + it('should be present', function() { expect(new Runnable('foo').title).to.equal('foo'); }); }); - describe('.titlePath()', function () { - it('returns the concatenation of the parent\'s title path and runnable\'s title', function () { + describe('.titlePath()', function() { + it("returns the concatenation of the parent's title path and runnable's title", function() { var runnable = new Runnable('bar'); runnable.parent = new Suite('foo'); expect(runnable.titlePath()).to.eql(['foo', 'bar']); }); }); - describe('when arity >= 1', function () { - it('should be .async', function () { - var run = new Runnable('foo', function (done) {}); + describe('when arity >= 1', function() { + it('should be .async', function() { + var run = new Runnable('foo', function(done) {}); expect(run.async).to.equal(1); expect(run.sync).to.be(false); }); }); - describe('when arity == 0', function () { - it('should be .sync', function () { - var run = new Runnable('foo', function () {}); + describe('when arity == 0', function() { + it('should be .sync', function() { + var run = new Runnable('foo', function() {}); expect(run.async).to.be.equal(0); expect(run.sync).to.be(true); }); }); - describe('#globals', function () { - it('should allow for whitelisting globals', function (done) { - var test = new Runnable('foo', function () {}); + describe('#globals', function() { + it('should allow for whitelisting globals', function(done) { + var test = new Runnable('foo', function() {}); expect(test.async).to.be.equal(0); expect(test.sync).to.be(true); test.globals(['foobar']); @@ -122,18 +119,18 @@ describe('Runnable(title, fn)', function () { }); }); - describe('#retries(n)', function () { - it('should set the number of retries', function () { + describe('#retries(n)', function() { + it('should set the number of retries', function() { var run = new Runnable(); run.retries(1); expect(run.retries()).to.equal(1); }); }); - describe('.run(fn)', function () { - describe('when .pending', function () { - it('should not invoke the callback', function (done) { - var test = new Runnable('foo', function () { + describe('.run(fn)', function() { + describe('when .pending', function() { + it('should not invoke the callback', function(done) { + var test = new Runnable('foo', function() { throw new Error('should not be called'); }); @@ -142,28 +139,23 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when sync', function () { - describe('without error', function () { - it('should invoke the callback', function (done) { + describe('when sync', function() { + describe('without error', function() { + it('should invoke the callback', function(done) { var calls = 0; - var test = new Runnable('foo', function () { + var test = new Runnable('foo', function() { ++calls; }); - test.run(function (err) { + test.run(function(err) { if (err) { done(err); return; } try { - expect(calls) - .to - .equal(1); - expect(test.duration) - .to - .be - .a('number'); + expect(calls).to.equal(1); + expect(test.duration).to.be.a('number'); } catch (err) { done(err); return; @@ -173,15 +165,15 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when an exception is thrown', function () { - it('should invoke the callback', function (done) { + describe('when an exception is thrown', function() { + it('should invoke the callback', function(done) { var calls = 0; - var test = new Runnable('foo', function () { + var test = new Runnable('foo', function() { ++calls; throw new Error('fail'); }); - test.run(function (err) { + test.run(function(err) { expect(calls).to.equal(1); expect(err.message).to.equal('fail'); done(); @@ -189,14 +181,14 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when an exception is thrown and is allowed to remain uncaught', function () { - it('throws an error when it is allowed', function (done) { - var test = new Runnable('foo', function () { + describe('when an exception is thrown and is allowed to remain uncaught', function() { + it('throws an error when it is allowed', function(done) { + var test = new Runnable('foo', function() { throw new Error('fail'); }); test.allowUncaught = true; - function fail () { - test.run(function () {}); + function fail() { + test.run(function() {}); } expect(fail).to.throwError('fail'); done(); @@ -204,10 +196,10 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when timeouts are disabled', function () { - it('should not error with timeout', function (done) { - var test = new Runnable('foo', function (done) { - setTimeout(function () { + describe('when timeouts are disabled', function() { + it('should not error with timeout', function(done) { + var test = new Runnable('foo', function(done) { + setTimeout(function() { setTimeout(done); }, 2); }); @@ -217,10 +209,10 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when async', function () { - describe('without error', function () { - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function (done) { + describe('when async', function() { + describe('without error', function() { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function(done) { setTimeout(done); }); @@ -228,20 +220,20 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when the callback is invoked several times', function () { - describe('without an error', function () { - it('should emit a single "error" event', function (done) { + describe('when the callback is invoked several times', function() { + describe('without an error', function() { + it('should emit a single "error" event', function(done) { var calls = 0; var errCalls = 0; - var test = new Runnable('foo', function (done) { + var test = new Runnable('foo', function(done) { process.nextTick(done); setTimeout(done); setTimeout(done); setTimeout(done); }); - test.on('error', function (err) { + test.on('error', function(err) { ++errCalls; expect(err.message).to.equal('done() called multiple times'); expect(calls).to.equal(1); @@ -249,18 +241,18 @@ describe('Runnable(title, fn)', function () { done(); }); - test.run(function () { + test.run(function() { ++calls; }); }); }); - describe('with an error', function () { - it('should emit a single "error" event', function (done) { + describe('with an error', function() { + it('should emit a single "error" event', function(done) { var calls = 0; var errCalls = 0; - var test = new Runnable('foo', function (done) { + var test = new Runnable('foo', function(done) { done(new Error('fail')); setTimeout(done); done(new Error('fail')); @@ -268,111 +260,116 @@ describe('Runnable(title, fn)', function () { setTimeout(done); }); - test.on('error', function (err) { + test.on('error', function(err) { ++errCalls; expect(err.message).to.equal( - "fail (and Mocha's done() called multiple times)"); + "fail (and Mocha's done() called multiple times)" + ); expect(calls).to.equal(1); expect(errCalls).to.equal(1); done(); }); - test.run(function () { + test.run(function() { ++calls; }); }); }); }); - describe('when an exception is thrown', function () { - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function (done) { + describe('when an exception is thrown', function() { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function(done) { throw new Error('fail'); }); - test.run(function (err) { + test.run(function(err) { expect(err.message).to.equal('fail'); done(); }); }); - it('should not throw its own exception if passed a non-object', function (done) { - var test = new Runnable('foo', function (done) { + it('should not throw its own exception if passed a non-object', function(done) { + var test = new Runnable('foo', function(done) { /* eslint no-throw-literal: off */ throw null; }); - test.run(function (err) { + test.run(function(err) { expect(err.message).to.equal(utils.undefinedError().message); done(); }); }); }); - describe('when an exception is thrown and is allowed to remain uncaught', function () { - it('throws an error when it is allowed', function (done) { - var test = new Runnable('foo', function (done) { + describe('when an exception is thrown and is allowed to remain uncaught', function() { + it('throws an error when it is allowed', function(done) { + var test = new Runnable('foo', function(done) { throw new Error('fail'); }); test.allowUncaught = true; - function fail () { - test.run(function () {}); + function fail() { + test.run(function() {}); } expect(fail).to.throwError('fail'); done(); }); }); - describe('when an error is passed', function () { - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function (done) { + describe('when an error is passed', function() { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function(done) { done(new Error('fail')); }); - test.run(function (err) { + test.run(function(err) { expect(err.message).to.equal('fail'); done(); }); }); }); - describe('when done() is invoked with a non-Error object', function () { - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function (done) { - done({ error: 'Test error' }); + describe('when done() is invoked with a non-Error object', function() { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function(done) { + done({error: 'Test error'}); }); - test.run(function (err) { - expect(err.message).to.equal('done() invoked with non-Error: {"error":"Test error"}'); + test.run(function(err) { + expect(err.message).to.equal( + 'done() invoked with non-Error: {"error":"Test error"}' + ); done(); }); }); }); - describe('when done() is invoked with a string', function () { - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function (done) { + describe('when done() is invoked with a string', function() { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function(done) { done('Test error'); }); - test.run(function (err) { - expect(err.message).to.equal('done() invoked with non-Error: Test error'); + test.run(function(err) { + expect(err.message).to.equal( + 'done() invoked with non-Error: Test error' + ); done(); }); }); }); - it('should allow updating the timeout', function (done) { + it('should allow updating the timeout', function(done) { var callCount = 0; - var increment = function () { + var increment = function() { callCount++; }; - var test = new Runnable('foo', function (done) { + var test = new Runnable('foo', function(done) { setTimeout(increment, 1); setTimeout(increment, 100); }); test.timeout(50); - test.run(function (err) { + test.run(function(err) { expect(err).to.be.ok(); expect(callCount).to.equal(1); done(); @@ -382,16 +379,16 @@ describe('Runnable(title, fn)', function () { it('should allow a timeout of 0'); }); - describe('when fn returns a promise', function () { - describe('when the promise is fulfilled with no value', function () { + describe('when fn returns a promise', function() { + describe('when the promise is fulfilled with no value', function() { var fulfilledPromise = { - then: function (fulfilled, rejected) { + then: function(fulfilled, rejected) { setTimeout(fulfilled); } }; - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function () { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function() { return fulfilledPromise; }); @@ -399,17 +396,17 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when the promise is fulfilled with a value', function () { + describe('when the promise is fulfilled with a value', function() { var fulfilledPromise = { - then: function (fulfilled, rejected) { - setTimeout(function () { + then: function(fulfilled, rejected) { + setTimeout(function() { fulfilled({}); }); } }; - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function () { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function() { return fulfilledPromise; }); @@ -417,74 +414,76 @@ describe('Runnable(title, fn)', function () { }); }); - describe('when the promise is rejected', function () { + describe('when the promise is rejected', function() { var expectedErr = new Error('fail'); var rejectedPromise = { - then: function (fulfilled, rejected) { - setTimeout(function () { + then: function(fulfilled, rejected) { + setTimeout(function() { rejected(expectedErr); }); } }; - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function () { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function() { return rejectedPromise; }); - test.run(function (err) { + test.run(function(err) { expect(err).to.equal(expectedErr); done(); }); }); }); - describe('when the promise is rejected without a reason', function () { + describe('when the promise is rejected without a reason', function() { var expectedErr = new Error('Promise rejected with no or falsy reason'); var rejectedPromise = { - then: function (fulfilled, rejected) { - setTimeout(function () { + then: function(fulfilled, rejected) { + setTimeout(function() { rejected(); }); } }; - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function () { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function() { return rejectedPromise; }); - test.run(function (err) { + test.run(function(err) { expect(err.message).to.equal(expectedErr.message); done(); }); }); }); - describe('when the promise takes too long to settle', function () { + describe('when the promise takes too long to settle', function() { var foreverPendingPromise = { - then: function () { } + then: function() {} }; - it('should throw the timeout error', function (done) { - var test = new Runnable('foo', function () { + it('should throw the timeout error', function(done) { + var test = new Runnable('foo', function() { return foreverPendingPromise; }); test.file = '/some/path'; test.timeout(10); - test.run(function (err) { - expect(err.message).to.match(/Timeout of 10ms exceeded.*\(\/some\/path\)$/); + test.run(function(err) { + expect(err.message).to.match( + /Timeout of 10ms exceeded.*\(\/some\/path\)$/ + ); done(); }); }); }); }); - describe('when fn returns a non-promise', function () { - it('should invoke the callback', function (done) { - var test = new Runnable('foo', function () { - return { then: 'i ran my tests' }; + describe('when fn returns a non-promise', function() { + it('should invoke the callback', function(done) { + var test = new Runnable('foo', function() { + return {then: 'i ran my tests'}; }); test.run(done); @@ -492,34 +491,31 @@ describe('Runnable(title, fn)', function () { }); }); - describe('#isFailed()', function () { - it('should return `true` if test has not failed', function () { - var test = new Runnable('foo', function () { - }); + describe('#isFailed()', function() { + it('should return `true` if test has not failed', function() { + var test = new Runnable('foo', function() {}); // runner sets the state - test.run(function () { + test.run(function() { expect(test.isFailed()).not.to.be.ok(); }); }); - it('should return `true` if test has failed', function () { - var test = new Runnable('foo', function () { - }); + it('should return `true` if test has failed', function() { + var test = new Runnable('foo', function() {}); // runner sets the state test.state = 'failed'; - test.run(function () { + test.run(function() { expect(test.isFailed()).to.be.ok(); }); }); - it('should return `false` if test is pending', function () { - var test = new Runnable('foo', function () { - }); + it('should return `false` if test is pending', function() { + var test = new Runnable('foo', function() {}); // runner sets the state - test.isPending = function () { + test.isPending = function() { return true; }; - test.run(function () { + test.run(function() { expect(test.isFailed()).not.to.be.ok(); }); }); diff --git a/test/unit/runner.spec.js b/test/unit/runner.spec.js index 718a9b7cf6..b319351044 100644 --- a/test/unit/runner.spec.js +++ b/test/unit/runner.spec.js @@ -8,17 +8,17 @@ var Hook = mocha.Hook; var path = require('path'); var noop = mocha.utils.noop; -describe('Runner', function () { +describe('Runner', function() { var suite; var runner; - beforeEach(function () { + beforeEach(function() { suite = new Suite('Suite', 'root'); runner = new Runner(suite); }); - describe('.grep()', function () { - it('should update the runner.total with number of matched tests', function () { + describe('.grep()', function() { + it('should update the runner.total with number of matched tests', function() { suite.addTest(new Test('im a test about lions', noop)); suite.addTest(new Test('im another test about lions', noop)); suite.addTest(new Test('im a test about bears', noop)); @@ -27,7 +27,7 @@ describe('Runner', function () { expect(newRunner.total).to.equal(2); }); - it('should update the runner.total with number of matched tests when inverted', function () { + it('should update the runner.total with number of matched tests when inverted', function() { suite.addTest(new Test('im a test about lions', noop)); suite.addTest(new Test('im another test about lions', noop)); suite.addTest(new Test('im a test about bears', noop)); @@ -37,8 +37,8 @@ describe('Runner', function () { }); }); - describe('.grepTotal()', function () { - it('should return the total number of matched tests', function () { + describe('.grepTotal()', function() { + it('should return the total number of matched tests', function() { suite.addTest(new Test('im a test about lions', noop)); suite.addTest(new Test('im another test about lions', noop)); suite.addTest(new Test('im a test about bears', noop)); @@ -46,7 +46,7 @@ describe('Runner', function () { expect(runner.grepTotal(suite)).to.equal(2); }); - it('should return the total number of matched tests when inverted', function () { + it('should return the total number of matched tests when inverted', function() { suite.addTest(new Test('im a test about lions', noop)); suite.addTest(new Test('im another test about lions', noop)); suite.addTest(new Test('im a test about bears', noop)); @@ -55,8 +55,8 @@ describe('Runner', function () { }); }); - describe('.globalProps()', function () { - it('should include common non enumerable globals', function () { + describe('.globalProps()', function() { + it('should include common non enumerable globals', function() { var props = runner.globalProps(); expect(props).to.contain('setTimeout'); expect(props).to.contain('clearTimeout'); @@ -67,26 +67,26 @@ describe('Runner', function () { }); }); - describe('.globals()', function () { - it('should default to the known globals', function () { + describe('.globals()', function() { + it('should default to the known globals', function() { expect(runner.globals().length).to.be.above(16); }); - it('should white-list globals', function () { + it('should white-list globals', function() { runner.globals(['foo', 'bar']); expect(runner.globals()).to.contain('foo'); expect(runner.globals()).to.contain('bar'); }); }); - describe('.checkGlobals(test)', function () { - before(function () { + describe('.checkGlobals(test)', function() { + before(function() { if (!Object.create) { this.skip(); } }); - it('should allow variables that match a wildcard', function (done) { + it('should allow variables that match a wildcard', function(done) { runner.globals(['foo*', 'giz*']); global.foo = 'baz'; global.gizmo = 'quux'; @@ -96,11 +96,11 @@ describe('Runner', function () { done(); }); - it('should emit "fail" when a new global is introduced', function (done) { + it('should emit "fail" when a new global is introduced', function(done) { var test = new Test('im a test', noop); runner.checkGlobals(); global.foo = 'bar'; - runner.on('fail', function (_test, err) { + runner.on('fail', function(_test, err) { expect(_test).to.equal(test); expect(err.message).to.equal('global leak detected: foo'); delete global.foo; @@ -109,11 +109,11 @@ describe('Runner', function () { runner.checkGlobals(test); }); - it('should emit "fail" when a single new disallowed global is introduced after a single extra global is allowed', function (done) { + it('should emit "fail" when a single new disallowed global is introduced after a single extra global is allowed', function(done) { var doneCalled = false; runner.globals('good'); global.bad = 1; - runner.on('fail', function () { + runner.on('fail', function() { delete global.bad; done(); doneCalled = true; @@ -124,7 +124,7 @@ describe('Runner', function () { } }); - it('should not fail when a new common global is introduced', function () { + it('should not fail when a new common global is introduced', function() { if (process.browser) { this.skip(); return; @@ -138,7 +138,7 @@ describe('Runner', function () { var newRunner = new Runner(suite); // make the prop enumerable again. - global.XMLHttpRequest = function () {}; + global.XMLHttpRequest = function() {}; expect(global.propertyIsEnumerable('XMLHttpRequest')).to.be.ok(); // verify the test hasn't failed. @@ -149,12 +149,12 @@ describe('Runner', function () { delete global.XMLHttpRequest; }); - it('should pluralize the error message when several are introduced', function (done) { + it('should pluralize the error message when several are introduced', function(done) { var test = new Test('im a test', noop); runner.checkGlobals(); global.foo = 'bar'; global.bar = 'baz'; - runner.on('fail', function (_test, err) { + runner.on('fail', function(_test, err) { expect(_test).to.equal(test); expect(err.message).to.equal('global leaks detected: foo, bar'); delete global.foo; @@ -164,7 +164,7 @@ describe('Runner', function () { runner.checkGlobals(test); }); - it('should respect per test whitelisted globals', function () { + it('should respect per test whitelisted globals', function() { var test = new Test('im a test about lions', noop); test.globals(['foo']); @@ -180,7 +180,7 @@ describe('Runner', function () { delete global.foo; }); - it('should respect per test whitelisted globals but still detect other leaks', function (done) { + it('should respect per test whitelisted globals but still detect other leaks', function(done) { var test = new Test('im a test about lions', noop); test.globals(['foo']); @@ -188,7 +188,7 @@ describe('Runner', function () { global.foo = 'bar'; global.bar = 'baz'; - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { expect(test.title).to.equal('im a test about lions'); expect(err.message).to.equal('global leak detected: bar'); delete global.foo; @@ -197,32 +197,32 @@ describe('Runner', function () { runner.checkGlobals(test); }); - it('should emit "fail" when a global beginning with d is introduced', function (done) { + it('should emit "fail" when a global beginning with d is introduced', function(done) { global.derp = 'bar'; - runner.on('fail', function () { + runner.on('fail', function() { delete global.derp; done(); }); - runner.checkGlobals(new Test('herp', function () {})); + runner.checkGlobals(new Test('herp', function() {})); }); }); - describe('.hook(name, fn)', function () { - it('should execute hooks after failed test if suite bail is true', function (done) { + describe('.hook(name, fn)', function() { + it('should execute hooks after failed test if suite bail is true', function(done) { runner.fail(new Test('failed test', noop)); suite.bail(true); - suite.afterEach(function () { - suite.afterAll(function () { + suite.afterEach(function() { + suite.afterAll(function() { done(); }); }); - runner.hook('afterEach', function () {}); - runner.hook('afterAll', function () {}); + runner.hook('afterEach', function() {}); + runner.hook('afterAll', function() {}); }); }); - describe('.fail(test, err)', function () { - it('should increment .failures', function () { + describe('.fail(test, err)', function() { + it('should increment .failures', function() { expect(runner.failures).to.equal(0); runner.fail(new Test('one', noop), {}); expect(runner.failures).to.equal(1); @@ -230,16 +230,16 @@ describe('Runner', function () { expect(runner.failures).to.equal(2); }); - it('should set test.state to "failed"', function () { + it('should set test.state to "failed"', function() { var test = new Test('some test', noop); runner.fail(test, 'some error'); expect(test.state).to.equal('failed'); }); - it('should emit "fail"', function (done) { + it('should emit "fail"', function(done) { var test = new Test('some other test', noop); var err = {}; - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { expect(test).to.equal(test); expect(err).to.equal(err); done(); @@ -247,60 +247,63 @@ describe('Runner', function () { runner.fail(test, err); }); - it('should emit a helpful message when failed with a string', function (done) { + it('should emit a helpful message when failed with a string', function(done) { var test = new Test('helpful test', noop); var err = 'string'; - runner.on('fail', function (test, err) { - expect(err.message).to.equal('the string "string" was thrown, throw an Error :)'); + runner.on('fail', function(test, err) { + expect(err.message).to.equal( + 'the string "string" was thrown, throw an Error :)' + ); done(); }); runner.fail(test, err); }); - it('should emit a the error when failed with an Error instance', function (done) { + it('should emit a the error when failed with an Error instance', function(done) { var test = new Test('a test', noop); var err = new Error('an error message'); - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { expect(err.message).to.equal('an error message'); done(); }); runner.fail(test, err); }); - it('should emit the error when failed with an Error-like object', function (done) { + it('should emit the error when failed with an Error-like object', function(done) { var test = new Test('a test', noop); - var err = { message: 'an error message' }; - runner.on('fail', function (test, err) { + var err = {message: 'an error message'}; + runner.on('fail', function(test, err) { expect(err.message).to.equal('an error message'); done(); }); runner.fail(test, err); }); - it('should emit a helpful message when failed with an Object', function (done) { + it('should emit a helpful message when failed with an Object', function(done) { var test = new Test('a test', noop); - var err = { x: 1 }; - runner.on('fail', function (test, err) { - expect(err.message).to.equal('the object {\n "x": 1\n} was thrown, throw an Error :)'); + var err = {x: 1}; + runner.on('fail', function(test, err) { + expect(err.message).to.equal( + 'the object {\n "x": 1\n} was thrown, throw an Error :)' + ); done(); }); runner.fail(test, err); }); - it('should emit a helpful message when failed with an Array', function (done) { + it('should emit a helpful message when failed with an Array', function(done) { var test = new Test('a test', noop); - var err = [ - 1, - 2 - ]; - runner.on('fail', function (test, err) { - expect(err.message).to.equal('the array [\n 1\n 2\n] was thrown, throw an Error :)'); + var err = [1, 2]; + runner.on('fail', function(test, err) { + expect(err.message).to.equal( + 'the array [\n 1\n 2\n] was thrown, throw an Error :)' + ); done(); }); runner.fail(test, err); }); - it('should recover if the error stack is not writable', function (done) { + it('should recover if the error stack is not writable', function(done) { if (!Object.create) { this.skip(); return; @@ -312,7 +315,7 @@ describe('Runner', function () { }); var test = new Test('a test', noop); - runner.on('fail', function (test, err) { + runner.on('fail', function(test, err) { expect(err.message).to.equal('not evil'); done(); }); @@ -321,8 +324,8 @@ describe('Runner', function () { }); }); - describe('.failHook(hook, err)', function () { - it('should increment .failures', function () { + describe('.failHook(hook, err)', function() { + it('should increment .failures', function() { expect(runner.failures).to.equal(0); runner.failHook(new Test('fail hook 1', noop), {}); expect(runner.failures).to.equal(1); @@ -330,9 +333,9 @@ describe('Runner', function () { expect(runner.failures).to.equal(2); }); - it('should augment hook title with current test title', function () { + it('should augment hook title with current test title', function() { var hook = new Hook('"before each" hook'); - hook.ctx = { currentTest: new Test('should behave', noop) }; + hook.ctx = {currentTest: new Test('should behave', noop)}; runner.failHook(hook, {}); expect(hook.title).to.equal('"before each" hook for "should behave"'); @@ -342,10 +345,10 @@ describe('Runner', function () { expect(hook.title).to.equal('"before each" hook for "should obey"'); }); - it('should emit "fail"', function (done) { + it('should emit "fail"', function(done) { var hook = new Hook(); var err = {}; - runner.on('fail', function (hook, err) { + runner.on('fail', function(hook, err) { expect(hook).to.equal(hook); expect(err).to.equal(err); done(); @@ -353,7 +356,7 @@ describe('Runner', function () { runner.failHook(hook, err); }); - it('should emit "end" if suite bail is true', function (done) { + it('should emit "end" if suite bail is true', function(done) { var hook = new Hook(); var err = {}; suite.bail(true); @@ -361,11 +364,11 @@ describe('Runner', function () { runner.failHook(hook, err); }); - it('should not emit "end" if suite bail is not true', function (done) { + it('should not emit "end" if suite bail is not true', function(done) { var hook = new Hook(); var err = {}; suite.bail(false); - runner.on('end', function () { + runner.on('end', function() { throw new Error('"end" was emit, but the bail is false'); }); runner.failHook(hook, err); @@ -373,14 +376,14 @@ describe('Runner', function () { }); }); - describe('allowUncaught', function () { - it('should allow unhandled errors to propagate through', function (done) { + describe('allowUncaught', function() { + it('should allow unhandled errors to propagate through', function(done) { var newRunner = new Runner(suite); newRunner.allowUncaught = true; - newRunner.test = new Test('failing test', function () { + newRunner.test = new Test('failing test', function() { throw new Error('allow unhandled errors'); }); - function fail () { + function fail() { newRunner.runTest(); } expect(fail).to.throwError('allow unhandled errors'); @@ -388,7 +391,7 @@ describe('Runner', function () { }); }); - describe('stackTrace', function () { + describe('stackTrace', function() { var stack = [ 'AssertionError: foo bar', 'at EventEmitter. (/usr/local/dev/test.js:16:12)', @@ -403,20 +406,20 @@ describe('Runner', function () { 'at processImmediate [as _immediateCallback] (timers.js:321:17)' ]; - describe('shortStackTrace', function () { - beforeEach(function () { + describe('shortStackTrace', function() { + beforeEach(function() { if (path.sep !== '/') { this.skip(); } }); - it('should prettify the stack-trace', function (done) { + it('should prettify the stack-trace', function(done) { var hook = new Hook(); var err = new Error(); // Fake stack-trace err.stack = stack.join('\n'); - runner.on('fail', function (hook, err) { + runner.on('fail', function(hook, err) { expect(err.stack).to.equal(stack.slice(0, 3).join('\n')); done(); }); @@ -424,14 +427,14 @@ describe('Runner', function () { }); }); - describe('longStackTrace', function () { - beforeEach(function () { + describe('longStackTrace', function() { + beforeEach(function() { if (path.sep !== '/') { this.skip(); } }); - it('should display the full stack-trace', function (done) { + it('should display the full stack-trace', function(done) { var hook = new Hook(); var err = new Error(); // Fake stack-trace @@ -439,7 +442,7 @@ describe('Runner', function () { // Add --stack-trace option runner.fullStackTrace = true; - runner.on('fail', function (hook, err) { + runner.on('fail', function(hook, err) { expect(err.stack).to.equal(stack.join('\n')); done(); }); diff --git a/test/unit/suite.spec.js b/test/unit/suite.spec.js index 3c3786efd1..251fb208ab 100644 --- a/test/unit/suite.spec.js +++ b/test/unit/suite.spec.js @@ -4,14 +4,14 @@ var mocha = require('../../lib/mocha'); var Suite = mocha.Suite; var Test = mocha.Test; -function supportsFunctionNames () { +function supportsFunctionNames() { // eslint-disable-next-line no-extra-parens - return (function foo () {}).name === 'foo'; + return function foo() {}.name === 'foo'; } -describe('Suite', function () { - describe('.clone()', function () { - beforeEach(function () { +describe('Suite', function() { + describe('.clone()', function() { + beforeEach(function() { this.suite = new Suite('To be cloned'); this.suite._timeout = 3043; this.suite._slow = 101; @@ -24,120 +24,120 @@ describe('Suite', function () { this.suite._afterAll.push(5); }); - it('should copy the title', function () { + it('should copy the title', function() { expect(this.suite.clone().title).to.equal('To be cloned'); }); - it('should copy the timeout value', function () { + it('should copy the timeout value', function() { expect(this.suite.clone().timeout()).to.equal(3043); }); - it('should copy the slow value', function () { + it('should copy the slow value', function() { expect(this.suite.clone().slow()).to.equal(101); }); - it('should copy the bail value', function () { + it('should copy the bail value', function() { expect(this.suite.clone().bail()).to.be(true); }); - it('should not copy the values from the suites array', function () { + it('should not copy the values from the suites array', function() { expect(this.suite.clone().suites).to.be.empty(); }); - it('should not copy the values from the tests array', function () { + it('should not copy the values from the tests array', function() { expect(this.suite.clone().tests).to.be.empty(); }); - it('should not copy the values from the _beforeEach array', function () { + it('should not copy the values from the _beforeEach array', function() { expect(this.suite.clone()._beforeEach).to.be.empty(); }); - it('should not copy the values from the _beforeAll array', function () { + it('should not copy the values from the _beforeAll array', function() { expect(this.suite.clone()._beforeAll).to.be.empty(); }); - it('should not copy the values from the _afterEach array', function () { + it('should not copy the values from the _afterEach array', function() { expect(this.suite.clone()._afterEach).to.be.empty(); }); - it('should not copy the values from the _afterAll array', function () { + it('should not copy the values from the _afterAll array', function() { expect(this.suite.clone()._afterAll).to.be.empty(); }); }); - describe('.timeout()', function () { - beforeEach(function () { + describe('.timeout()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('when no argument is passed', function () { - it('should return the timeout value', function () { + describe('when no argument is passed', function() { + it('should return the timeout value', function() { expect(this.suite.timeout()).to.equal(2000); }); }); - describe('when argument is passed', function () { - it('should return the Suite object', function () { + describe('when argument is passed', function() { + it('should return the Suite object', function() { var newSuite = this.suite.timeout(5000); expect(newSuite.timeout()).to.equal(5000); }); }); }); - describe('.slow()', function () { - beforeEach(function () { + describe('.slow()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('when given a string', function () { - it('should parse it', function () { + describe('when given a string', function() { + it('should parse it', function() { this.suite.slow('5 seconds'); expect(this.suite.slow()).to.equal(5000); }); }); - describe('when no argument is passed', function () { - it('should return the slow value', function () { + describe('when no argument is passed', function() { + it('should return the slow value', function() { expect(this.suite.slow()).to.equal(75); }); }); - describe('when argument is passed', function () { - it('should return the Suite object', function () { + describe('when argument is passed', function() { + it('should return the Suite object', function() { var newSuite = this.suite.slow(5000); expect(newSuite.slow()).to.equal(5000); }); }); }); - describe('.bail()', function () { - beforeEach(function () { + describe('.bail()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); this.suite._bail = true; }); - describe('when no argument is passed', function () { - it('should return the bail value', function () { + describe('when no argument is passed', function() { + it('should return the bail value', function() { expect(this.suite.bail()).to.be(true); }); }); - describe('when argument is passed', function () { - it('should return the Suite object', function () { + describe('when argument is passed', function() { + it('should return the Suite object', function() { var newSuite = this.suite.bail(false); expect(newSuite.bail()).to.be(false); }); }); }); - describe('.beforeAll()', function () { - beforeEach(function () { + describe('.beforeAll()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('wraps the passed in function in a Hook', function () { - it('adds it to _beforeAll', function () { - var fn = function () {}; + describe('wraps the passed in function in a Hook', function() { + it('adds it to _beforeAll', function() { + var fn = function() {}; this.suite.beforeAll(fn); expect(this.suite._beforeAll).to.have.length(1); @@ -146,30 +146,22 @@ describe('Suite', function () { expect(beforeAllItem.fn).to.equal(fn); }); - it('appends title to hook', function () { - var fn = function () { - }; + it('appends title to hook', function() { + var fn = function() {}; this.suite.beforeAll('test', fn); - expect(this.suite._beforeAll) - .to - .have - .length(1); + expect(this.suite._beforeAll).to.have.length(1); var beforeAllItem = this.suite._beforeAll[0]; - expect(beforeAllItem.title) - .to - .equal('"before all" hook: test'); - expect(beforeAllItem.fn) - .to - .equal(fn); + expect(beforeAllItem.title).to.equal('"before all" hook: test'); + expect(beforeAllItem.fn).to.equal(fn); }); - it('uses function name if available', function () { + it('uses function name if available', function() { if (!supportsFunctionNames()) { this.skip(); return; } - function namedFn () {} + function namedFn() {} this.suite.beforeAll(namedFn); var beforeAllItem = this.suite._beforeAll[0]; expect(beforeAllItem.title).to.equal('"before all" hook: namedFn'); @@ -178,14 +170,14 @@ describe('Suite', function () { }); }); - describe('.afterAll()', function () { - beforeEach(function () { + describe('.afterAll()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('wraps the passed in function in a Hook', function () { - it('adds it to _afterAll', function () { - var fn = function () {}; + describe('wraps the passed in function in a Hook', function() { + it('adds it to _afterAll', function() { + var fn = function() {}; this.suite.afterAll(fn); expect(this.suite._afterAll).to.have.length(1); @@ -193,30 +185,22 @@ describe('Suite', function () { expect(afterAllItem.title).to.match(/^"after all" hook/); expect(afterAllItem.fn).to.equal(fn); }); - it('appends title to hook', function () { - var fn = function () { - }; + it('appends title to hook', function() { + var fn = function() {}; this.suite.afterAll('test', fn); - expect(this.suite._afterAll) - .to - .have - .length(1); + expect(this.suite._afterAll).to.have.length(1); var beforeAllItem = this.suite._afterAll[0]; - expect(beforeAllItem.title) - .to - .equal('"after all" hook: test'); - expect(beforeAllItem.fn) - .to - .equal(fn); + expect(beforeAllItem.title).to.equal('"after all" hook: test'); + expect(beforeAllItem.fn).to.equal(fn); }); - it('uses function name if available', function () { + it('uses function name if available', function() { if (!supportsFunctionNames()) { this.skip(); return; } - function namedFn () {} + function namedFn() {} this.suite.afterAll(namedFn); var afterAllItem = this.suite._afterAll[0]; expect(afterAllItem.title).to.equal('"after all" hook: namedFn'); @@ -225,14 +209,14 @@ describe('Suite', function () { }); }); - describe('.beforeEach()', function () { - beforeEach(function () { + describe('.beforeEach()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('wraps the passed in function in a Hook', function () { - it('adds it to _beforeEach', function () { - var fn = function () {}; + describe('wraps the passed in function in a Hook', function() { + it('adds it to _beforeEach', function() { + var fn = function() {}; this.suite.beforeEach(fn); expect(this.suite._beforeEach).to.have.length(1); @@ -241,30 +225,22 @@ describe('Suite', function () { expect(beforeEachItem.fn).to.equal(fn); }); - it('appends title to hook', function () { - var fn = function () { - }; + it('appends title to hook', function() { + var fn = function() {}; this.suite.beforeEach('test', fn); - expect(this.suite._beforeEach) - .to - .have - .length(1); + expect(this.suite._beforeEach).to.have.length(1); var beforeAllItem = this.suite._beforeEach[0]; - expect(beforeAllItem.title) - .to - .equal('"before each" hook: test'); - expect(beforeAllItem.fn) - .to - .equal(fn); + expect(beforeAllItem.title).to.equal('"before each" hook: test'); + expect(beforeAllItem.fn).to.equal(fn); }); - it('uses function name if available', function () { + it('uses function name if available', function() { if (!supportsFunctionNames()) { this.skip(); return; } - function namedFn () {} + function namedFn() {} this.suite.beforeEach(namedFn); var beforeEachItem = this.suite._beforeEach[0]; expect(beforeEachItem.title).to.equal('"before each" hook: namedFn'); @@ -273,14 +249,14 @@ describe('Suite', function () { }); }); - describe('.afterEach()', function () { - beforeEach(function () { + describe('.afterEach()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('wraps the passed in function in a Hook', function () { - it('adds it to _afterEach', function () { - var fn = function () {}; + describe('wraps the passed in function in a Hook', function() { + it('adds it to _afterEach', function() { + var fn = function() {}; this.suite.afterEach(fn); expect(this.suite._afterEach).to.have.length(1); @@ -289,30 +265,22 @@ describe('Suite', function () { expect(afterEachItem.fn).to.equal(fn); }); - it('appends title to hook', function () { - var fn = function () { - }; + it('appends title to hook', function() { + var fn = function() {}; this.suite.afterEach('test', fn); - expect(this.suite._afterEach) - .to - .have - .length(1); + expect(this.suite._afterEach).to.have.length(1); var beforeAllItem = this.suite._afterEach[0]; - expect(beforeAllItem.title) - .to - .equal('"after each" hook: test'); - expect(beforeAllItem.fn) - .to - .equal(fn); + expect(beforeAllItem.title).to.equal('"after each" hook: test'); + expect(beforeAllItem.fn).to.equal(fn); }); - it('uses function name if available', function () { + it('uses function name if available', function() { if (!supportsFunctionNames()) { this.skip(); return; } - function namedFn () {} + function namedFn() {} this.suite.afterEach(namedFn); var afterEachItem = this.suite._afterEach[0]; expect(afterEachItem.title).to.equal('"after each" hook: namedFn'); @@ -321,8 +289,8 @@ describe('Suite', function () { }); }); - describe('.addSuite()', function () { - beforeEach(function () { + describe('.addSuite()', function() { + beforeEach(function() { this.first = new Suite('First suite'); this.first.timeout(4002); this.first.slow(200); @@ -330,24 +298,24 @@ describe('Suite', function () { this.first.addSuite(this.second); }); - it('sets the parent on the added Suite', function () { + it('sets the parent on the added Suite', function() { expect(this.second.parent).to.equal(this.first); }); - it('copies the timeout value', function () { + it('copies the timeout value', function() { expect(this.second.timeout()).to.equal(4002); }); - it('copies the slow value', function () { + it('copies the slow value', function() { expect(this.second.slow()).to.equal(200); }); - it('adds the suite to the suites collection', function () { + it('adds the suite to the suites collection', function() { expect(this.first.suites).to.have.length(1); expect(this.first.suites[0]).to.equal(this.second); }); - it('treats suite as pending if its parent is pending', function () { + it('treats suite as pending if its parent is pending', function() { this.first.pending = true; expect(this.second.isPending()).to.be(true); }); @@ -375,19 +343,19 @@ describe('Suite', function () { // }); // }); - describe('.fullTitle()', function () { - beforeEach(function () { + describe('.fullTitle()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('when there is no parent', function () { - it('returns the suite title', function () { + describe('when there is no parent', function() { + it('returns the suite title', function() { expect(this.suite.fullTitle()).to.equal('A Suite'); }); }); - describe('when there is a parent', function () { - it('returns the combination of parent\'s and suite\'s title', function () { + describe('when there is a parent', function() { + it("returns the combination of parent's and suite's title", function() { var parentSuite = new Suite('I am a parent'); parentSuite.addSuite(this.suite); expect(this.suite.fullTitle()).to.equal('I am a parent A Suite'); @@ -395,28 +363,28 @@ describe('Suite', function () { }); }); - describe('.titlePath()', function () { - beforeEach(function () { + describe('.titlePath()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('when there is no parent', function () { - it('returns the suite title', function () { + describe('when there is no parent', function() { + it('returns the suite title', function() { expect(this.suite.titlePath()).to.eql(['A Suite']); }); }); - describe('when there is a parent', function () { - describe('the parent is the root suite', function () { - it('returns the suite title', function () { + describe('when there is a parent', function() { + describe('the parent is the root suite', function() { + it('returns the suite title', function() { var parentSuite = new Suite(''); parentSuite.addSuite(this.suite); expect(this.suite.titlePath()).to.eql(['A Suite']); }); }); - describe('the parent is not the root suite', function () { - it('returns the concatenation of parent\'s and suite\'s title', function () { + describe('the parent is not the root suite', function() { + it("returns the concatenation of parent's and suite's title", function() { var parentSuite = new Suite('I am a parent'); parentSuite.addSuite(this.suite); expect(this.suite.titlePath()).to.eql(['I am a parent', 'A Suite']); @@ -425,19 +393,19 @@ describe('Suite', function () { }); }); - describe('.total()', function () { - beforeEach(function () { + describe('.total()', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('when there are no nested suites or tests', function () { - it('should return 0', function () { + describe('when there are no nested suites or tests', function() { + it('should return 0', function() { expect(this.suite.total()).to.equal(0); }); }); - describe('when there are several tests in the suite', function () { - it('should return the number', function () { + describe('when there are several tests in the suite', function() { + it('should return the number', function() { this.suite.addTest(new Test('a child test')); this.suite.addTest(new Test('another child test')); expect(this.suite.total()).to.equal(2); @@ -445,82 +413,88 @@ describe('Suite', function () { }); }); - describe('.eachTest(fn)', function () { - beforeEach(function () { + describe('.eachTest(fn)', function() { + beforeEach(function() { this.suite = new Suite('A Suite'); }); - describe('when there are no nested suites or tests', function () { - it('should return 0', function () { + describe('when there are no nested suites or tests', function() { + it('should return 0', function() { var n = 0; - function fn () { n++; } + function fn() { + n++; + } this.suite.eachTest(fn); expect(n).to.equal(0); }); }); - describe('when there are several tests in the suite', function () { - it('should return the number', function () { + describe('when there are several tests in the suite', function() { + it('should return the number', function() { this.suite.addTest(new Test('a child test')); this.suite.addTest(new Test('another child test')); var n = 0; - function fn () { n++; } + function fn() { + n++; + } this.suite.eachTest(fn); expect(n).to.equal(2); }); }); - describe('when there are several levels of nested suites', function () { - it('should return the number', function () { + describe('when there are several levels of nested suites', function() { + it('should return the number', function() { this.suite.addTest(new Test('a child test')); var suite = new Suite('a child suite'); suite.addTest(new Test('a test in a child suite')); this.suite.addSuite(suite); var n = 0; - function fn () { n++; } + function fn() { + n++; + } this.suite.eachTest(fn); expect(n).to.equal(2); }); }); }); - describe('initialization', function () { + describe('initialization', function() { /* eslint no-new: off */ - it('should throw an error if the title isn\'t a string', function () { - expect(function () { + it("should throw an error if the title isn't a string", function() { + expect(function() { new Suite(undefined, 'root'); }).to.throwError(); - expect(function () { - new Suite(function () {}, 'root'); + expect(function() { + new Suite(function() {}, 'root'); }).to.throwError(); }); - it('should not throw if the title is a string', function () { - expect(function () { + it('should not throw if the title is a string', function() { + expect(function() { new Suite('Bdd suite', 'root'); }).to.not.throwError(); }); }); }); -describe('Test', function () { - describe('initialization', function () { - it('should throw an error if the title isn\'t a string', function () { - expect(function () { - new Test(function () {}); +describe('Test', function() { + describe('initialization', function() { + it("should throw an error if the title isn't a string", function() { + expect(function() { + new Test(function() {}); }).to.throwError(); - expect(function () { - new Test(undefined, function () {}); + expect(function() { + new Test(undefined, function() {}); }).to.throwError(); }); - it('should not throw if the title is a string', function () { - expect(function () { - new Test('test-case', function () {}); + it('should not throw if the title is a string', function() { + expect(function() { + new Test('test-case', function() {}); }).to.not.throwError(); }); }); diff --git a/test/unit/test.spec.js b/test/unit/test.spec.js index 86aa5effa3..91bfc329e2 100644 --- a/test/unit/test.spec.js +++ b/test/unit/test.spec.js @@ -3,10 +3,10 @@ var mocha = require('../../lib/mocha'); var Test = mocha.Test; -describe('Test', function () { - describe('.clone()', function () { - beforeEach(function () { - this._test = new Test('To be cloned', function () {}); +describe('Test', function() { + describe('.clone()', function() { + beforeEach(function() { + this._test = new Test('To be cloned', function() {}); this._test._timeout = 3043; this._test._slow = 101; this._test._enableTimeouts = true; @@ -17,59 +17,63 @@ describe('Test', function () { this._test.file = 'bar'; }); - it('should copy the title', function () { + it('should copy the title', function() { expect(this._test.clone().title).to.equal('To be cloned'); }); - it('should copy the timeout value', function () { + it('should copy the timeout value', function() { expect(this._test.clone().timeout()).to.equal(3043); }); - it('should copy the slow value', function () { + it('should copy the slow value', function() { expect(this._test.clone().slow()).to.equal(101); }); - it('should copy the enableTimeouts value', function () { + it('should copy the enableTimeouts value', function() { expect(this._test.clone().enableTimeouts()).to.be(true); }); - it('should copy the retries value', function () { + it('should copy the retries value', function() { expect(this._test.clone().retries()).to.equal(3); }); - it('should copy the currentRetry value', function () { + it('should copy the currentRetry value', function() { expect(this._test.clone().currentRetry()).to.equal(1); }); - it('should copy the globals value', function () { + it('should copy the globals value', function() { expect(this._test.clone().globals()).to.not.be.empty(); }); - it('should copy the parent value', function () { + it('should copy the parent value', function() { expect(this._test.clone().parent).to.equal('foo'); }); - it('should copy the file value', function () { + it('should copy the file value', function() { expect(this._test.clone().file).to.equal('bar'); }); }); - describe('.isPending()', function () { - beforeEach(function () { - this._test = new Test('Is it skipped', function () {}); + describe('.isPending()', function() { + beforeEach(function() { + this._test = new Test('Is it skipped', function() {}); }); - it('should not be pending by default', function () { + it('should not be pending by default', function() { expect(this._test.isPending()).to.not.be(true); }); - it('should be pending when marked as such', function () { + it('should be pending when marked as such', function() { this._test.pending = true; expect(this._test.isPending()).to.be(true); }); - it('should be pending when its parent is pending', function () { - this._test.parent = { isPending: function () { return true; } }; + it('should be pending when its parent is pending', function() { + this._test.parent = { + isPending: function() { + return true; + } + }; expect(this._test.isPending()).to.be(true); }); }); diff --git a/test/unit/throw.spec.js b/test/unit/throw.spec.js index 104c0d3d2a..46168cf44e 100644 --- a/test/unit/throw.spec.js +++ b/test/unit/throw.spec.js @@ -6,12 +6,12 @@ var Suite = require('../../lib/suite'); var Test = require('../../lib/test'); var Runner = require('../../lib/runner'); -describe('a test that throws', function () { +describe('a test that throws', function() { var suite; var runner; var uncaughtHandlers; - beforeEach(function () { + beforeEach(function() { suite = new Suite('Suite', 'root'); runner = new Runner(suite); @@ -20,20 +20,20 @@ describe('a test that throws', function () { process.removeAllListeners('uncaughtException'); }); - afterEach(function () { - uncaughtHandlers.forEach(function (listener) { + afterEach(function() { + uncaughtHandlers.forEach(function(listener) { process.on('uncaughtException', listener); }); }); - describe('undefined', function () { - it('should not pass if throwing sync and test is sync', function (done) { - var test = new Test('im sync and throw undefined sync', function () { + describe('undefined', function() { + it('should not pass if throwing sync and test is sync', function(done) { + var test = new Test('im sync and throw undefined sync', function() { throw undefined; }); suite.addTest(test); runner = new Runner(suite); - runner.on('end', function () { + runner.on('end', function() { expect(runner.failures).to.equal(1); expect(test.state).to.equal('failed'); done(); @@ -41,13 +41,13 @@ describe('a test that throws', function () { runner.run(); }); - it('should not pass if throwing sync and test is async', function (done) { - var test = new Test('im async and throw undefined sync', function (done2) { + it('should not pass if throwing sync and test is async', function(done) { + var test = new Test('im async and throw undefined sync', function(done2) { throw undefined; }); suite.addTest(test); runner = new Runner(suite); - runner.on('end', function () { + runner.on('end', function() { expect(runner.failures).to.equal(1); expect(test.state).to.equal('failed'); done(); @@ -55,15 +55,17 @@ describe('a test that throws', function () { runner.run(); }); - it('should not pass if throwing async and test is async', function (done) { - var test = new Test('im async and throw undefined async', function (done2) { - process.nextTick(function () { + it('should not pass if throwing async and test is async', function(done) { + var test = new Test('im async and throw undefined async', function( + done2 + ) { + process.nextTick(function() { throw undefined; }); }); suite.addTest(test); runner = new Runner(suite); - runner.on('end', function () { + runner.on('end', function() { expect(runner.failures).to.equal(1); expect(test.state).to.equal('failed'); done(); @@ -72,14 +74,14 @@ describe('a test that throws', function () { }); }); - describe('null', function () { - it('should not pass if throwing sync and test is sync', function (done) { - var test = new Test('im sync and throw null sync', function () { + describe('null', function() { + it('should not pass if throwing sync and test is sync', function(done) { + var test = new Test('im sync and throw null sync', function() { throw null; }); suite.addTest(test); runner = new Runner(suite); - runner.on('end', function () { + runner.on('end', function() { expect(runner.failures).to.equal(1); expect(test.state).to.equal('failed'); done(); @@ -87,13 +89,13 @@ describe('a test that throws', function () { runner.run(); }); - it('should not pass if throwing sync and test is async', function (done) { - var test = new Test('im async and throw null sync', function (done2) { + it('should not pass if throwing sync and test is async', function(done) { + var test = new Test('im async and throw null sync', function(done2) { throw null; }); suite.addTest(test); runner = new Runner(suite); - runner.on('end', function () { + runner.on('end', function() { expect(runner.failures).to.equal(1); expect(test.state).to.equal('failed'); done(); @@ -101,15 +103,15 @@ describe('a test that throws', function () { runner.run(); }); - it('should not pass if throwing async and test is async', function (done) { - var test = new Test('im async and throw null async', function (done2) { - process.nextTick(function () { + it('should not pass if throwing async and test is async', function(done) { + var test = new Test('im async and throw null async', function(done2) { + process.nextTick(function() { throw null; }); }); suite.addTest(test); runner = new Runner(suite); - runner.on('end', function () { + runner.on('end', function() { expect(runner.failures).to.equal(1); expect(test.state).to.equal('failed'); done(); diff --git a/test/unit/timeout.spec.js b/test/unit/timeout.spec.js index 066e70d111..ce95edcb81 100644 --- a/test/unit/timeout.spec.js +++ b/test/unit/timeout.spec.js @@ -1,61 +1,61 @@ 'use strict'; -describe('timeouts', function () { - beforeEach(function (done) { +describe('timeouts', function() { + beforeEach(function(done) { // uncomment // setTimeout(done, 3000); done(); }); - it('should error on timeout', function (done) { + it('should error on timeout', function(done) { // uncomment // setTimeout(done, 3000); done(); }); - it('should allow overriding per-test', function (done) { + it('should allow overriding per-test', function(done) { this.timeout(200); - setTimeout(function () { + setTimeout(function() { done(); }, 50); }); - describe('disabling', function () { - it('should allow overriding per-test', function (done) { + describe('disabling', function() { + it('should allow overriding per-test', function(done) { this.enableTimeouts(false); this.timeout(1); setTimeout(done, 2); }); - it('should work with timeout(0)', function (done) { + it('should work with timeout(0)', function(done) { this.timeout(0); setTimeout(done, 1); }); - describe('using beforeEach', function () { - beforeEach(function () { + describe('using beforeEach', function() { + beforeEach(function() { this.timeout(0); }); - it('should work with timeout(0)', function (done) { + it('should work with timeout(0)', function(done) { setTimeout(done, 1); }); }); - describe('using before', function () { - before(function () { + describe('using before', function() { + before(function() { this.timeout(0); }); - it('should work with timeout(0)', function (done) { + it('should work with timeout(0)', function(done) { setTimeout(done, 1); }); }); - describe('using enableTimeouts(false)', function () { + describe('using enableTimeouts(false)', function() { this.timeout(4); - it('should suppress timeout(4)', function (done) { + it('should suppress timeout(4)', function(done) { this.slow(100); // The test is in the before() call. this.enableTimeouts(false); @@ -63,15 +63,15 @@ describe('timeouts', function () { }); }); - describe('suite-level', function () { + describe('suite-level', function() { this.timeout(0); - it('should work with timeout(0)', function (done) { + it('should work with timeout(0)', function(done) { setTimeout(done, 1); }); - describe('nested suite', function () { - it('should work with timeout(0)', function (done) { + describe('nested suite', function() { + it('should work with timeout(0)', function(done) { setTimeout(done, 1); }); }); diff --git a/test/unit/utils.spec.js b/test/unit/utils.spec.js index 7c4313ffee..b65098b113 100644 --- a/test/unit/utils.spec.js +++ b/test/unit/utils.spec.js @@ -2,85 +2,68 @@ var utils = require('../../lib/utils'); -describe('lib/utils', function () { - describe('clean', function () { - it('should remove the wrapping function declaration', function () { - expect(utils.clean('function (one, two, three) {\n//code\n}')) - .to - .equal('//code'); +describe('lib/utils', function() { + describe('clean', function() { + it('should remove the wrapping function declaration', function() { + expect(utils.clean('function (one, two, three) {\n//code\n}')).to.equal( + '//code' + ); }); - it('should handle newlines in the function declaration', function () { - expect(utils.clean('function (one, two, three)\n {\n//code\n}')) - .to - .equal('//code'); + it('should handle newlines in the function declaration', function() { + expect( + utils.clean('function (one, two, three)\n {\n//code\n}') + ).to.equal('//code'); }); - it('should remove space character indentation from the function body', - function () { - expect(utils.clean(' //line1\n //line2')) - .to - .equal('//line1\n //line2'); - }); + it('should remove space character indentation from the function body', function() { + expect(utils.clean(' //line1\n //line2')).to.equal( + '//line1\n //line2' + ); + }); - it('should remove tab character indentation from the function body', - function () { - expect(utils.clean('\t//line1\n\t\t//line2')) - .to - .equal('//line1\n\t//line2'); - }); + it('should remove tab character indentation from the function body', function() { + expect(utils.clean('\t//line1\n\t\t//line2')).to.equal( + '//line1\n\t//line2' + ); + }); - it('should handle functions with tabs in their declarations', function () { - expect(utils.clean('function\t(\t)\t{\n//code\n}')) - .to - .equal('//code'); + it('should handle functions with tabs in their declarations', function() { + expect(utils.clean('function\t(\t)\t{\n//code\n}')).to.equal('//code'); }); - it('should handle named functions without space after name', function () { - expect(utils.clean('function withName() {\n//code\n}')) - .to - .equal('//code'); + it('should handle named functions without space after name', function() { + expect(utils.clean('function withName() {\n//code\n}')).to.equal( + '//code' + ); }); - it('should handle named functions with space after name', function () { - expect(utils.clean('function withName () {\n//code\n}')) - .to - .equal('//code'); + it('should handle named functions with space after name', function() { + expect(utils.clean('function withName () {\n//code\n}')).to.equal( + '//code' + ); }); - it( - 'should handle functions with no space between the end and the closing brace', - function () { - expect(utils.clean('function() {/*code*/}')) - .to - .equal('/*code*/'); - }); + it('should handle functions with no space between the end and the closing brace', function() { + expect(utils.clean('function() {/*code*/}')).to.equal('/*code*/'); + }); - it('should handle functions with parentheses in the same line', - function () { - expect(utils.clean('function() { if (true) { /* code */ } }')) - .to - .equal('if (true) { /* code */ }'); - }); + it('should handle functions with parentheses in the same line', function() { + expect(utils.clean('function() { if (true) { /* code */ } }')).to.equal( + 'if (true) { /* code */ }' + ); + }); - it('should handle empty functions', function () { - expect(utils.clean('function() {}')) - .to - .equal(''); + it('should handle empty functions', function() { + expect(utils.clean('function() {}')).to.equal(''); }); - it('should format a single line test function', function () { - var fn = [ - 'function () {', - ' var a = 1;', - '}' - ].join('\n'); - expect(utils.clean(fn)) - .to - .equal('var a = 1;'); + it('should format a single line test function', function() { + var fn = ['function () {', ' var a = 1;', '}'].join('\n'); + expect(utils.clean(fn)).to.equal('var a = 1;'); }); - it('should format a multi line test indented with spaces', function () { + it('should format a multi line test indented with spaces', function() { // and no new lines after curly braces, shouldn't matter var fn = [ 'function(){ var a = 1;', @@ -88,12 +71,10 @@ describe('lib/utils', function () { ' var b = 2;', ' var c = 3; }' ].join('\n'); - expect(utils.clean(fn)) - .to - .equal('var a = 1;\n var b = 2;\nvar c = 3;'); + expect(utils.clean(fn)).to.equal('var a = 1;\n var b = 2;\nvar c = 3;'); }); - it('should format a multi line test indented with tabs', function () { + it('should format a multi line test indented with tabs', function() { var fn = [ 'function (arg1, arg2) {', '\tif (true) {', @@ -101,12 +82,10 @@ describe('lib/utils', function () { '\t}', '}' ].join('\n'); - expect(utils.clean(fn)) - .to - .equal('if (true) {\n\tvar a = 1;\n}'); + expect(utils.clean(fn)).to.equal('if (true) {\n\tvar a = 1;\n}'); }); - it('should format functions saved in windows style - spaces', function () { + it('should format functions saved in windows style - spaces', function() { var fn = [ 'function (one) {', ' do {', @@ -114,12 +93,10 @@ describe('lib/utils', function () { ' } while (false);', ' }' ].join('\r\n'); - expect(utils.clean(fn)) - .to - .equal('do {\n "nothing";\n} while (false);'); + expect(utils.clean(fn)).to.equal('do {\n "nothing";\n} while (false);'); }); - it('should format functions saved in windows style - tabs', function () { + it('should format functions saved in windows style - tabs', function() { var fn = [ 'function ( ) {', '\tif (false) {', @@ -129,78 +106,78 @@ describe('lib/utils', function () { '\t}', '}' ].join('\r\n'); - expect(utils.clean(fn)) - .to - .equal('if (false) {\n\tvar json = {\n\t\tone : 1\n\t};\n}'); + expect(utils.clean(fn)).to.equal( + 'if (false) {\n\tvar json = {\n\t\tone : 1\n\t};\n}' + ); }); - it('should format es6 arrow functions', function () { - var fn = [ - '() => {', - ' var a = 1;', - '}' - ].join('\n'); - expect(utils.clean(fn)) - .to - .equal('var a = 1;'); + it('should format es6 arrow functions', function() { + var fn = ['() => {', ' var a = 1;', '}'].join('\n'); + expect(utils.clean(fn)).to.equal('var a = 1;'); }); - it('should format es6 arrow functions with implicit return', function () { + it('should format es6 arrow functions with implicit return', function() { var fn = '() => foo()'; - expect(utils.clean(fn)) - .to - .equal('foo()'); + expect(utils.clean(fn)).to.equal('foo()'); }); }); - describe('stringify', function () { + describe('stringify', function() { var stringify = utils.stringify; - it('should return an object representation of a string created with a String constructor', function () { + it('should return an object representation of a string created with a String constructor', function() { /* eslint no-new-wrappers: off */ - expect(stringify(new String('foo'))).to.equal('{\n "0": "f"\n "1": "o"\n "2": "o"\n}'); + expect(stringify(new String('foo'))).to.equal( + '{\n "0": "f"\n "1": "o"\n "2": "o"\n}' + ); }); - it('should return Buffer with .toJSON representation', function () { + it('should return Buffer with .toJSON representation', function() { expect(stringify(Buffer.from([0x01]))).to.equal('[\n 1\n]'); expect(stringify(Buffer.from([0x01, 0x02]))).to.equal('[\n 1\n 2\n]'); - expect(stringify(Buffer.from('ABCD'))).to.equal('[\n 65\n 66\n 67\n 68\n]'); + expect(stringify(Buffer.from('ABCD'))).to.equal( + '[\n 65\n 66\n 67\n 68\n]' + ); }); - it('should return Date object with .toISOString() + string prefix', function () { - expect(stringify(new Date(0))).to.equal('[Date: ' + new Date(0).toISOString() + ']'); + it('should return Date object with .toISOString() + string prefix', function() { + expect(stringify(new Date(0))).to.equal( + '[Date: ' + new Date(0).toISOString() + ']' + ); var date = new Date(); // now expect(stringify(date)).to.equal('[Date: ' + date.toISOString() + ']'); }); - it('should return invalid Date object with .toString() + string prefix', function () { - expect(stringify(new Date(''))).to.equal('[Date: ' + new Date('').toString() + ']'); + it('should return invalid Date object with .toString() + string prefix', function() { + expect(stringify(new Date(''))).to.equal( + '[Date: ' + new Date('').toString() + ']' + ); }); - describe('#Number', function () { - it('should show the handle -0 situations', function () { + describe('#Number', function() { + it('should show the handle -0 situations', function() { expect(stringify(-0)).to.eql('-0'); expect(stringify(0)).to.eql('0'); expect(stringify('-0')).to.eql('"-0"'); }); - it('should work well with `NaN` and `Infinity`', function () { + it('should work well with `NaN` and `Infinity`', function() { expect(stringify(NaN)).to.equal('NaN'); expect(stringify(Infinity)).to.equal('Infinity'); expect(stringify(-Infinity)).to.equal('-Infinity'); }); - it('floats and ints', function () { + it('floats and ints', function() { expect(stringify(1)).to.equal('1'); expect(stringify(1.2)).to.equal('1.2'); expect(stringify(1e9)).to.equal('1000000000'); }); }); - describe('canonicalize example', function () { - it('should represent the actual full result', function () { + describe('canonicalize example', function() { + it('should represent the actual full result', function() { var expected = { str: 'string', int: 90, @@ -210,22 +187,16 @@ describe('lib/utils', function () { undef: undefined, regex: /^[a-z|A-Z]/, date: new Date(0), - func: function () {}, + func: function() {}, infi: Infinity, nan: NaN, zero: -0, buffer: Buffer.from([0x01, 0x02]), array: [1, 2, 3], empArr: [], - matrix: [[1], - [ - 2, - 3, - 4 - ] - ], - object: { a: 1, b: 2 }, - canObj: { a: { b: 1, c: 2 }, b: {} }, + matrix: [[1], [2, 3, 4]], + object: {a: 1, b: 2}, + canObj: {a: {b: 1, c: 2}, b: {}}, empObj: {} }; expected.circular = expected; // Make `Circular` situation @@ -282,40 +253,44 @@ describe('lib/utils', function () { }); }); - it('should canonicalize the object', function () { - var travis = { name: 'travis', age: 24 }; - var travis2 = { age: 24, name: 'travis' }; + it('should canonicalize the object', function() { + var travis = {name: 'travis', age: 24}; + var travis2 = {age: 24, name: 'travis'}; expect(stringify(travis)).to.equal(stringify(travis2)); }); - it('should handle circular structures in objects', function () { - var travis = { name: 'travis' }; + it('should handle circular structures in objects', function() { + var travis = {name: 'travis'}; travis.whoami = travis; - expect(stringify(travis)).to.equal('{\n "name": "travis"\n "whoami": [Circular]\n}'); + expect(stringify(travis)).to.equal( + '{\n "name": "travis"\n "whoami": [Circular]\n}' + ); }); - it('should handle circular structures in arrays', function () { + it('should handle circular structures in arrays', function() { var travis = ['travis']; travis.push(travis); expect(stringify(travis)).to.equal('[\n "travis"\n [Circular]\n]'); }); - it('should handle circular structures in functions', function () { - var travis = function () {}; + it('should handle circular structures in functions', function() { + var travis = function() {}; travis.fn = travis; expect(stringify(travis)).to.equal('{\n "fn": [Circular]\n}'); }); - it('should handle various non-undefined, non-null, non-object, non-array, non-date, and non-function values', function () { + it('should handle various non-undefined, non-null, non-object, non-array, non-date, and non-function values', function() { var regexp = new RegExp('(?:)'); var regExpObj = {regexp: regexp}; var regexpString = '/(?:)/'; - expect(stringify(regExpObj)).to.equal('{\n "regexp": ' + regexpString + '\n}'); + expect(stringify(regExpObj)).to.equal( + '{\n "regexp": ' + regexpString + '\n}' + ); expect(stringify(regexp)).to.equal(regexpString); var number = 1; @@ -329,34 +304,42 @@ describe('lib/utils', function () { var booleanObj = {boolean: boolean}; var booleanString = 'false'; - expect(stringify(booleanObj)).to.equal('{\n "boolean": ' + boolean + '\n}'); + expect(stringify(booleanObj)).to.equal( + '{\n "boolean": ' + boolean + '\n}' + ); expect(stringify(boolean)).to.equal(booleanString); var string = 'sneepy'; var stringObj = {string: string}; - expect(stringify(stringObj)).to.equal('{\n "string": "' + string + '"\n}'); + expect(stringify(stringObj)).to.equal( + '{\n "string": "' + string + '"\n}' + ); expect(stringify(string)).to.equal(JSON.stringify(string)); var nullValue = null; - var nullObj = {'null': null}; + var nullObj = {null: null}; var nullString = '[null]'; expect(stringify(nullObj)).to.equal('{\n "null": [null]\n}'); expect(stringify(nullValue)).to.equal(nullString); }); - it('should handle arrays', function () { + it('should handle arrays', function() { var array = ['dave', 'dave', 'dave', 'dave']; var arrayObj = {array: array}; var arrayString = ' "dave"\n "dave"\n "dave"\n "dave"'; - expect(stringify(arrayObj)).to.equal('{\n "array": [\n' + arrayString + '\n ]\n}'); - expect(stringify(array)).to.equal('[' + arrayString.replace(/\s+/g, '\n ') + '\n]'); + expect(stringify(arrayObj)).to.equal( + '{\n "array": [\n' + arrayString + '\n ]\n}' + ); + expect(stringify(array)).to.equal( + '[' + arrayString.replace(/\s+/g, '\n ') + '\n]' + ); }); - it('should handle functions', function () { - var fn = function () {}; + it('should handle functions', function() { + var fn = function() {}; var fnObj = {fn: fn}; var fnString = '[Function]'; @@ -364,59 +347,77 @@ describe('lib/utils', function () { expect(stringify(fn)).to.equal('[Function]'); }); - it('should handle empty objects', function () { + it('should handle empty objects', function() { expect(stringify({})).to.equal('{}'); expect(stringify({foo: {}})).to.equal('{\n "foo": {}\n}'); }); - it('should handle empty arrays', function () { + it('should handle empty arrays', function() { expect(stringify([])).to.equal('[]'); expect(stringify({foo: []})).to.equal('{\n "foo": []\n}'); }); - it('should handle non-empty arrays', function () { + it('should handle non-empty arrays', function() { expect(stringify(['a', 'b', 'c'])).to.equal('[\n "a"\n "b"\n "c"\n]'); }); - it('should handle empty functions (with no properties)', function () { - expect(stringify(function () {})).to.equal('[Function]'); - expect(stringify({foo: function () {}})).to.equal('{\n "foo": [Function]\n}'); - expect(stringify({foo: function () {}, bar: 'baz'})).to.equal('{\n "bar": "baz"\n "foo": [Function]\n}'); + it('should handle empty functions (with no properties)', function() { + expect(stringify(function() {})).to.equal('[Function]'); + expect(stringify({foo: function() {}})).to.equal( + '{\n "foo": [Function]\n}' + ); + expect(stringify({foo: function() {}, bar: 'baz'})).to.equal( + '{\n "bar": "baz"\n "foo": [Function]\n}' + ); }); - it('should handle functions w/ properties', function () { - var fn = function () {}; + it('should handle functions w/ properties', function() { + var fn = function() {}; fn.bar = 'baz'; expect(stringify(fn)).to.equal('{\n "bar": "baz"\n}'); - expect(stringify({foo: fn})).to.equal('{\n "foo": {\n "bar": "baz"\n }\n}'); - }); - - it('should handle undefined values', function () { - expect(stringify({foo: undefined})).to.equal('{\n "foo": [undefined]\n}'); - expect(stringify({foo: 'bar', baz: undefined})).to.equal('{\n "baz": [undefined]\n "foo": "bar"\n}'); + expect(stringify({foo: fn})).to.equal( + '{\n "foo": {\n "bar": "baz"\n }\n}' + ); + }); + + it('should handle undefined values', function() { + expect(stringify({foo: undefined})).to.equal( + '{\n "foo": [undefined]\n}' + ); + expect(stringify({foo: 'bar', baz: undefined})).to.equal( + '{\n "baz": [undefined]\n "foo": "bar"\n}' + ); expect(stringify()).to.equal('[undefined]'); }); - it('should recurse', function () { - expect(stringify({foo: {bar: {baz: {quux: {herp: 'derp'}}}}})).to.equal('{\n "foo": {\n "bar": {\n "baz": {\n "quux": {\n "herp": "derp"\n }\n }\n }\n }\n}'); + it('should recurse', function() { + expect(stringify({foo: {bar: {baz: {quux: {herp: 'derp'}}}}})).to.equal( + '{\n "foo": {\n "bar": {\n "baz": {\n "quux": {\n "herp": "derp"\n }\n }\n }\n }\n}' + ); }); - it('might get confusing', function () { + it('might get confusing', function() { expect(stringify(null)).to.equal('[null]'); }); - it('should not freak out if it sees a primitive twice', function () { - expect(stringify({foo: null, bar: null})).to.equal('{\n "bar": [null]\n "foo": [null]\n}'); - expect(stringify({foo: 1, bar: 1})).to.equal('{\n "bar": 1\n "foo": 1\n}'); + it('should not freak out if it sees a primitive twice', function() { + expect(stringify({foo: null, bar: null})).to.equal( + '{\n "bar": [null]\n "foo": [null]\n}' + ); + expect(stringify({foo: 1, bar: 1})).to.equal( + '{\n "bar": 1\n "foo": 1\n}' + ); }); - it('should stringify dates', function () { + it('should stringify dates', function() { var date = new Date(0); expect(stringify(date)).to.equal('[Date: 1970-01-01T00:00:00.000Z]'); - expect(stringify({date: date})).to.equal('{\n "date": [Date: 1970-01-01T00:00:00.000Z]\n}'); + expect(stringify({date: date})).to.equal( + '{\n "date": [Date: 1970-01-01T00:00:00.000Z]\n}' + ); }); - it('should handle object without an Object prototype', function () { + it('should handle object without an Object prototype', function() { var a; if (Object.create) { a = Object.create(null); @@ -430,28 +431,34 @@ describe('lib/utils', function () { // In old version node.js, Symbol is not available by default. if (typeof global.Symbol === 'function') { - it('should handle Symbol', function () { + it('should handle Symbol', function() { var symbol = Symbol('value'); expect(stringify(symbol)).to.equal('Symbol(value)'); - expect(stringify({symbol: symbol})).to.equal('{\n "symbol": Symbol(value)\n}'); + expect(stringify({symbol: symbol})).to.equal( + '{\n "symbol": Symbol(value)\n}' + ); }); } - it('should handle length properties that cannot be coerced to a number', function () { - expect(stringify({length: {nonBuiltinProperty: 0}})).to.equal('{\n "length": {\n "nonBuiltinProperty": 0\n }\n}'); - expect(stringify({length: 'a string where length should be'})).to.equal('{\n "length": "a string where length should be"\n}'); + it('should handle length properties that cannot be coerced to a number', function() { + expect(stringify({length: {nonBuiltinProperty: 0}})).to.equal( + '{\n "length": {\n "nonBuiltinProperty": 0\n }\n}' + ); + expect(stringify({length: 'a string where length should be'})).to.equal( + '{\n "length": "a string where length should be"\n}' + ); }); }); - describe('type', function () { + describe('type', function() { /* eslint no-extend-native: off */ var type = utils.type; var toString = Object.prototype.toString; - beforeEach(function () { + beforeEach(function() { // some JS engines such as PhantomJS 1.x exhibit this behavior - Object.prototype.toString = function () { + Object.prototype.toString = function() { if (this === global) { return '[object DOMWindow]'; } @@ -459,7 +466,7 @@ describe('lib/utils', function () { }; }); - it('should recognize various types', function () { + it('should recognize various types', function() { expect(type({})).to.equal('object'); expect(type([])).to.equal('array'); expect(type(1)).to.equal('number'); @@ -473,65 +480,59 @@ describe('lib/utils', function () { expect(type(true)).to.equal('boolean'); }); - describe('when toString on null or undefined stringifies window', function () { - it('should recognize null and undefined', function () { + describe('when toString on null or undefined stringifies window', function() { + it('should recognize null and undefined', function() { expect(type(null)).to.equal('null'); expect(type(undefined)).to.equal('undefined'); }); }); - afterEach(function () { + afterEach(function() { Object.prototype.toString = toString; }); }); - describe('parseQuery()', function () { + describe('parseQuery()', function() { var parseQuery = utils.parseQuery; - it('should get queryString and return key-value object', function () { - expect(parseQuery('?foo=1&bar=2&baz=3')) - .to - .eql({ - foo: '1', - bar: '2', - baz: '3' - }); - - expect(parseQuery('?r1=^@(?!.*\\)$)&r2=m{2}&r3=^co.*')) - .to - .eql({ - r1: '^@(?!.*\\)$)', - r2: 'm{2}', - r3: '^co.*' - }); - }); - - it('should parse "+" as a space', function () { - expect(parseQuery('?grep=foo+bar')) - .to - .eql({grep: 'foo bar'}); + it('should get queryString and return key-value object', function() { + expect(parseQuery('?foo=1&bar=2&baz=3')).to.eql({ + foo: '1', + bar: '2', + baz: '3' + }); + + expect(parseQuery('?r1=^@(?!.*\\)$)&r2=m{2}&r3=^co.*')).to.eql({ + r1: '^@(?!.*\\)$)', + r2: 'm{2}', + r3: '^co.*' + }); + }); + + it('should parse "+" as a space', function() { + expect(parseQuery('?grep=foo+bar')).to.eql({grep: 'foo bar'}); }); }); - describe('isPromise', function () { - it('should return true if the value is Promise-ish', function () { - expect(utils.isPromise({ - then: function () { - } - })).to.be(true); + describe('isPromise', function() { + it('should return true if the value is Promise-ish', function() { + expect( + utils.isPromise({ + then: function() {} + }) + ).to.be(true); }); - it('should return false if the value is not an object', function () { + it('should return false if the value is not an object', function() { expect(utils.isPromise(1)).to.be(false); }); - it('should return false if the value is an object w/o a "then" function', - function () { - expect(utils.isPromise({})).to.be(false); - }); + it('should return false if the value is an object w/o a "then" function', function() { + expect(utils.isPromise({})).to.be(false); + }); }); - describe('escape', function () { - it('replaces the usual xml suspects', function () { + describe('escape', function() { + it('replaces the usual xml suspects', function() { expect(utils.escape('a>bc>d>')).to.be('>a>bc>d>'); expect(utils.escape('"a"bc"d"')).to.be('"a"bc"d"'); @@ -541,8 +542,10 @@ describe('lib/utils', function () { expect(utils.escape('&<')).to.be('&amp;&lt;'); }); - it('replaces invalid xml characters', function () { - expect(utils.escape('\x1B[32mfoo\x1B[0m')).to.be('foo'); + it('replaces invalid xml characters', function() { + expect(utils.escape('\x1B[32mfoo\x1B[0m')).to.be( + 'foo' + ); // Ensure we can handle non-trivial unicode characters as well expect(utils.escape('💩')).to.be('💩'); });