diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..09a8422 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +!.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c2069e4 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,25 @@ +module.exports = { + extends: [ + 'eslint-config-airbnb-base', + 'eslint-config-prettier', + 'plugin:ava/recommended', + ], + plugins: ['eslint-plugin-prettier', 'eslint-plugin-ava'], + env: { + commonjs: true, + node: true, + }, + rules: { + 'class-methods-use-this': 'off', + 'no-shadow': 'off', + 'no-underscore-dangle': 'off', + 'prettier/prettier': [ + 'error', + { + singleQuote: true, + trailingComma: 'es5', + bracketSpacing: true, + }, + ], + }, +}; diff --git a/.travis.yml b/.travis.yml index 33feb23..ed77fc9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,8 +3,8 @@ language: node_js cache: yarn node_js: - '6.11.5' -- '7' - '8' +- '10' install: - yarn install --frozen-lockfile before_install: @@ -12,4 +12,5 @@ before_install: - curl -sSfL https://yarnpkg.com/install.sh | bash - export PATH=$HOME/.yarn/bin:$PATH script: +- yarn lint - yarn test diff --git a/package.json b/package.json index 7514b6a..be73e0a 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "license": "MPL-2.0", "scripts": { "test": "ava test", + "lint": "eslint src test .eslintrc.js", "changelog": "changelog mozilla-neutrino/webpack-chain all --markdown > CHANGELOG.md" }, "dependencies": { @@ -26,6 +27,13 @@ "devDependencies": { "ava": "^0.25.0", "changelog": "^1.4.0", + "eslint": "^4.19.1", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-config-prettier": "^2.9.0", + "eslint-plugin-ava": "^4.5.1", + "eslint-plugin-import": "^2.11.0", + "eslint-plugin-prettier": "^2.6.0", + "prettier": "^1.12.1", "webpack": "^4.5.0" } } diff --git a/src/ChainedMap.js b/src/ChainedMap.js index 2c7b4d6..00822de 100644 --- a/src/ChainedMap.js +++ b/src/ChainedMap.js @@ -9,7 +9,7 @@ module.exports = class extends Chainable { extend(methods) { this.shorthands = methods; - methods.map(method => { + methods.forEach(method => { this[method] = value => this.set(method, value); }); return this; @@ -58,6 +58,8 @@ module.exports = class extends Chainable { if (order.length) { return entries; } + + return undefined; } values() { @@ -80,50 +82,57 @@ module.exports = class extends Chainable { } merge(obj, omit = []) { - Object - .keys(obj) - .forEach(key => { - if (omit.includes(key)) { - return; - } - - const value = obj[key]; - - if ((!Array.isArray(value) && typeof value !== 'object') || value === null || !this.has(key)) { - this.set(key, value); - } else { - this.set(key, merge(this.get(key), value)); - } - }); + Object.keys(obj).forEach(key => { + if (omit.includes(key)) { + return; + } + + const value = obj[key]; + + if ( + (!Array.isArray(value) && typeof value !== 'object') || + value === null || + !this.has(key) + ) { + this.set(key, value); + } else { + this.set(key, merge(this.get(key), value)); + } + }); return this; } clean(obj) { - return Object - .keys(obj) - .reduce((acc, key) => { - const value = obj[key]; + return Object.keys(obj).reduce((acc, key) => { + const value = obj[key]; - if (value === undefined) { - return acc; - } + if (value === undefined) { + return acc; + } - if (Array.isArray(value) && !value.length) { - return acc; - } + if (Array.isArray(value) && !value.length) { + return acc; + } - if (Object.prototype.toString.call(value) === '[object Object]' && !Object.keys(value).length) { - return acc; - } + if ( + Object.prototype.toString.call(value) === '[object Object]' && + !Object.keys(value).length + ) { + return acc; + } - acc[key] = value; + acc[key] = value; - return acc; - }, {}); + return acc; + }, {}); } - when(condition, whenTruthy = Function.prototype, whenFalsy = Function.prototype) { + when( + condition, + whenTruthy = Function.prototype, + whenFalsy = Function.prototype + ) { if (condition) { whenTruthy(this); } else { diff --git a/src/ChainedSet.js b/src/ChainedSet.js index 100a0c4..ea469da 100644 --- a/src/ChainedSet.js +++ b/src/ChainedSet.js @@ -39,7 +39,11 @@ module.exports = class extends Chainable { return this; } - when(condition, whenTruthy = Function.prototype, whenFalsy = Function.prototype) { + when( + condition, + whenTruthy = Function.prototype, + whenFalsy = Function.prototype + ) { if (condition) { whenTruthy(this); } else { diff --git a/src/Config.js b/src/Config.js index 9ead87d..dc9ccea 100644 --- a/src/Config.js +++ b/src/Config.js @@ -39,7 +39,7 @@ module.exports = class extends ChainedMap { 'stats', 'target', 'watch', - 'watchOptions' + 'watchOptions', ]); } @@ -62,69 +62,76 @@ module.exports = class extends ChainedMap { toConfig() { const entryPoints = this.entryPoints.entries() || {}; - return this.clean(Object.assign(this.entries() || {}, { - node: this.node.entries(), - output: this.output.entries(), - resolve: this.resolve.toConfig(), - resolveLoader: this.resolveLoader.toConfig(), - devServer: this.devServer.toConfig(), - module: this.module.toConfig(), - optimization: this.optimization.entries(), - plugins: this.plugins.values().map(plugin => plugin.toConfig()), - performance: this.performance.entries(), - entry: Object - .keys(entryPoints) - .reduce((acc, key) => Object.assign(acc, { [key]: entryPoints[key].values() }), {}) - })); + return this.clean( + Object.assign(this.entries() || {}, { + node: this.node.entries(), + output: this.output.entries(), + resolve: this.resolve.toConfig(), + resolveLoader: this.resolveLoader.toConfig(), + devServer: this.devServer.toConfig(), + module: this.module.toConfig(), + optimization: this.optimization.entries(), + plugins: this.plugins.values().map(plugin => plugin.toConfig()), + performance: this.performance.entries(), + entry: Object.keys(entryPoints).reduce( + (acc, key) => + Object.assign(acc, { [key]: entryPoints[key].values() }), + {} + ), + }) + ); } - toString({ - verbose = false, - configPrefix = 'config' - } = {}) { + toString({ verbose = false, configPrefix = 'config' } = {}) { + // eslint-disable-next-line global-require const stringify = require('javascript-stringify'); - const config = this.toConfig(); - return stringify(config, (value, indent, stringify) => { - // improve plugin output - if (value && value.__pluginName) { - const prefix = `/* ${configPrefix}.plugin('${value.__pluginName}') */\n`; - const constructorName = value.__pluginConstructorName; - - if (constructorName) { - // get correct indentation for args by stringifying the args array and - // discarding the square brackets. - const args = stringify(value.__pluginArgs).slice(1, -1); - return prefix + `new ${constructorName}(${args})`; - } else { + return stringify( + config, + (value, indent, stringify) => { + // improve plugin output + if (value && value.__pluginName) { + const prefix = `/* ${configPrefix}.plugin('${ + value.__pluginName + }') */\n`; + const constructorName = value.__pluginConstructorName; + + if (constructorName) { + // get correct indentation for args by stringifying the args array and + // discarding the square brackets. + const args = stringify(value.__pluginArgs).slice(1, -1); + return `${prefix}new ${constructorName}(${args})`; + } return prefix + stringify({ args: value.__pluginArgs || [] }); } - } - // improve rule/use output - if (value && value.__ruleNames) { - const prefix = `/* ${configPrefix}.module.rule('${ - value.__ruleNames[0] - }')${ - value.__ruleNames.slice(1).map(r => `.oneOf('${r}')`).join('') - }${ - value.__useName ? `.use('${value.__useName}')` : `` - } */\n`; - return prefix + stringify(value); - } + // improve rule/use output + if (value && value.__ruleNames) { + const prefix = `/* ${configPrefix}.module.rule('${ + value.__ruleNames[0] + }')${value.__ruleNames + .slice(1) + .map(r => `.oneOf('${r}')`) + .join('')}${ + value.__useName ? `.use('${value.__useName}')` : `` + } */\n`; + return prefix + stringify(value); + } - // shorten long functions - if (typeof value === 'function') { - if (value.__expression) { - return value.__expression; - } else if (!verbose && value.toString().length > 100) { - return `function () { /* omitted long function */ }`; + // shorten long functions + if (typeof value === 'function') { + if (value.__expression) { + return value.__expression; + } else if (!verbose && value.toString().length > 100) { + return `function () { /* omitted long function */ }`; + } } - } - return stringify(value); - }, 2); + return stringify(value); + }, + 2 + ); } merge(obj = {}, omit = []) { @@ -136,19 +143,19 @@ module.exports = class extends ChainedMap { 'devServer', 'optimization', 'performance', - 'module' + 'module', ]; if (!omit.includes('entry') && 'entry' in obj) { - Object - .keys(obj.entry) - .forEach(name => this.entry(name).merge(obj.entry[name])); + Object.keys(obj.entry).forEach(name => + this.entry(name).merge(obj.entry[name]) + ); } if (!omit.includes('plugin') && 'plugin' in obj) { - Object - .keys(obj.plugin) - .forEach(name => this.plugin(name).merge(obj.plugin[name])); + Object.keys(obj.plugin).forEach(name => + this.plugin(name).merge(obj.plugin[name]) + ); } omissions.forEach(key => { diff --git a/src/DevServer.js b/src/DevServer.js index a960a9a..23c1363 100644 --- a/src/DevServer.js +++ b/src/DevServer.js @@ -1,6 +1,5 @@ const ChainedMap = require('./ChainedMap'); const ChainedSet = require('./ChainedSet'); -const merge = require('deepmerge'); module.exports = class extends ChainedMap { constructor(parent) { @@ -44,14 +43,19 @@ module.exports = class extends ChainedMap { 'stdin', 'useLocalIp', 'watchContentBase', - 'watchOptions' + 'watchOptions', ]); } toConfig() { - return this.clean(Object.assign({ - allowedHosts: this.allowedHosts.values(), - }, this.entries() || {})); + return this.clean( + Object.assign( + { + allowedHosts: this.allowedHosts.values(), + }, + this.entries() || {} + ) + ); } merge(obj, omit = []) { diff --git a/src/Module.js b/src/Module.js index 1e88d0b..3f247a6 100644 --- a/src/Module.js +++ b/src/Module.js @@ -26,23 +26,25 @@ module.exports = class extends ChainedMap { } toConfig() { - return this.clean(Object.assign(this.entries() || {}, { - defaultRules: this.defaultRules.values().map(r => r.toConfig()), - rules: this.rules.values().map(r => r.toConfig()) - })); + return this.clean( + Object.assign(this.entries() || {}, { + defaultRules: this.defaultRules.values().map(r => r.toConfig()), + rules: this.rules.values().map(r => r.toConfig()), + }) + ); } merge(obj, omit = []) { if (!omit.includes('rule') && 'rule' in obj) { - Object - .keys(obj.rule) - .forEach(name => this.rule(name).merge(obj.rule[name])); + Object.keys(obj.rule).forEach(name => + this.rule(name).merge(obj.rule[name]) + ); } if (!omit.includes('defaultRule') && 'defaultRule' in obj) { - Object - .keys(obj.defaultRule) - .forEach(name => this.defaultRule(name).merge(obj.defaultRule[name])); + Object.keys(obj.defaultRule).forEach(name => + this.defaultRule(name).merge(obj.defaultRule[name]) + ); } return super.merge(obj, ['rule', 'defaultRule']); diff --git a/src/Orderable.js b/src/Orderable.js index 7d8e5d3..abb8a07 100644 --- a/src/Orderable.js +++ b/src/Orderable.js @@ -1,31 +1,40 @@ -module.exports = (Class) => class extends Class { - before(name) { - if (this.__after) { - throw new Error(`Unable to set .before(${JSON.stringify(name)}) with existing value for .after()`); +module.exports = Class => + class extends Class { + before(name) { + if (this.__after) { + throw new Error( + `Unable to set .before(${JSON.stringify( + name + )}) with existing value for .after()` + ); + } + + this.__before = name; + return this; } - this.__before = name; - return this; - } + after(name) { + if (this.__before) { + throw new Error( + `Unable to set .after(${JSON.stringify( + name + )}) with existing value for .before()` + ); + } - after(name) { - if (this.__before) { - throw new Error(`Unable to set .after(${JSON.stringify(name)}) with existing value for .before()`); + this.__after = name; + return this; } - this.__after = name; - return this; - } + merge(obj, omit = []) { + if (obj.before) { + this.before(obj.before); + } - merge(obj, omit = []) { - if (obj.before) { - this.before(obj.before); - } + if (obj.after) { + this.after(obj.after); + } - if (obj.after) { - this.after(obj.after); + return super.merge(obj, [...omit, 'before', 'after']); } - - return super.merge(obj, [...omit, 'before', 'after']); - } -}; \ No newline at end of file + }; diff --git a/src/Performance.js b/src/Performance.js index c94ca12..79c23fa 100644 --- a/src/Performance.js +++ b/src/Performance.js @@ -3,11 +3,6 @@ const ChainedMap = require('./ChainedMap'); module.exports = class extends ChainedMap { constructor(parent) { super(parent); - this.extend([ - 'assetFilter', - 'hints', - 'maxAssetSize', - 'maxEntrypointSize' - ]); + this.extend(['assetFilter', 'hints', 'maxAssetSize', 'maxEntrypointSize']); } }; diff --git a/src/Plugin.js b/src/Plugin.js index 276ef76..0f5c335 100644 --- a/src/Plugin.js +++ b/src/Plugin.js @@ -1,53 +1,53 @@ const ChainedMap = require('./ChainedMap'); const Orderable = require('./Orderable'); -module.exports = Orderable(class extends ChainedMap { - constructor(parent, name) { - super(parent); - this.name = name; - this.extend(['init']); +module.exports = Orderable( + class extends ChainedMap { + constructor(parent, name) { + super(parent); + this.name = name; + this.extend(['init']); + + this.init((Plugin, args = []) => new Plugin(...args)); + } - this.init((Plugin, args = []) => new Plugin(...args)); - } + use(plugin, args = []) { + return this.set('plugin', plugin).set('args', args); + } - use(plugin, args = []) { - return this - .set('plugin', plugin) - .set('args', args); - } + tap(f) { + this.set('args', f(this.get('args') || [])); + return this; + } - tap(f) { - this.set('args', f(this.get('args') || [])); - return this; - } + merge(obj, omit = []) { + if ('plugin' in obj) { + this.set('plugin', obj.plugin); + } - merge(obj, omit = []) { - if ('plugin' in obj) { - this.set('plugin', obj.plugin); - } + if ('args' in obj) { + this.set('args', obj.args); + } - if ('args' in obj) { - this.set('args', obj.args); + return super.merge(obj, [...omit, 'args', 'plugin']); } - return super.merge(obj, [...omit, 'args', 'plugin']); - } + toConfig() { + const init = this.get('init'); + const plugin = this.get('plugin'); + const constructorName = plugin.__expression + ? `(${plugin.__expression})` + : plugin.name; - toConfig() { - const init = this.get('init'); - const plugin = this.get('plugin'); - const constructorName = plugin.__expression - ? `(${plugin.__expression})` - : plugin.name; + const config = init(this.get('plugin'), this.get('args')); - const config = init(this.get('plugin'), this.get('args')); + Object.defineProperties(config, { + __pluginName: { value: this.name }, + __pluginArgs: { value: this.get('args') }, + __pluginConstructorName: { value: constructorName }, + }); - Object.defineProperties(config, { - __pluginName: { value: this.name }, - __pluginArgs: { value: this.get('args') }, - __pluginConstructorName: { value: constructorName } - }); - - return config; + return config; + } } -}); +); diff --git a/src/Resolve.js b/src/Resolve.js index 0c3fe1e..ed94243 100644 --- a/src/Resolve.js +++ b/src/Resolve.js @@ -1,7 +1,6 @@ const ChainedMap = require('./ChainedMap'); const ChainedSet = require('./ChainedSet'); const Plugin = require('./Plugin'); -const merge = require('deepmerge'); module.exports = class extends ChainedMap { constructor(parent) { @@ -34,16 +33,18 @@ module.exports = class extends ChainedMap { } toConfig() { - return this.clean(Object.assign(this.entries() || {}, { - alias: this.alias.entries(), - aliasFields: this.aliasFields.values(), - descriptionFiles: this.descriptionFiles.values(), - extensions: this.extensions.values(), - mainFields: this.mainFields.values(), - mainFiles: this.mainFiles.values(), - modules: this.modules.values(), - plugins: this.plugins.values().map(plugin => plugin.toConfig()) - })); + return this.clean( + Object.assign(this.entries() || {}, { + alias: this.alias.entries(), + aliasFields: this.aliasFields.values(), + descriptionFiles: this.descriptionFiles.values(), + extensions: this.extensions.values(), + mainFields: this.mainFields.values(), + mainFiles: this.mainFiles.values(), + modules: this.modules.values(), + plugins: this.plugins.values().map(plugin => plugin.toConfig()), + }) + ); } merge(obj, omit = []) { @@ -55,7 +56,7 @@ module.exports = class extends ChainedMap { 'mainFields', 'mainFiles', 'modules', - 'plugins' + 'plugins', ]; omissions.forEach(key => { diff --git a/src/ResolveLoader.js b/src/ResolveLoader.js index ffe230a..0825e66 100644 --- a/src/ResolveLoader.js +++ b/src/ResolveLoader.js @@ -1,6 +1,5 @@ const ChainedMap = require('./ChainedMap'); const ChainedSet = require('./ChainedSet'); -const merge = require('deepmerge'); module.exports = class extends ChainedMap { constructor(parent) { @@ -12,12 +11,17 @@ module.exports = class extends ChainedMap { } toConfig() { - return this.clean(Object.assign({ - extensions: this.extensions.values(), - modules: this.modules.values(), - moduleExtensions: this.moduleExtensions.values(), - packageMains: this.packageMains.values() - }, this.entries() || {})); + return this.clean( + Object.assign( + { + extensions: this.extensions.values(), + modules: this.modules.values(), + moduleExtensions: this.moduleExtensions.values(), + packageMains: this.packageMains.values(), + }, + this.entries() || {} + ) + ); } merge(obj, omit = []) { @@ -25,7 +29,7 @@ module.exports = class extends ChainedMap { 'extensions', 'modules', 'moduleExtensions', - 'packageMains' + 'packageMains', ]; omissions.forEach(key => { diff --git a/src/Rule.js b/src/Rule.js index 6667f50..f845961 100644 --- a/src/Rule.js +++ b/src/Rule.js @@ -26,7 +26,7 @@ module.exports = class Rule extends ChainedMap { 'resourceQuery', 'sideEffects', 'test', - 'type' + 'type', ]); } @@ -55,15 +55,17 @@ module.exports = class Rule extends ChainedMap { } toConfig() { - const config = this.clean(Object.assign(this.entries() || {}, { - include: this.include.values(), - exclude: this.exclude.values(), - oneOf: this.oneOfs.values().map(oneOf => oneOf.toConfig()), - use: this.uses.values().map(use => use.toConfig()) - })); + const config = this.clean( + Object.assign(this.entries() || {}, { + include: this.include.values(), + exclude: this.exclude.values(), + oneOf: this.oneOfs.values().map(oneOf => oneOf.toConfig()), + use: this.uses.values().map(use => use.toConfig()), + }) + ); Object.defineProperties(config, { - __ruleNames: { value: this.names } + __ruleNames: { value: this.names }, }); return config; @@ -79,21 +81,26 @@ module.exports = class Rule extends ChainedMap { } if (!omit.includes('use') && 'use' in obj) { - Object - .keys(obj.use) - .forEach(name => this.use(name).merge(obj.use[name])); + Object.keys(obj.use).forEach(name => this.use(name).merge(obj.use[name])); } if (!omit.includes('oneOf') && 'oneOf' in obj) { - Object - .keys(obj.oneOf) - .forEach(name => this.oneOf(name).merge(obj.oneOf[name])); + Object.keys(obj.oneOf).forEach(name => + this.oneOf(name).merge(obj.oneOf[name]) + ); } if (!omit.includes('test') && 'test' in obj) { this.test(obj.test instanceof RegExp ? obj.test : new RegExp(obj.test)); } - return super.merge(obj, [...omit, 'include', 'exclude', 'use', 'oneOf', 'test']); + return super.merge(obj, [ + ...omit, + 'include', + 'exclude', + 'use', + 'oneOf', + 'test', + ]); } }; diff --git a/src/Use.js b/src/Use.js index 3fe7bb2..c298a60 100644 --- a/src/Use.js +++ b/src/Use.js @@ -2,38 +2,40 @@ const ChainedMap = require('./ChainedMap'); const Orderable = require('./Orderable'); const merge = require('deepmerge'); -module.exports = Orderable(class extends ChainedMap { - constructor(parent, name) { - super(parent); - this.name = name; - this.extend(['loader', 'options']); - } - - tap(f) { - this.options(f(this.get('options'))); - return this; - } - - merge(obj, omit = []) { - if (!omit.includes('loader') && 'loader' in obj) { - this.loader(obj.loader); +module.exports = Orderable( + class extends ChainedMap { + constructor(parent, name) { + super(parent); + this.name = name; + this.extend(['loader', 'options']); } - if (!omit.includes('options') && 'options' in obj) { - this.options(merge(this.store.get('options') || {}, obj.options)); + tap(f) { + this.options(f(this.get('options'))); + return this; } - return super.merge(obj, [...omit, 'loader', 'options']); - } + merge(obj, omit = []) { + if (!omit.includes('loader') && 'loader' in obj) { + this.loader(obj.loader); + } - toConfig() { - const config = this.clean(this.entries() || {}); + if (!omit.includes('options') && 'options' in obj) { + this.options(merge(this.store.get('options') || {}, obj.options)); + } - Object.defineProperties(config, { - __useName: { value: this.name }, - __ruleNames: { value: this.parent && this.parent.names } - }); + return super.merge(obj, [...omit, 'loader', 'options']); + } + + toConfig() { + const config = this.clean(this.entries() || {}); - return config; + Object.defineProperties(config, { + __useName: { value: this.name }, + __ruleNames: { value: this.parent && this.parent.names }, + }); + + return config; + } } -}); +); diff --git a/test/Chainable.js b/test/Chainable.js index ab99e04..616f3a5 100644 --- a/test/Chainable.js +++ b/test/Chainable.js @@ -10,7 +10,7 @@ test('Calling .end() returns parent', t => { test('Using .batch() receives context', t => { const chain = new Chainable(); - const context = chain.batch((current) => { + const context = chain.batch(current => { t.is(current, chain); }); diff --git a/test/ChainedMap.js b/test/ChainedMap.js index 214f18d..2ca69ae 100644 --- a/test/ChainedMap.js +++ b/test/ChainedMap.js @@ -81,7 +81,7 @@ test('entries with values', t => { map.set('b', 'beta'); map.set('c', 'gamma'); - t.deepEqual(map.entries(), { a: 'alpha', b: 'beta', c: 'gamma'}); + t.deepEqual(map.entries(), { a: 'alpha', b: 'beta', c: 'gamma' }); }); test('entries with no values', t => { @@ -92,7 +92,7 @@ test('entries with no values', t => { test('merge with no values', t => { const map = new ChainedMap(); - const obj = { a: 'alpha', b: 'beta', c: 'gamma'}; + const obj = { a: 'alpha', b: 'beta', c: 'gamma' }; t.is(map.merge(obj), map); t.deepEqual(map.entries(), obj); @@ -100,7 +100,7 @@ test('merge with no values', t => { test('merge with existing values', t => { const map = new ChainedMap(); - const obj = { a: 'alpha', b: 'beta', c: 'gamma'}; + const obj = { a: 'alpha', b: 'beta', c: 'gamma' }; map.set('d', 'delta'); @@ -110,7 +110,7 @@ test('merge with existing values', t => { test('merge with overriding values', t => { const map = new ChainedMap(); - const obj = { a: 'alpha', b: 'beta', c: 'gamma'}; + const obj = { a: 'alpha', b: 'beta', c: 'gamma' }; map.set('b', 'delta'); @@ -120,7 +120,7 @@ test('merge with overriding values', t => { test('merge with omitting keys', t => { const map = new ChainedMap(); - const obj = { a: 'alpha', b: 'beta', c: 'gamma'}; + const obj = { a: 'alpha', b: 'beta', c: 'gamma' }; map.merge(obj, ['b']); diff --git a/test/Config.js b/test/Config.js index 4ffcd54..e386def 100644 --- a/test/Config.js +++ b/test/Config.js @@ -1,6 +1,6 @@ import test from 'ava'; -import Config from '../src/Config'; import { validate } from 'webpack'; +import Config from '../src/Config'; class StringifyPlugin { constructor(...args) { @@ -24,7 +24,7 @@ test('shorthand methods', t => { const config = new Config(); const obj = {}; - config.shorthands.map(method => { + config.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(config[method]('alpha'), config); }); @@ -46,17 +46,24 @@ test('node', t => { test('entry', t => { const config = new Config(); - config.entry('index') + config + .entry('index') .add('babel-polyfill') .add('src/index.js'); t.true(config.entryPoints.has('index')); - t.deepEqual(config.entryPoints.get('index').values(), ['babel-polyfill', 'src/index.js']); + t.deepEqual(config.entryPoints.get('index').values(), [ + 'babel-polyfill', + 'src/index.js', + ]); }); test('plugin empty', t => { const config = new Config(); - const instance = config.plugin('stringify').use(StringifyPlugin).end(); + const instance = config + .plugin('stringify') + .use(StringifyPlugin) + .end(); t.is(instance, config); t.true(config.plugins.has('stringify')); @@ -81,75 +88,77 @@ test('toConfig empty', t => { test('toConfig with values', t => { const config = new Config(); - config - .output - .path('build') - .end() + config.output + .path('build') + .end() .mode('development') - .node - .set('__dirname', 'mock') - .end() - .optimization - .nodeEnv('PRODUCTION') - .end() + .node.set('__dirname', 'mock') + .end() + .optimization.nodeEnv('PRODUCTION') + .end() .target('node') .plugin('stringify') - .use(StringifyPlugin) - .end() - .module - .defaultRule('inline') - .use('banner') - .loader('banner-loader') - .options({ prefix: 'banner-prefix.txt' }) - .end() - .end() - .rule('compile') - .include - .add('alpha') - .add('beta') - .end() - .exclude - .add('alpha') - .add('beta') - .end() - .post() - .pre() - .test(/\.js$/) - .use('babel') - .loader('babel-loader') - .options({ presets: ['alpha'] }); + .use(StringifyPlugin) + .end() + .module.defaultRule('inline') + .use('banner') + .loader('banner-loader') + .options({ prefix: 'banner-prefix.txt' }) + .end() + .end() + .rule('compile') + .include.add('alpha') + .add('beta') + .end() + .exclude.add('alpha') + .add('beta') + .end() + .post() + .pre() + .test(/\.js$/) + .use('babel') + .loader('babel-loader') + .options({ presets: ['alpha'] }); t.deepEqual(config.toConfig(), { mode: 'development', node: { - __dirname: 'mock' + __dirname: 'mock', }, optimization: { nodeEnv: 'PRODUCTION', }, output: { - path: 'build' + path: 'build', }, target: 'node', plugins: [new StringifyPlugin()], module: { - defaultRules: [{ - use: [{ - loader: 'banner-loader', - options: { prefix: 'banner-prefix.txt' }, - }] - }], - rules: [{ - include: ['alpha', 'beta'], - exclude: ['alpha', 'beta'], - enforce: 'pre', - test: /\.js$/, - use: [{ - loader: 'babel-loader', - options: { presets: ['alpha'] } - }] - }] - } + defaultRules: [ + { + use: [ + { + loader: 'banner-loader', + options: { prefix: 'banner-prefix.txt' }, + }, + ], + }, + ], + rules: [ + { + include: ['alpha', 'beta'], + exclude: ['alpha', 'beta'], + enforce: 'pre', + test: /\.js$/, + use: [ + { + loader: 'babel-loader', + options: { presets: ['alpha'] }, + }, + ], + }, + ], + }, }); }); @@ -176,40 +185,34 @@ test('validate with values', t => { config .entry('index') - .add('babel-polyfill') - .add('src/index.js') - .end() - .output - .path('/build') - .end() + .add('babel-polyfill') + .add('src/index.js') + .end() + .output.path('/build') + .end() .mode('development') - .optimization - .nodeEnv('PRODUCTION') - .end() - .node - .set('__dirname', 'mock') - .end() + .optimization.nodeEnv('PRODUCTION') + .end() + .node.set('__dirname', 'mock') + .end() .target('node') .plugin('stringify') - .use(StringifyPlugin) - .end() - .module - .rule('compile') - .include - .add('alpha') - .add('beta') - .end() - .exclude - .add('alpha') - .add('beta') - .end() - .sideEffects(false) - .post() - .pre() - .test(/\.js$/) - .use('babel') - .loader('babel-loader') - .options({ presets: ['alpha'] }); + .use(StringifyPlugin) + .end() + .module.rule('compile') + .include.add('alpha') + .add('beta') + .end() + .exclude.add('alpha') + .add('beta') + .end() + .sideEffects(false) + .post() + .pre() + .test(/\.js$/) + .use('babel') + .loader('babel-loader') + .options({ presets: ['alpha'] }); const errors = validate(config.toConfig()); @@ -219,29 +222,28 @@ test('validate with values', t => { test('toString', t => { const config = new Config(); - config - .module - .rule('alpha') - .oneOf('beta') - .use('babel') - .loader('babel-loader'); + config.module + .rule('alpha') + .oneOf('beta') + .use('babel') + .loader('babel-loader'); class FooPlugin {} FooPlugin.__expression = `require('foo-plugin')`; config .plugin('gamma') - .use(FooPlugin) - .end() + .use(FooPlugin) + .end() .plugin('delta') - .use(class BarPlugin {}, ['bar']) - .end() + .use(class BarPlugin {}, ['bar']) + .end() .plugin('epsilon') - .use(class BazPlugin {}, [{ n: 1 }, [2, 3]]) + .use(class BazPlugin {}, [{ n: 1 }, [2, 3]]); - const string = config.toString(); - - t.is(config.toString().trim(), ` + t.is( + config.toString().trim(), + ` { module: { rules: [ @@ -280,22 +282,21 @@ test('toString', t => { ) ] } - `.trim()) + `.trim() + ); }); test('toString for functions with custom expression', t => { - const fn = function foo () {}; + const fn = function foo() {}; fn.__expression = `require('foo')`; const config = new Config(); - config - .module - .rule('alpha') - .include - .add(fn); + config.module.rule('alpha').include.add(fn); - t.is(config.toString().trim(), ` + t.is( + config.toString().trim(), + ` { module: { rules: [ @@ -308,22 +309,24 @@ test('toString for functions with custom expression', t => { ] } } - `.trim()); + `.trim() + ); }); test('toString with custom prefix', t => { const config = new Config(); - config - .plugin('foo') - .use(class TestPlugin {}); + config.plugin('foo').use(class TestPlugin {}); - t.is(config.toString({ configPrefix: 'neutrino.config' }).trim(), ` + t.is( + config.toString({ configPrefix: 'neutrino.config' }).trim(), + ` { plugins: [ /* neutrino.config.plugin('foo') */ new TestPlugin() ] } - `.trim()); + `.trim() + ); }); diff --git a/test/DevServer.js b/test/DevServer.js index 1e46727..0bad0ed 100644 --- a/test/DevServer.js +++ b/test/DevServer.js @@ -20,11 +20,10 @@ test('shorthand methods', t => { const devServer = new DevServer(); const obj = {}; - devServer.shorthands.map(method => { + devServer.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(devServer[method]('alpha'), devServer); }); t.deepEqual(devServer.entries(), obj); }); - diff --git a/test/Module.js b/test/Module.js index fb65530..0c05d8c 100644 --- a/test/Module.js +++ b/test/Module.js @@ -30,7 +30,7 @@ test('defaultRule', t => { t.is(instance, module); t.true(module.defaultRules.has('banner')); -}) +}); test('toConfig empty', t => { const module = new Module(); @@ -44,5 +44,8 @@ test('toConfig with values', t => { module.rule('compile').test(/\.js$/); module.noParse(/.min.js/); - t.deepEqual(module.toConfig(), { rules: [{ test: /\.js$/ }], noParse: /.min.js/ }); + t.deepEqual(module.toConfig(), { + rules: [{ test: /\.js$/ }], + noParse: /.min.js/, + }); }); diff --git a/test/Optimization.js b/test/Optimization.js index 48d1957..ce22517 100644 --- a/test/Optimization.js +++ b/test/Optimization.js @@ -12,7 +12,7 @@ test('shorthand methods', t => { const optimization = new Optimization(); const obj = {}; - optimization.shorthands.map(method => { + optimization.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(optimization[method]('alpha'), optimization); }); diff --git a/test/Orderable.js b/test/Orderable.js index 475e78e..77ea654 100644 --- a/test/Orderable.js +++ b/test/Orderable.js @@ -6,9 +6,7 @@ const Ordered = Orderable(class Test extends ChainedMap {}); test('before', t => { const ordered = new Ordered(); - const instance = ordered - .set('gamma') - .before('beta'); + const instance = ordered.set('gamma').before('beta'); t.is(instance, ordered); t.is(ordered.__before, 'beta'); @@ -16,9 +14,7 @@ test('before', t => { test('after', t => { const ordered = new Ordered(); - const instance = ordered - .set('gamma') - .after('alpha'); + const instance = ordered.set('gamma').after('alpha'); t.is(instance, ordered); t.is(ordered.__after, 'alpha'); @@ -61,16 +57,18 @@ test('ordering before and after', t => { map.set('gamma', new Ordered().set('gamma', 'gamma').after('beta')); map.set('alpha', new Ordered().set('alpha', 'alpha').before('beta')); - t.deepEqual(map.values().map(o => o.values()), [['alpha'], ['beta'], ['gamma']]); + t.deepEqual(map.values().map(o => o.values()), [ + ['alpha'], + ['beta'], + ['gamma'], + ]); }); test('merge with before', t => { const ordered = new Ordered(); - const instance = ordered - .set('gamma') - .merge({ - before: 'beta' - }); + const instance = ordered.set('gamma').merge({ + before: 'beta', + }); t.is(instance, ordered); t.is(ordered.__before, 'beta'); @@ -78,11 +76,9 @@ test('merge with before', t => { test('merge with after', t => { const ordered = new Ordered(); - const instance = ordered - .set('gamma') - .merge({ - after: 'alpha' - }); + const instance = ordered.set('gamma').merge({ + after: 'alpha', + }); t.is(instance, ordered); t.is(ordered.__after, 'alpha'); diff --git a/test/Output.js b/test/Output.js index b1a2c31..9ab23fb 100644 --- a/test/Output.js +++ b/test/Output.js @@ -12,7 +12,7 @@ test('shorthand methods', t => { const output = new Output(); const obj = {}; - output.shorthands.map(method => { + output.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(output[method]('alpha'), output); }); diff --git a/test/Performance.js b/test/Performance.js index 41107a5..01b3013 100644 --- a/test/Performance.js +++ b/test/Performance.js @@ -12,7 +12,7 @@ test('shorthand methods', t => { const performance = new Performance(); const obj = {}; - performance.shorthands.map(method => { + performance.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(performance[method]('alpha'), performance); }); diff --git a/test/Plugin.js b/test/Plugin.js index 5de84eb..b19275c 100644 --- a/test/Plugin.js +++ b/test/Plugin.js @@ -32,7 +32,7 @@ test('tap', t => { plugin.use(StringifyPlugin, ['alpha', 'beta']); - const instance = plugin.tap(args => ['gamma', 'delta']); + const instance = plugin.tap(() => ['gamma', 'delta']); t.is(instance, plugin); t.deepEqual(plugin.get('args'), ['gamma', 'delta']); @@ -47,7 +47,10 @@ test('init', t => { t.deepEqual(args, []); return new Plugin('gamma', 'delta'); }); - const initialized = plugin.get('init')(plugin.get('plugin'), plugin.get('args')); + const initialized = plugin.get('init')( + plugin.get('plugin'), + plugin.get('args') + ); t.is(instance, plugin); t.true(initialized instanceof StringifyPlugin); diff --git a/test/Resolve.js b/test/Resolve.js index 2c43cc1..bdd9c02 100644 --- a/test/Resolve.js +++ b/test/Resolve.js @@ -12,7 +12,7 @@ test('shorthand methods', t => { const resolve = new Resolve(); const obj = {}; - resolve.shorthands.map(method => { + resolve.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(resolve[method]('alpha'), resolve); }); @@ -22,9 +22,11 @@ test('shorthand methods', t => { test('sets methods', t => { const resolve = new Resolve(); - const instance = resolve - .modules.add('src').end() - .extensions.add('.js').end(); + const instance = resolve.modules + .add('src') + .end() + .extensions.add('.js') + .end(); t.is(instance, resolve); }); @@ -38,15 +40,17 @@ test('toConfig empty', t => { test('toConfig with values', t => { const resolve = new Resolve(); - resolve - .modules.add('src').end() - .extensions.add('.js').end() + resolve.modules + .add('src') + .end() + .extensions.add('.js') + .end() .alias.set('React', 'src/react'); t.deepEqual(resolve.toConfig(), { modules: ['src'], extensions: ['.js'], - alias: { React: 'src/react' } + alias: { React: 'src/react' }, }); }); @@ -55,7 +59,7 @@ test('merge empty', t => { const obj = { modules: ['src'], extensions: ['.js'], - alias: { React: 'src/react' } + alias: { React: 'src/react' }, }; const instance = resolve.merge(obj); @@ -66,50 +70,56 @@ test('merge empty', t => { test('merge with values', t => { const resolve = new Resolve(); - resolve - .modules.add('src').end() - .extensions.add('.js').end() + resolve.modules + .add('src') + .end() + .extensions.add('.js') + .end() .alias.set('React', 'src/react'); resolve.merge({ modules: ['dist'], extensions: ['.jsx'], - alias: { ReactDOM: 'src/react-dom' } + alias: { ReactDOM: 'src/react-dom' }, }); t.deepEqual(resolve.toConfig(), { modules: ['src', 'dist'], extensions: ['.js', '.jsx'], - alias: { React: 'src/react', ReactDOM: 'src/react-dom' } + alias: { React: 'src/react', ReactDOM: 'src/react-dom' }, }); }); test('merge with omit', t => { const resolve = new Resolve(); - resolve - .modules.add('src').end() - .extensions.add('.js').end() + resolve.modules + .add('src') + .end() + .extensions.add('.js') + .end() .alias.set('React', 'src/react'); - resolve.merge({ - modules: ['dist'], - extensions: ['.jsx'], - alias: { ReactDOM: 'src/react-dom' } - }, ['alias']); + resolve.merge( + { + modules: ['dist'], + extensions: ['.jsx'], + alias: { ReactDOM: 'src/react-dom' }, + }, + ['alias'] + ); t.deepEqual(resolve.toConfig(), { modules: ['src', 'dist'], extensions: ['.js', '.jsx'], - alias: { React: 'src/react' } + alias: { React: 'src/react' }, }); }); test('plugin with name', t => { const resolve = new Resolve(); - resolve - .plugin('alpha'); + resolve.plugin('alpha'); t.is(resolve.plugins.get('alpha').name, 'alpha'); }); diff --git a/test/ResolveLoader.js b/test/ResolveLoader.js index c75f134..ddaacb5 100644 --- a/test/ResolveLoader.js +++ b/test/ResolveLoader.js @@ -25,13 +25,14 @@ test('toConfig empty', t => { test('toConfig with values', t => { const resolveLoader = new ResolveLoader(); - resolveLoader - .modules.add('src').end() + resolveLoader.modules + .add('src') + .end() .set('moduleExtensions', ['-loader']); t.deepEqual(resolveLoader.toConfig(), { modules: ['src'], - moduleExtensions: ['-loader'] + moduleExtensions: ['-loader'], }); }); @@ -39,7 +40,7 @@ test('merge empty', t => { const resolveLoader = new ResolveLoader(); const obj = { modules: ['src'], - moduleExtensions: ['-loader'] + moduleExtensions: ['-loader'], }; const instance = resolveLoader.merge(obj); @@ -50,35 +51,40 @@ test('merge empty', t => { test('merge with values', t => { const resolveLoader = new ResolveLoader(); - resolveLoader - .modules.add('src').end() + resolveLoader.modules + .add('src') + .end() .moduleExtensions.add('-loader'); resolveLoader.merge({ modules: ['dist'], - moduleExtensions: ['-fake'] + moduleExtensions: ['-fake'], }); t.deepEqual(resolveLoader.toConfig(), { modules: ['src', 'dist'], - moduleExtensions: ['-loader', '-fake'] + moduleExtensions: ['-loader', '-fake'], }); }); test('merge with omit', t => { const resolveLoader = new ResolveLoader(); - resolveLoader - .modules.add('src').end() + resolveLoader.modules + .add('src') + .end() .moduleExtensions.add('-loader'); - resolveLoader.merge({ - modules: ['dist'], - moduleExtensions: ['-fake'] - }, ['moduleExtensions']); + resolveLoader.merge( + { + modules: ['dist'], + moduleExtensions: ['-fake'], + }, + ['moduleExtensions'] + ); t.deepEqual(resolveLoader.toConfig(), { modules: ['src', 'dist'], - moduleExtensions: ['-loader'] + moduleExtensions: ['-loader'], }); }); diff --git a/test/Rule.js b/test/Rule.js index d589bed..82c8ea8 100644 --- a/test/Rule.js +++ b/test/Rule.js @@ -12,7 +12,7 @@ test('shorthand methods', t => { const rule = new Rule(); const obj = {}; - rule.shorthands.map(method => { + rule.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(rule[method]('alpha'), rule); }); @@ -54,9 +54,13 @@ test('post', t => { test('sets methods', t => { const rule = new Rule(); - const instance = rule - .include.add('alpha').add('beta').end() - .exclude.add('alpha').add('beta').end(); + const instance = rule.include + .add('alpha') + .add('beta') + .end() + .exclude.add('alpha') + .add('beta') + .end(); t.is(instance, rule); t.deepEqual(rule.include.values(), ['alpha', 'beta']); @@ -72,7 +76,7 @@ test('toConfig empty', t => { test('toConfig with name', t => { const parent = new Rule(null, 'alpha'); const child = parent.oneOf('beta'); - const grandChild = child.oneOf('gamma') + const grandChild = child.oneOf('gamma'); t.deepEqual(parent.toConfig().__ruleNames, ['alpha']); t.deepEqual(child.toConfig().__ruleNames, ['alpha', 'beta']); @@ -82,44 +86,48 @@ test('toConfig with name', t => { test('toConfig with values', t => { const rule = new Rule(); - rule - .include - .add('alpha') - .add('beta') - .end() - .exclude - .add('alpha') - .add('beta') - .end() + rule.include + .add('alpha') + .add('beta') + .end() + .exclude.add('alpha') + .add('beta') + .end() .post() .pre() .test(/\.js$/) .use('babel') - .loader('babel-loader') - .options({ presets: ['alpha'] }) - .end() + .loader('babel-loader') + .options({ presets: ['alpha'] }) + .end() .oneOf('inline') - .resourceQuery(/inline/) - .use('url') - .loader('url-loader'); + .resourceQuery(/inline/) + .use('url') + .loader('url-loader'); t.deepEqual(rule.toConfig(), { test: /\.js$/, enforce: 'pre', include: ['alpha', 'beta'], exclude: ['alpha', 'beta'], - oneOf: [{ - resourceQuery: /inline/, - use: [{ - loader: 'url-loader' - }] - }], - use: [{ - loader: 'babel-loader', - options: { - presets: ['alpha'] - } - }] + oneOf: [ + { + resourceQuery: /inline/, + use: [ + { + loader: 'url-loader', + }, + ], + }, + ], + use: [ + { + loader: 'babel-loader', + options: { + presets: ['alpha'], + }, + }, + ], }); }); @@ -135,19 +143,19 @@ test('merge empty', t => { resourceQuery: /inline/, use: { url: { - loader: 'url-loader' - } - } - } + loader: 'url-loader', + }, + }, + }, }, use: { babel: { loader: 'babel-loader', options: { - presets: ['alpha'] - } - } - } + presets: ['alpha'], + }, + }, + }, }; const instance = rule.merge(obj); @@ -157,18 +165,24 @@ test('merge empty', t => { test: /\.js$/, include: ['alpha', 'beta'], exclude: ['alpha', 'beta'], - oneOf: [{ - resourceQuery: /inline/, - use: [{ - loader: 'url-loader' - }] - }], - use: [{ - loader: 'babel-loader', - options: { - presets: ['alpha'] - } - }] + oneOf: [ + { + resourceQuery: /inline/, + use: [ + { + loader: 'url-loader', + }, + ], + }, + ], + use: [ + { + loader: 'babel-loader', + options: { + presets: ['alpha'], + }, + }, + ], }); }); @@ -178,10 +192,12 @@ test('merge with values', t => { rule .test(/\.js$/) .post() - .include.add('gamma').add('delta').end() + .include.add('gamma') + .add('delta') + .end() .use('babel') - .loader('babel-loader') - .options({ presets: ['alpha'] }); + .loader('babel-loader') + .options({ presets: ['alpha'] }); rule.merge({ test: /\.jsx$/, @@ -193,18 +209,18 @@ test('merge with values', t => { resourceQuery: /inline/, use: { url: { - loader: 'url-loader' - } - } - } + loader: 'url-loader', + }, + }, + }, }, use: { babel: { options: { - presets: ['beta'] - } - } - } + presets: ['beta'], + }, + }, + }, }); t.deepEqual(rule.toConfig(), { @@ -212,18 +228,24 @@ test('merge with values', t => { enforce: 'pre', include: ['gamma', 'delta', 'alpha', 'beta'], exclude: ['alpha', 'beta'], - oneOf: [{ - resourceQuery: /inline/, - use: [{ - loader: 'url-loader' - }] - }], - use: [{ - loader: 'babel-loader', - options: { - presets: ['alpha', 'beta'] - } - }] + oneOf: [ + { + resourceQuery: /inline/, + use: [ + { + loader: 'url-loader', + }, + ], + }, + ], + use: [ + { + loader: 'babel-loader', + options: { + presets: ['alpha', 'beta'], + }, + }, + ], }); }); @@ -233,45 +255,52 @@ test('merge with omit', t => { rule .test(/\.js$/) .post() - .include.add('gamma').add('delta').end() + .include.add('gamma') + .add('delta') + .end() .use('babel') - .loader('babel-loader') - .options({ presets: ['alpha'] }); - - rule.merge({ - test: /\.jsx$/, - enforce: 'pre', - include: ['alpha', 'beta'], - exclude: ['alpha', 'beta'], - oneOf: { - inline: { - resourceQuery: /inline/, - use: { - url: { - loader: 'url-loader' - } - } - } + .loader('babel-loader') + .options({ presets: ['alpha'] }); + + rule.merge( + { + test: /\.jsx$/, + enforce: 'pre', + include: ['alpha', 'beta'], + exclude: ['alpha', 'beta'], + oneOf: { + inline: { + resourceQuery: /inline/, + use: { + url: { + loader: 'url-loader', + }, + }, + }, + }, + use: { + babel: { + options: { + presets: ['beta'], + }, + }, + }, }, - use: { - babel: { - options: { - presets: ['beta'] - } - } - } - }, ['use', 'oneOf']); + ['use', 'oneOf'] + ); t.deepEqual(rule.toConfig(), { test: /\.jsx$/, enforce: 'pre', include: ['gamma', 'delta', 'alpha', 'beta'], exclude: ['alpha', 'beta'], - use: [{ - loader: 'babel-loader', - options: { - presets: ['alpha'] - } - }] + use: [ + { + loader: 'babel-loader', + options: { + presets: ['alpha'], + }, + }, + ], }); }); diff --git a/test/Use.js b/test/Use.js index 004eea5..b5baa58 100644 --- a/test/Use.js +++ b/test/Use.js @@ -13,7 +13,7 @@ test('shorthand methods', t => { const use = new Use(); const obj = {}; - use.shorthands.map(method => { + use.shorthands.forEach(method => { obj[method] = 'alpha'; t.is(use[method]('alpha'), use); }); @@ -24,9 +24,7 @@ test('shorthand methods', t => { test('tap', t => { const use = new Use(); - use - .loader('babel-loader') - .options({ presets: ['alpha'] }); + use.loader('babel-loader').options({ presets: ['alpha'] }); use.tap(options => { t.deepEqual(options, { presets: ['alpha'] }); @@ -47,9 +45,9 @@ test('toConfig', t => { t.deepEqual(config, { loader: 'babel-loader', - options: { presets: ['alpha'] } + options: { presets: ['alpha'] }, }); - t.deepEqual(config.__ruleNames, ['alpha']) - t.is(config.__useName, 'beta') + t.deepEqual(config.__ruleNames, ['alpha']); + t.is(config.__useName, 'beta'); }); diff --git a/yarn.lock b/yarn.lock index b4838a0..ca4fb82 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,120 +53,116 @@ pretty-ms "^0.2.1" text-table "^0.2.0" -"@webassemblyjs/ast@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.3.tgz#3b3f6fced944d8660273347533e6d4d315b5934a" +"@webassemblyjs/ast@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.2.tgz#ab715aa1fec9dd23c025204dba39690c119418ea" dependencies: - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/wast-parser" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/wast-parser" "1.4.2" debug "^3.1.0" - webassemblyjs "1.4.3" + webassemblyjs "1.4.2" -"@webassemblyjs/floating-point-hex-parser@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz#f5aee4c376a717c74264d7bacada981e7e44faad" +"@webassemblyjs/floating-point-hex-parser@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.2.tgz#9296fb64caa37bf98c8064aa329680e3e2bfacc7" -"@webassemblyjs/helper-buffer@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz#0434b55958519bf503697d3824857b1dea80b729" - dependencies: - debug "^3.1.0" +"@webassemblyjs/helper-buffer@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.2.tgz#3cacecd5a6bfcb67932ed8219f81f92d8b2dafbb" -"@webassemblyjs/helper-code-frame@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz#f1349ca3e01a8e29ee2098c770773ef97af43641" +"@webassemblyjs/helper-code-frame@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.2.tgz#20526637c3849f12b08f8661248477eef9642329" dependencies: - "@webassemblyjs/wast-printer" "1.4.3" + "@webassemblyjs/wast-printer" "1.4.2" -"@webassemblyjs/helper-fsm@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz#65a921db48fb43e868f17b27497870bdcae22b79" +"@webassemblyjs/helper-fsm@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.2.tgz#e41050282994b5be077b95b65b66ecd5a92c5e88" -"@webassemblyjs/helper-wasm-bytecode@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz#0e5b4b5418e33f8a26e940b7809862828c3721a5" +"@webassemblyjs/helper-wasm-bytecode@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.2.tgz#b48c289c7921056aa12d71e78a17070ffe90c49c" -"@webassemblyjs/helper-wasm-section@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz#9ceedd53a3f152c3412e072887ade668d0b1acbf" +"@webassemblyjs/helper-wasm-section@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.2.tgz#520e02c0cc3e5e9b5f44f58abc04ba5eda6e5476" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-buffer" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/wasm-gen" "1.4.3" - debug "^3.1.0" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-buffer" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/wasm-gen" "1.4.2" -"@webassemblyjs/leb128@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.3.tgz#5a5e5949dbb5adfe3ae95664d0439927ac557fb8" +"@webassemblyjs/leb128@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.2.tgz#d13f368abdcefc54428f55a265a993de610f8893" dependencies: leb "^0.3.0" -"@webassemblyjs/validation@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.3.tgz#9e66c9b3079d7bbcf2070c1bf52a54af2a09aac9" +"@webassemblyjs/validation@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.2.tgz#55cf5b219e25900c85773fc35beb9d12ae0ede53" dependencies: - "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/ast" "1.4.2" -"@webassemblyjs/wasm-edit@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz#87febd565e0ffb5ae25f6495bb3958d17aa0a779" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-buffer" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/helper-wasm-section" "1.4.3" - "@webassemblyjs/wasm-gen" "1.4.3" - "@webassemblyjs/wasm-opt" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - "@webassemblyjs/wast-printer" "1.4.3" +"@webassemblyjs/wasm-edit@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.2.tgz#bde9a581065f63f257ed511d7d9cf04f8cd04524" + dependencies: + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-buffer" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/helper-wasm-section" "1.4.2" + "@webassemblyjs/wasm-gen" "1.4.2" + "@webassemblyjs/wasm-opt" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + "@webassemblyjs/wast-printer" "1.4.2" debug "^3.1.0" -"@webassemblyjs/wasm-gen@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz#8553164d0154a6be8f74d653d7ab355f73240aa4" +"@webassemblyjs/wasm-gen@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.2.tgz#0899297f9426073736df799287845a73c597cf90" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/leb128" "1.4.3" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/leb128" "1.4.2" -"@webassemblyjs/wasm-opt@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz#26c7a23bfb136aa405b1d3410e63408ec60894b8" +"@webassemblyjs/wasm-opt@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.2.tgz#c44ad48e109aec197e3bf69875c54537d76ba2e9" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-buffer" "1.4.3" - "@webassemblyjs/wasm-gen" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - debug "^3.1.0" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-buffer" "1.4.2" + "@webassemblyjs/wasm-gen" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" -"@webassemblyjs/wasm-parser@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz#7ddd3e408f8542647ed612019cfb780830993698" +"@webassemblyjs/wasm-parser@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.2.tgz#3bf7e10cfe336db0ecdea0a5d7ed8a63b7a7754a" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/leb128" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - webassemblyjs "1.4.3" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/helper-wasm-bytecode" "1.4.2" + "@webassemblyjs/leb128" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + webassemblyjs "1.4.2" -"@webassemblyjs/wast-parser@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz#3250402e2c5ed53dbe2233c9de1fe1f9f0d51745" +"@webassemblyjs/wast-parser@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.2.tgz#6499c38cf8895a81394f7e40d4681a85aaa84498" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/floating-point-hex-parser" "1.4.3" - "@webassemblyjs/helper-code-frame" "1.4.3" - "@webassemblyjs/helper-fsm" "1.4.3" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/floating-point-hex-parser" "1.4.2" + "@webassemblyjs/helper-code-frame" "1.4.2" + "@webassemblyjs/helper-fsm" "1.4.2" long "^3.2.0" - webassemblyjs "1.4.3" + webassemblyjs "1.4.2" -"@webassemblyjs/wast-printer@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz#3d59aa8d0252d6814a3ef4e6d2a34c9ded3904e0" +"@webassemblyjs/wast-printer@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.2.tgz#ee70a828f0d9730b55b9a5c3ed694094ba68ba57" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/wast-parser" "1.4.3" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/wast-parser" "1.4.2" long "^3.2.0" abbrev@1: @@ -179,15 +175,29 @@ acorn-dynamic-import@^3.0.0: dependencies: acorn "^5.0.0" -acorn@^5.0.0: +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.0.0, acorn@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" -ajv@^5.1.0: +ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -468,7 +478,7 @@ aws4@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" -babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -995,6 +1005,16 @@ call-signature@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -1044,7 +1064,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -1067,6 +1087,10 @@ changelog@^1.4.0: semver "5.5.0" wordwrap "1.0.0" +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + chokidar@^1.4.2: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1119,6 +1143,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1157,6 +1185,10 @@ cli-truncate@^1.0.0: slice-ansi "^1.0.0" string-width "^2.0.0" +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + cli@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" @@ -1227,7 +1259,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -1277,6 +1309,10 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -1349,7 +1385,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^5.0.1: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -1441,6 +1477,16 @@ deep-extend@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +deep-strict-equal@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz#4a078147a8ab57f6a0d4f5547243cd22f44eb4e4" + dependencies: + core-assert "^0.2.0" + deepmerge@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" @@ -1464,6 +1510,18 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + 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@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1501,6 +1559,19 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -1559,6 +1630,12 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhance-visitors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a" + dependencies: + lodash "^4.13.1" + enhanced-resolve@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" @@ -1591,6 +1668,71 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^ version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +eslint-config-airbnb-base@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz#386441e54a12ccd957b0a92564a4bafebd747944" + dependencies: + eslint-restricted-globals "^0.1.1" + +eslint-config-prettier@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz#5ecd65174d486c22dff389fe036febf502d468a3" + dependencies: + get-stdin "^5.0.1" + +eslint-import-resolver-node@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-module-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-ava@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-ava/-/eslint-plugin-ava-4.5.1.tgz#a51b89a306dfd5b2f91185e283837aeade6f9e5c" + dependencies: + arrify "^1.0.1" + deep-strict-equal "^0.2.0" + enhance-visitors "^1.0.0" + espree "^3.1.3" + espurify "^1.5.0" + import-modules "^1.1.0" + multimatch "^2.1.0" + pkg-up "^2.0.0" + +eslint-plugin-import@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.11.0.tgz#15aeea37a67499d848e8e981806d4627b5503816" + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + 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" + +eslint-plugin-prettier@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" + dependencies: + fast-diff "^1.1.1" + jest-docblock "^21.0.0" + +eslint-restricted-globals@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" + eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" @@ -1598,6 +1740,53 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + 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" + espower-location-detector@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" @@ -1607,16 +1796,29 @@ espower-location-detector@^1.0.0: source-map "^0.5.0" xtend "^4.0.0" +espree@^3.1.3, espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" -espurify@^1.6.0: +espurify@^1.5.0, espurify@^1.6.0: version "1.8.0" resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.0.tgz#270d8046e4e47e923d75bc8a87357c7112ca8485" dependencies: core-js "^2.0.0" +esquery@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" + esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" @@ -1699,6 +1901,14 @@ extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -1742,12 +1952,23 @@ fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -1792,6 +2013,15 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -1864,10 +2094,18 @@ fsevents@^1.0.0, fsevents@^1.1.2: nan "^2.9.2" node-pre-gyp "^0.9.0" +function-bind@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + function-name-support@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/function-name-support/-/function-name-support-0.2.0.tgz#55d3bfaa6eafd505a50f9bc81fdf57564a0bb071" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1889,6 +2127,10 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1944,10 +2186,25 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" +globals@^11.0.1: + version "11.5.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + 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" + globby@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -2042,6 +2299,12 @@ has-yarn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -2119,7 +2382,7 @@ hullabaloo-config-manager@^1.1.0: resolve-from "^3.0.0" safe-buffer "^5.0.1" -iconv-lite@^0.4.4: +iconv-lite@^0.4.17, iconv-lite@^0.4.4: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: @@ -2143,6 +2406,10 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +ignore@^3.3.3: + version "3.3.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -2154,6 +2421,10 @@ import-local@^0.1.1: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" +import-modules@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-1.1.0.tgz#748db79c5cc42bb9701efab424f894e72600e9dc" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2191,6 +2462,25 @@ ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + 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.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" + invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -2386,6 +2676,16 @@ is-odd@^2.0.0: dependencies: is-number "^4.0.0" +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -2418,6 +2718,10 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -2468,6 +2772,10 @@ javascript-stringify@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" +jest-docblock@^21.0.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" @@ -2476,7 +2784,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.10.0: +js-yaml@^3.10.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: @@ -2507,6 +2815,10 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2560,6 +2872,13 @@ leb@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/leb/-/leb-0.3.0.tgz#32bee9fad168328d6aea8522d833f4180eed1da3" +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2643,7 +2962,7 @@ lodash@4.17.5: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" -lodash@^4.17.4: +lodash@^4.13.1, lodash@^4.17.4, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -2815,7 +3134,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2902,6 +3221,10 @@ multimatch@^2.1.0: arrify "^1.0.0" minimatch "^3.0.0" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -2923,6 +3246,10 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + needle@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" @@ -3088,6 +3415,17 @@ option-chain@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-1.0.0.tgz#938d73bd4e1783f948d34023644ada23669e30f2" +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + 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" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -3096,7 +3434,7 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3229,7 +3567,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -3237,6 +3575,10 @@ path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -3300,22 +3642,42 @@ pkg-conf@^2.0.0: find-up "^2.0.0" load-json-file "^4.0.0" +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" dependencies: find-up "^2.1.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + dependencies: + find-up "^2.1.0" + plur@^2.0.0, plur@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" dependencies: irregular-plurals "^1.0.0" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -3324,6 +3686,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@^1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" + pretty-ms@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" @@ -3349,6 +3715,10 @@ process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -3523,6 +3893,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -3609,12 +3983,23 @@ require-precompiled@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" dependencies: resolve-from "^3.0.0" +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -3623,6 +4008,12 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +resolve@^1.5.0, resolve@^1.6.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -3634,7 +4025,7 @@ ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -3647,12 +4038,28 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" dependencies: aproba "^1.1.1" +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -3751,7 +4158,7 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slice-ansi@^1.0.0: +slice-ansi@1.0.0, slice-ansi@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" dependencies: @@ -3821,8 +4228,8 @@ source-map-support@^0.4.15: source-map "^0.5.6" source-map-support@^0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + version "0.5.5" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -3938,7 +4345,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -4035,6 +4442,17 @@ symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + 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" + tapable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" @@ -4057,7 +4475,7 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -text-table@^0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4068,6 +4486,10 @@ through2@^2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + time-zone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" @@ -4082,6 +4504,12 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -4144,6 +4572,12 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -4309,14 +4743,14 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -webassemblyjs@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.3.tgz#0591893efb8fbde74498251cbe4b2d83df9239cb" +webassemblyjs@1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.2.tgz#3b07b506917c97153d83441d8a88ffa2d25cc07d" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/validation" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - "@webassemblyjs/wast-parser" "1.4.3" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/validation" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" + "@webassemblyjs/wast-parser" "1.4.2" long "^3.2.0" webpack-sources@^1.0.1, webpack-sources@^1.1.0: @@ -4327,12 +4761,12 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-map "~0.6.1" webpack@^4.5.0: - version "4.8.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.3.tgz#957c8e80000f9e5cc03d775e78b472d8954f4eeb" + version "4.8.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.2.tgz#41aa00fd32a8f253a2f12a2da11c8ad4d52fde1c" dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/wasm-edit" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" + "@webassemblyjs/ast" "1.4.2" + "@webassemblyjs/wasm-edit" "1.4.2" + "@webassemblyjs/wasm-parser" "1.4.2" acorn "^5.0.0" acorn-dynamic-import "^3.0.0" ajv "^6.1.0" @@ -4375,7 +4809,7 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" -wordwrap@1.0.0: +wordwrap@1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -4423,6 +4857,12 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"