From e82c7eb16c1489c122e32cebcf291b8c10d7ac2b Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Mon, 12 Mar 2018 13:21:58 +0100 Subject: [PATCH 01/17] ast(refactor): wip refactor --- .yo-rc.json | 23 ++++++++ lib/ast/index.js | 19 +++++++ lib/generators/init-generator.js | 3 +- lib/init/index.js | 91 +++----------------------------- lib/utils/ast-utils.js | 59 +++++++++++---------- lib/utils/prop-types.js | 3 +- package.json | 1 + webpack.pengwings.js | 6 +++ 8 files changed, 91 insertions(+), 114 deletions(-) create mode 100644 .yo-rc.json create mode 100644 lib/ast/index.js create mode 100644 webpack.pengwings.js diff --git a/.yo-rc.json b/.yo-rc.json new file mode 100644 index 00000000000..8bbfdd09cc0 --- /dev/null +++ b/.yo-rc.json @@ -0,0 +1,23 @@ +{ + "webpack-addons-demo": { + "configuration": { + "dev": { + "webpackOptions": { + "entry": "ok", + "output": { + "filename": "[name].js" + }, + "context": "path.join(__dirname, \"src\")", + "plugins": [ + "new webpack.optimize.CommonsChunkPlugin({name:'k',filename:'k-[hash].min.js'})" + ] + }, + "topScope": [ + "const path = require(\"path\")", + "const webpack = require(\"webpack\")" + ], + "configName": "pengwings" + } + } + } +} \ No newline at end of file diff --git a/lib/ast/index.js b/lib/ast/index.js new file mode 100644 index 00000000000..b5e970fdada --- /dev/null +++ b/lib/ast/index.js @@ -0,0 +1,19 @@ +"use strict"; + +const utils = require("../utils/ast-utils"); + +module.exports = function astTransform(j, ast, value, action, key) { + const node = utils.findRootNodesByName(j, ast, key); + if(node.size() != 0) { + // push to existing key + } else { + // get module.exports prop + const root = ast.find(j.ObjectExpression).filter( p => { + return utils.safeTraverse(p, ['parentPath','value','left', 'object', 'name']) === 'module' && utils.safeTraverse(p,['parentPath', 'value', 'left', 'property', 'name']) === 'exports'; + }).filter(p => p.value.properties); + + return root.forEach(p => { + utils.addProperty(j, p, key, value); + }); + } +} \ No newline at end of file diff --git a/lib/generators/init-generator.js b/lib/generators/init-generator.js index 590b8a6982a..978e98c653c 100644 --- a/lib/generators/init-generator.js +++ b/lib/generators/init-generator.js @@ -383,7 +383,7 @@ module.exports = class InitGenerator extends Generator { done(); }); } - +/* installPlugins() { const asyncNamePrompt = this.async(); const defaultName = this.isProd ? "prod" : "config"; @@ -408,4 +408,5 @@ module.exports = class InitGenerator extends Generator { writing() { this.config.set("configuration", this.configuration); } + */ }; diff --git a/lib/init/index.js b/lib/init/index.js index bf03e4ae893..9d82537dec7 100644 --- a/lib/init/index.js +++ b/lib/init/index.js @@ -6,64 +6,8 @@ const chalk = require("chalk"); const pEachSeries = require("p-each-series"); const runPrettier = require("../utils/run-prettier"); - -const entryTransform = require("./transformations/entry/entry"); -const outputTransform = require("./transformations/output/output"); -const contextTransform = require("./transformations/context/context"); -const resolveTransform = require("./transformations/resolve/resolve"); -const devtoolTransform = require("./transformations/devtool/devtool"); -const targetTransform = require("./transformations/target/target"); -const watchTransform = require("./transformations/watch/watch"); -const watchOptionsTransform = require("./transformations/watch/watchOptions"); -const externalsTransform = require("./transformations/externals/externals"); -const nodeTransform = require("./transformations/node/node"); -const performanceTransform = require("./transformations/performance/performance"); -const statsTransform = require("./transformations/stats/stats"); -const amdTransform = require("./transformations/other/amd"); -const bailTransform = require("./transformations/other/bail"); -const cacheTransform = require("./transformations/other/cache"); -const profileTransform = require("./transformations/other/profile"); -const mergeTransform = require("./transformations/other/merge"); -const parallelismTransform = require("./transformations/other/parallelism"); -const recordsInputPathTransform = require("./transformations/other/recordsInputPath"); -const recordsOutputPathTransform = require("./transformations/other/recordsOutputPath"); -const recordsPathTransform = require("./transformations/other/recordsPath"); -const moduleTransform = require("./transformations/module/module"); -const pluginsTransform = require("./transformations/plugins/plugins"); -const topScopeTransform = require("./transformations/top-scope/top-scope"); -const devServerTransform = require("./transformations/devServer/devServer"); -const modeTransform = require("./transformations/mode/mode"); -const resolveLoaderTransform = require("./transformations/resolveLoader/resolveLoader"); - -const transformsObject = { - entryTransform, - outputTransform, - contextTransform, - resolveTransform, - devtoolTransform, - targetTransform, - watchTransform, - watchOptionsTransform, - externalsTransform, - nodeTransform, - performanceTransform, - statsTransform, - amdTransform, - bailTransform, - cacheTransform, - profileTransform, - moduleTransform, - pluginsTransform, - topScopeTransform, - mergeTransform, - devServerTransform, - modeTransform, - parallelismTransform, - recordsInputPathTransform, - recordsOutputPathTransform, - recordsPathTransform, - resolveLoaderTransform -}; +const astTransform = require("../ast"); +const propTypes = require("../utils/prop-types"); /** * @@ -75,27 +19,8 @@ const transformsObject = { * @returns {Object} - An Object with the transformations to be run */ -function mapOptionsToTransform(transformObject, config) { - return Object.keys(transformObject) - .map(transformKey => { - const stringVal = transformKey.substr( - 0, - transformKey.indexOf("Transform") - ); - if (Object.keys(config.webpackOptions).length) { - if (config.webpackOptions[stringVal]) { - return [ - transformObject[transformKey], - config.webpackOptions[stringVal] - ]; - } else { - return [transformObject[transformKey], config[stringVal]]; - } - } else { - return [transformObject[transformKey]]; - } - }) - .filter(e => e[1]); +function mapOptionsToTransform(config) { + return Object.keys(config.webpackOptions).filter(k => propTypes.has(k)) } /** @@ -117,7 +42,7 @@ module.exports = function runTransform(webpackProperties, action) { webpackConfig.forEach(scaffoldPiece => { const config = webpackProperties[scaffoldPiece]; - const transformations = mapOptionsToTransform(transformsObject, config); + const transformations = mapOptionsToTransform(config); const ast = j( initActionNotDefined ? webpackProperties.configFile @@ -126,11 +51,7 @@ module.exports = function runTransform(webpackProperties, action) { const transformAction = action || null; return pEachSeries(transformations, f => { - if (!f[1]) { - return f[0](j, ast, transformAction); - } else { - return f[0](j, ast, f[1], transformAction); - } + return astTransform(j, ast, config.webpackOptions[f], transformAction, f); }) .then(_ => { let configurationName; diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 8075c354b5c..8883da3ddce 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -1,5 +1,5 @@ const hashtable = require("./hashtable"); - +var recast = require("recast"); function safeTraverse(obj, paths) { let val = obj; let idx = 0; @@ -551,30 +551,6 @@ function pushObjectKeys(j, p, webpackProperties, name, reassign) { }); } -/** - * - * Checks if we are at the correct node and later invokes a callback - * for the transforms to either use their own transform function or - * use pushCreateProperty if the transform doesn't expect any properties - * - * @param {any} j — jscodeshift API - * @param {Node} p - Node to push against - * @param {Function} cb - callback to be invoked - * @param {String} identifier - key to use as property - * @param {Object} property - WebpackOptions that later will be converted via - * pushCreateProperty via WebpackOptions[identifier] - * @returns {Function} cb - Returns the callback and pushes a new node - */ - -function isAssignment(j, p, cb, identifier, property) { - if (p.parent.value.type === "AssignmentExpression") { - if (j) { - return cb(j, p, identifier, property); - } else { - return cb(p); - } - } -} /** * @@ -651,6 +627,35 @@ function createFunctionWithArguments(j, p, name) { ]); } +function addUniqueProp(j, p, key, value) { + return +} + +function addProperty(j, p, key, value) { + let valForNode; + if(!key) { + console.log("No key") + return; + } + if(Array.isArray(value)) { + valForNode = j.literal("Ok"); + } + else if(typeof value === "object") { + // object -> loop through it + valForNode = j.literal("ok") + } + else { + valForNode = createIdentifierOrLiteral(j, value); + // Number + } + + const method = j.property( + "init", + createLiteral(j, key), + valForNode + ); + p.value.properties.push(method); +} module.exports = { safeTraverse, createProperty, @@ -671,6 +676,6 @@ module.exports = { createFunctionWithArguments, pushCreateProperty, pushObjectKeys, - isAssignment, - loopThroughObjects + loopThroughObjects, + addProperty }; diff --git a/lib/utils/prop-types.js b/lib/utils/prop-types.js index 7d3bff7c0a3..0df2c1f0d49 100644 --- a/lib/utils/prop-types.js +++ b/lib/utils/prop-types.js @@ -31,5 +31,6 @@ module.exports = new Set([ "recordsInputPath", "recordsOutputPath", "recordsPath", - "resolveLoader" + "resolveLoader", + "topScope" ]); diff --git a/package.json b/package.json index cad6234b2b1..4b303aa48ff 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "p-each-series": "^1.0.0", "p-lazy": "^1.0.0", "prettier": "^1.5.3", + "recast": "^0.14.5", "resolve-cwd": "^2.0.0", "supports-color": "^5.3.0", "v8-compile-cache": "^1.1.2", diff --git a/webpack.pengwings.js b/webpack.pengwings.js new file mode 100644 index 00000000000..3b107a291d7 --- /dev/null +++ b/webpack.pengwings.js @@ -0,0 +1,6 @@ +module.exports = { + entry: ok, + output: 'ok', + context: path.join(__dirname, 'src'), + plugins: 'Ok' +}; From c3880428e45e53305caeee595e4257a710be14bf Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Mon, 12 Mar 2018 13:22:23 +0100 Subject: [PATCH 02/17] ast(refactor): wip refactor --- lib/utils/ast-utils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 8883da3ddce..0d11f63377d 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -646,7 +646,6 @@ function addProperty(j, p, key, value) { } else { valForNode = createIdentifierOrLiteral(j, value); - // Number } const method = j.property( From a573ff8aae35cf662e2d192a9e476b12ebe56a99 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Wed, 14 Mar 2018 11:14:44 +0100 Subject: [PATCH 03/17] ast(init): refactor --- .yo-rc.json | 2 +- lib/ast/index.js | 44 ++- lib/generate-plugin/index.js | 3 +- lib/generators/init-generator.js | 6 +- lib/init/index.js | 4 +- .../top-scope/top-scope.test.js | 8 +- lib/utils/ast-utils.js | 346 ++---------------- webpack.pengwings.js | 6 - 8 files changed, 73 insertions(+), 346 deletions(-) delete mode 100644 webpack.pengwings.js diff --git a/.yo-rc.json b/.yo-rc.json index 8bbfdd09cc0..2034c613586 100644 --- a/.yo-rc.json +++ b/.yo-rc.json @@ -5,7 +5,7 @@ "webpackOptions": { "entry": "ok", "output": { - "filename": "[name].js" + "filename": "'[name].js'" }, "context": "path.join(__dirname, \"src\")", "plugins": [ diff --git a/lib/ast/index.js b/lib/ast/index.js index b5e970fdada..830323de3d5 100644 --- a/lib/ast/index.js +++ b/lib/ast/index.js @@ -3,17 +3,35 @@ const utils = require("../utils/ast-utils"); module.exports = function astTransform(j, ast, value, action, key) { - const node = utils.findRootNodesByName(j, ast, key); - if(node.size() != 0) { - // push to existing key - } else { - // get module.exports prop - const root = ast.find(j.ObjectExpression).filter( p => { - return utils.safeTraverse(p, ['parentPath','value','left', 'object', 'name']) === 'module' && utils.safeTraverse(p,['parentPath', 'value', 'left', 'property', 'name']) === 'exports'; - }).filter(p => p.value.properties); + const node = utils.findRootNodesByName(j, ast, key); + if (node.size() !== 0) { + // push to existing key + } else { + // get module.exports prop + const root = ast + .find(j.ObjectExpression) + .filter(p => { + return ( + utils.safeTraverse(p, [ + "parentPath", + "value", + "left", + "object", + "name" + ]) === "module" && + utils.safeTraverse(p, [ + "parentPath", + "value", + "left", + "property", + "name" + ]) === "exports" + ); + }) + .filter(p => p.value.properties); - return root.forEach(p => { - utils.addProperty(j, p, key, value); - }); - } -} \ No newline at end of file + return root.forEach(p => { + utils.addProperty(j, p, key, value); + }); + } +}; diff --git a/lib/generate-plugin/index.js b/lib/generate-plugin/index.js index a6b05c02206..a344b975f80 100644 --- a/lib/generate-plugin/index.js +++ b/lib/generate-plugin/index.js @@ -1,5 +1,6 @@ const yeoman = require("yeoman-environment"); -const PluginGenerator = require("../generators/plugin-generator").PluginGenerator; +const PluginGenerator = require("../generators/plugin-generator") + .PluginGenerator; /** * Runs a yeoman generator to create a new webpack plugin project diff --git a/lib/generators/init-generator.js b/lib/generators/init-generator.js index 978e98c653c..bf7f4ad083f 100644 --- a/lib/generators/init-generator.js +++ b/lib/generators/init-generator.js @@ -115,7 +115,9 @@ module.exports = class InitGenerator extends Generator { Confirm("prodConfirm", "Are you going to use this in production?") ]); }) - .then(prodConfirmAnswer => this.isProd = prodConfirmAnswer["prodConfirm"]) + .then( + prodConfirmAnswer => (this.isProd = prodConfirmAnswer["prodConfirm"]) + ) .then(() => { return this.prompt([ Confirm("babelConfirm", "Will you be using ES2015?") @@ -383,7 +385,7 @@ module.exports = class InitGenerator extends Generator { done(); }); } -/* + /* installPlugins() { const asyncNamePrompt = this.async(); const defaultName = this.isProd ? "prod" : "config"; diff --git a/lib/init/index.js b/lib/init/index.js index 9d82537dec7..b0c2091ecf2 100644 --- a/lib/init/index.js +++ b/lib/init/index.js @@ -20,7 +20,7 @@ const propTypes = require("../utils/prop-types"); */ function mapOptionsToTransform(config) { - return Object.keys(config.webpackOptions).filter(k => propTypes.has(k)) + return Object.keys(config.webpackOptions).filter(k => propTypes.has(k)); } /** @@ -51,7 +51,7 @@ module.exports = function runTransform(webpackProperties, action) { const transformAction = action || null; return pEachSeries(transformations, f => { - return astTransform(j, ast, config.webpackOptions[f], transformAction, f); + return astTransform(j, ast, config.webpackOptions[f], transformAction, f); }) .then(_ => { let configurationName; diff --git a/lib/init/transformations/top-scope/top-scope.test.js b/lib/init/transformations/top-scope/top-scope.test.js index 559a40e4e28..22f8f5885bc 100644 --- a/lib/init/transformations/top-scope/top-scope.test.js +++ b/lib/init/transformations/top-scope/top-scope.test.js @@ -2,7 +2,13 @@ const defineTest = require("../../../utils/defineTest"); -defineTest(__dirname, "top-scope", "top-scope-0", ["const test = 'me';"], "init"); +defineTest( + __dirname, + "top-scope", + "top-scope-0", + ["const test = 'me';"], + "init" +); defineTest( __dirname, "top-scope", diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 0d11f63377d..ee80921241b 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -1,5 +1,5 @@ const hashtable = require("./hashtable"); -var recast = require("recast"); + function safeTraverse(obj, paths) { let val = obj; let idx = 0; @@ -283,30 +283,6 @@ function getRequire(j, constName, packagePath) { ]); } -/** - * - * If a prop exists, it overrides it, else it creates a new one - * @param {any} j — jscodeshift API - * @param {Node} node - objectexpression to check - * @param {String} key - Key of the property - * @param {String} value - computed value of the property - * @returns {Void} - */ - -function checkIfExistsAndAddValue(j, node, key, value) { - const existingProp = node.value.properties.filter( - prop => prop.key.name === key - ); - let prop; - if (existingProp.length > 0) { - prop = existingProp[0]; - prop.value = value; - } else { - prop = j.property("init", j.identifier(key), value); - node.value.properties.push(prop); - } -} - /** * * Creates an empty array @@ -329,84 +305,12 @@ function createEmptyArrayProperty(j, key) { * @returns {Array} arr - An array with the object properties */ -function createArrayWithChildren(j, key, subProps, shouldDropKeys) { - let arr = createEmptyArrayProperty(j, key); - if (shouldDropKeys) { - subProps.forEach(subProperty => { - let objectOfArray = j.objectExpression([]); - if (typeof subProperty !== "string") { - loopThroughObjects(j, objectOfArray, subProperty); - arr.value.elements.push(objectOfArray); - } else { - return arr.value.elements.push( - createIdentifierOrLiteral(j, subProperty) - ); - } - }); - } else { - Object.keys(subProps[key]).forEach(subProperty => { - arr.value.elements.push( - createIdentifierOrLiteral(j, subProps[key][subProperty]) - ); - }); - } - return arr; -} - -/** - * - * Loops through an object and adds property to an object with no identifier - * @param {any} j — jscodeshift API - * @param {Node} p - node to add value to - * @param {Object} obj - Object to loop through - * @returns {Function | Node} - Either pushes the node, or reruns until - * nothing is left - */ - -function loopThroughObjects(j, p, obj) { - Object.keys(obj).forEach(prop => { - if (prop.indexOf("inject") >= 0) { - // TODO to insert the type of node, identifier or literal - const propertyExpression = createIdentifierOrLiteral(j, obj[prop]); - return p.properties.push(propertyExpression); - } - // eslint-disable-next-line no-irregular-whitespace - if (typeof obj[prop] !== "object" || obj[prop] instanceof RegExp) { - p.properties.push( - createObjectWithSuppliedProperty( - j, - prop, - createIdentifierOrLiteral(j, obj[prop]) - ) - ); - } else if (Array.isArray(obj[prop])) { - let arrayProp = createArrayWithChildren(j, prop, obj[prop], true); - p.properties.push(arrayProp); - } else { - let objectBlock = j.objectExpression([]); - let propertyOfBlock = createObjectWithSuppliedProperty( - j, - prop, - objectBlock - ); - loopThroughObjects(j, objectBlock, obj[prop]); - p.properties.push(propertyOfBlock); - } +function createArrayWithChildren(j, values) { + let arr = j.arrayExpression([]); + values.forEach(prop => { + return arr.elements.push(j(prop).toSource()); }); -} - -/** - * - * Creates an object with an supplied property as parameter - * - * @param {any} j — jscodeshift API - * @param {String} key - object name - * @param {Node} prop - property to be added - * @returns {Node} - An property with the supplied property - */ - -function createObjectWithSuppliedProperty(j, key, prop) { - return j.property("init", j.identifier(key), prop); + return arr; } /** @@ -422,36 +326,6 @@ function createExternalRegExp(j, prop) { return j.literal(regExpProp.value); } -/** - * - * Creates a property and pushes the value to a node - * - * @param {any} j — jscodeshift API - * @param {Node} p - Node to push against - * @param {String} key - key used as identifier - * @param {String} val - property value - * @returns {Node} - Returns node the pushed property - */ - -function pushCreateProperty(j, p, key, val) { - let property; - const findProp = findRootNodesByName(j, j(p), key); - if (findProp.size()) { - findProp.filter(p => { - p.value.value = createIdentifierOrLiteral(j, val); - }); - } else { - if (val.hasOwnProperty("type")) { - property = val; - } else { - property = createIdentifierOrLiteral(j, val); - } - return p.value.properties.push( - createObjectWithSuppliedProperty(j, key, property) - ); - } -} - /** * * @param {any} j — jscodeshift API @@ -462,198 +336,35 @@ function pushCreateProperty(j, p, key, val) { * subProperty is an array, else it will invoke a function that will push a single node */ -function pushObjectKeys(j, p, webpackProperties, name, reassign) { - p.value.properties - .filter(n => safeTraverse(n, ["key", "name"]) === name) - .forEach(prop => { - Object.keys(webpackProperties).forEach(webpackProp => { - try { - webpackProperties[webpackProp] = JSON.parse( - webpackProperties[webpackProp] - ); - } catch (err) {} - - if (webpackProp.indexOf("inject") >= 0) { - if (reassign) { - return checkIfExistsAndAddValue( - j, - prop, - webpackProp, - webpackProperties[webpackProp] - ); - } else { - return prop.value.properties.push( - createIdentifierOrLiteral(j, webpackProperties[webpackProp]) - ); - } - } else if (Array.isArray(webpackProperties[webpackProp])) { - if (reassign) { - return j(p) - .find(j.Property, { key: { name: webpackProp } }) - .filter(props => props.value.key.name === webpackProp) - .forEach(property => { - let markedProps = []; - let propsToMerge = []; - property.value.value.elements.forEach(elem => { - if (elem.value) { - markedProps.push(elem.value); - } - }); - webpackProperties[webpackProp].forEach(underlyingprop => { - if (typeof underlyingprop === "object") { - //TODO loaders - return; - } - if (!markedProps.includes(underlyingprop)) { - propsToMerge.push(underlyingprop); - } - }); - const hashtableForProps = hashtable(propsToMerge); - hashtableForProps.forEach(elem => { - property.value.value.elements.push( - createIdentifierOrLiteral(j, elem) - ); - }); - }); - } else { - const propArray = createArrayWithChildren( - j, - webpackProp, - webpackProperties[webpackProp], - true - ); - return prop.value.properties.push(propArray); - } - } else if ( - typeof webpackProperties[webpackProp] !== "object" || - webpackProperties[webpackProp].__paths || - webpackProperties[webpackProp] instanceof RegExp - ) { - return pushCreateProperty( - j, - prop, - webpackProp, - webpackProperties[webpackProp] - ); - } else { - if (!reassign) { - pushCreateProperty(j, prop, webpackProp, j.objectExpression([])); - } - return pushObjectKeys( - j, - prop, - webpackProperties[webpackProp], - webpackProp, - reassign - ); - } - }); - }); -} - - -/** - * - * Creates a function call with arguments - * @param {any} j — jscodeshift API - * @param {Node} p - Node to push against - * @param {String} name - Name for the given function - * @returns {Node} - Returns the node for the created - * function - */ - -function createFunctionWithArguments(j, p, name) { - if (typeof name === "object") { - let node; - Object.keys(name).forEach(key => { - const pluginExist = findPluginsByName(j, j(p), [key]); - if (pluginExist.size() !== 0) { - let pluginName = - key.indexOf("webpack") >= 0 - ? key.indexOf("webpack.optimize") >= 0 - ? key.replace("webpack.optimize.", " ") - : key.replace("webpack.", " ") - : key; - pluginExist - .filter( - p => pluginName.trim(" ") === p.value.callee.property.name.trim(" ") - ) - .forEach(n => { - Object.keys(name[key]).forEach(subKey => { - const foundNode = findRootNodesByName(j, j(n), subKey); - if (foundNode.size() !== 0) { - foundNode.forEach(n => { - j(n).replaceWith( - createObjectWithSuppliedProperty( - j, - subKey, - createIdentifierOrLiteral(j, name[key][subKey]) - ) - ); - node = createObjectWithSuppliedProperty( - j, - subKey, - createIdentifierOrLiteral(j, name[key][subKey]) - ); - }); - } else { - const method = j.property( - "init", - createLiteral(j, subKey), - createIdentifierOrLiteral(j, name[key][subKey]) - ); - n.value.arguments[0].properties.push(method); - node = null; - //node.arguments.push(j.objectExpression([method])); - } - }); - }); - return node; - } - node = j.newExpression(j.identifier(key), []); - return Object.keys(name[key]).forEach(subKey => { - const method = createObjectWithSuppliedProperty( - j, - subKey, - createIdentifierOrLiteral(j, name[key][subKey]) - ); - node.arguments.push(j.objectExpression([method])); - }); - }); - return node; - } - return j.callExpression(j.identifier(name), [ - j.literal("/* Add your arguments here */") - ]); -} - -function addUniqueProp(j, p, key, value) { - return +function pushObjectKeys(j, p, values) { + let objExp = j.objectExpression([]); + Object.keys(values).forEach(prop => { + addProperty(j, objExp, prop, values[prop]); + }); + return objExp; } function addProperty(j, p, key, value) { let valForNode; - if(!key) { - console.log("No key") + if (!key) { + console.log("No key"); return; } - if(Array.isArray(value)) { - valForNode = j.literal("Ok"); - } - else if(typeof value === "object") { + if (Array.isArray(value)) { + valForNode = createArrayWithChildren(j, value); + } else if (typeof value === "object") { // object -> loop through it - valForNode = j.literal("ok") - } - else { + valForNode = pushObjectKeys(j, p, value); + } else { valForNode = createIdentifierOrLiteral(j, value); } - - const method = j.property( - "init", - createLiteral(j, key), - valForNode - ); - p.value.properties.push(method); + const method = j.property("init", j.identifier(key), valForNode); + if (p.properties) { + p.properties.push(method); + } else { + p.value.properties.push(method); + } + return p; } module.exports = { safeTraverse, @@ -667,14 +378,9 @@ module.exports = { createIdentifierOrLiteral, findObjWithOneOfKeys, getRequire, - checkIfExistsAndAddValue, createArrayWithChildren, createEmptyArrayProperty, - createObjectWithSuppliedProperty, createExternalRegExp, - createFunctionWithArguments, - pushCreateProperty, pushObjectKeys, - loopThroughObjects, addProperty }; diff --git a/webpack.pengwings.js b/webpack.pengwings.js deleted file mode 100644 index 3b107a291d7..00000000000 --- a/webpack.pengwings.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: ok, - output: 'ok', - context: path.join(__dirname, 'src'), - plugins: 'Ok' -}; From 15edbb294c93ba69dbe1dae73ceddb46659755f2 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Wed, 14 Mar 2018 11:54:40 +0100 Subject: [PATCH 04/17] test(refactor): refactor test suite --- lib/ast/__snapshots__/ast.test.js.snap | 1199 +++++++++++++++++ .../__testfixtures__/context-0.input.js | 0 .../__testfixtures__/context-1.input.js | 0 .../__testfixtures__/context-2.input.js | 0 .../__testfixtures__/context-3.input.js | 0 .../__testfixtures__/context-4.input.js | 0 .../__testfixtures__/devServer-0.input.js | 0 .../__testfixtures__/devServer-1.input.js | 0 .../__testfixtures__/devServer-2.input.js | 0 .../__testfixtures__/devServer-3.input.js | 0 .../__testfixtures__/devServer-4.input.js | 0 .../__testfixtures__/devtool-0.input.js | 0 .../__testfixtures__/devtool-1.input.js | 0 .../__testfixtures__/devtool-2.input.js | 0 .../__testfixtures__/devtool-3.input.js | 0 .../__testfixtures__/devtool-4.input.js | 0 .../__testfixtures__/entry-0.input.js | 0 .../__testfixtures__/entry-1.input.js | 0 .../__testfixtures__/externals-0.input.js | 0 .../__testfixtures__/externals-1.input.js | 0 .../__testfixtures__/externals-2.input.js | 0 .../__testfixtures__/mode-1.input.js | 0 .../__testfixtures__/mode-2.input.js | 0 .../__testfixtures__/module-0.input.js | 0 .../__testfixtures__/module-1.input.js | 0 .../__testfixtures__/module-2.input.js | 0 .../__testfixtures__/node-0.input.js | 0 .../__testfixtures__/other-0.input.js | 0 .../__testfixtures__/other-1.input.js | 0 .../__testfixtures__/output-0.input.js | 0 .../__testfixtures__/output-1.input.js | 0 .../__testfixtures__/performance-0.input.js | 0 .../__testfixtures__/performance-1.input.js | 0 .../__testfixtures__/plugins-0.input.js | 0 .../__testfixtures__/plugins-1.input.js | 0 .../__testfixtures__/resolve-0.input.js | 0 .../__testfixtures__/resolve-1.input.js | 0 .../__testfixtures__/resolveLoader-0.input.js | 0 .../__testfixtures__/resolveLoader-1.input.js | 0 .../__testfixtures__/stats-0.input.js | 0 .../__testfixtures__/stats-1.input.js | 0 .../__testfixtures__/target-0.input.js | 0 .../__testfixtures__/target-1.input.js | 0 .../__testfixtures__/target-2.input.js | 0 .../__testfixtures__/top-scope-0.input.js | 0 .../__testfixtures__/top-scope-1.input.js | 0 .../__testfixtures__/watch-0.input.js | 0 .../__testfixtures__/watch-1.input.js | 0 .../__testfixtures__/watch-2.input.js | 0 .../__testfixtures__/watch-3.input.js | 0 .../__testfixtures__/watch-4.input.js | 0 lib/ast/ast.test.js | 1033 ++++++++++++++ lib/generators/init-generator.js | 2 +- .../__snapshots__/context.test.js.snap | 56 - lib/init/transformations/context/context.js | 55 - .../transformations/context/context.test.js | 16 - .../__snapshots__/devServer.test.js.snap | 74 - .../transformations/devServer/devServer.js | 89 -- .../devServer/devServer.test.js | 41 - .../__snapshots__/devtool.test.js.snap | 114 -- lib/init/transformations/devtool/devtool.js | 54 - .../transformations/devtool/devtool.test.js | 26 - .../entry/__snapshots__/entry.test.js.snap | 114 -- lib/init/transformations/entry/entry.js | 85 -- lib/init/transformations/entry/entry.test.js | 71 - .../__snapshots__/externals.test.js.snap | 146 -- .../transformations/externals/externals.js | 109 -- .../externals/externals.test.js | 204 --- .../mode/__snapshots__/mode.test.js.snap | 29 - lib/init/transformations/mode/mode.js | 55 - lib/init/transformations/mode/mode.test.js | 9 - .../module/__snapshots__/module.test.js.snap | 257 ---- lib/init/transformations/module/module.js | 73 - .../transformations/module/module.test.js | 248 ---- .../node/__snapshots__/node.test.js.snap | 22 - lib/init/transformations/node/node.js | 44 - lib/init/transformations/node/node.test.js | 19 - .../other/__snapshots__/other.test.js.snap | 316 ----- lib/init/transformations/other/amd.js | 84 -- lib/init/transformations/other/bail.js | 55 - lib/init/transformations/other/cache.js | 88 -- lib/init/transformations/other/merge.js | 47 - lib/init/transformations/other/other.test.js | 81 -- lib/init/transformations/other/parallelism.js | 60 - lib/init/transformations/other/profile.js | 88 -- .../transformations/other/recordsInputPath.js | 100 -- .../other/recordsOutputPath.js | 100 -- lib/init/transformations/other/recordsPath.js | 89 -- .../output/__snapshots__/output.test.js.snap | 36 - lib/init/transformations/output/output.js | 84 -- .../transformations/output/output.test.js | 35 - .../__snapshots__/performance.test.js.snap | 32 - .../performance/performance.js | 92 -- .../performance/performance.test.js | 32 - .../__snapshots__/plugins.test.js.snap | 43 - lib/init/transformations/plugins/plugins.js | 56 - .../transformations/plugins/plugins.test.js | 36 - .../__snapshots__/resolve.test.js.snap | 68 - lib/init/transformations/resolve/resolve.js | 73 - .../transformations/resolve/resolve.test.js | 52 - .../__snapshots__/resolveLoader.test.js.snap | 31 - .../resolveLoader/resolveLoader.js | 85 -- .../resolveLoader/resolveLoader.test.js | 27 - .../stats/__snapshots__/stats.test.js.snap | 110 -- lib/init/transformations/stats/stats.js | 84 -- lib/init/transformations/stats/stats.test.js | 76 -- .../target/__snapshots__/target.test.js.snap | 65 - lib/init/transformations/target/target.js | 55 - .../transformations/target/target.test.js | 10 - .../__snapshots__/top-scope.test.js.snap | 14 - .../transformations/top-scope/top-scope.js | 29 - .../top-scope/top-scope.test.js | 18 - .../watch/__snapshots__/watch.test.js.snap | 93 -- .../__snapshots__/watchOptions.test.js.snap | 101 -- lib/init/transformations/watch/watch.js | 85 -- lib/init/transformations/watch/watch.test.js | 13 - .../transformations/watch/watchOptions.js | 100 -- .../watch/watchOptions.test.js | 71 - .../__snapshots__/ast-utils.test.js.snap | 61 +- lib/utils/ast-utils.js | 2 - lib/utils/ast-utils.test.js | 142 +- lib/utils/defineTest.js | 8 +- 122 files changed, 2244 insertions(+), 5027 deletions(-) create mode 100644 lib/ast/__snapshots__/ast.test.js.snap rename lib/{init/transformations/context => ast}/__testfixtures__/context-0.input.js (100%) rename lib/{init/transformations/context => ast}/__testfixtures__/context-1.input.js (100%) rename lib/{init/transformations/context => ast}/__testfixtures__/context-2.input.js (100%) rename lib/{init/transformations/context => ast}/__testfixtures__/context-3.input.js (100%) rename lib/{init/transformations/context => ast}/__testfixtures__/context-4.input.js (100%) rename lib/{init/transformations/devServer => ast}/__testfixtures__/devServer-0.input.js (100%) rename lib/{init/transformations/devServer => ast}/__testfixtures__/devServer-1.input.js (100%) rename lib/{init/transformations/devServer => ast}/__testfixtures__/devServer-2.input.js (100%) rename lib/{init/transformations/devServer => ast}/__testfixtures__/devServer-3.input.js (100%) rename lib/{init/transformations/devServer => ast}/__testfixtures__/devServer-4.input.js (100%) rename lib/{init/transformations/devtool => ast}/__testfixtures__/devtool-0.input.js (100%) rename lib/{init/transformations/devtool => ast}/__testfixtures__/devtool-1.input.js (100%) rename lib/{init/transformations/devtool => ast}/__testfixtures__/devtool-2.input.js (100%) rename lib/{init/transformations/devtool => ast}/__testfixtures__/devtool-3.input.js (100%) rename lib/{init/transformations/devtool => ast}/__testfixtures__/devtool-4.input.js (100%) rename lib/{init/transformations/entry => ast}/__testfixtures__/entry-0.input.js (100%) rename lib/{init/transformations/entry => ast}/__testfixtures__/entry-1.input.js (100%) rename lib/{init/transformations/externals => ast}/__testfixtures__/externals-0.input.js (100%) rename lib/{init/transformations/externals => ast}/__testfixtures__/externals-1.input.js (100%) rename lib/{init/transformations/externals => ast}/__testfixtures__/externals-2.input.js (100%) rename lib/{init/transformations/mode => ast}/__testfixtures__/mode-1.input.js (100%) rename lib/{init/transformations/mode => ast}/__testfixtures__/mode-2.input.js (100%) rename lib/{init/transformations/module => ast}/__testfixtures__/module-0.input.js (100%) rename lib/{init/transformations/module => ast}/__testfixtures__/module-1.input.js (100%) rename lib/{init/transformations/module => ast}/__testfixtures__/module-2.input.js (100%) rename lib/{init/transformations/node => ast}/__testfixtures__/node-0.input.js (100%) rename lib/{init/transformations/other => ast}/__testfixtures__/other-0.input.js (100%) rename lib/{init/transformations/other => ast}/__testfixtures__/other-1.input.js (100%) rename lib/{init/transformations/output => ast}/__testfixtures__/output-0.input.js (100%) rename lib/{init/transformations/output => ast}/__testfixtures__/output-1.input.js (100%) rename lib/{init/transformations/performance => ast}/__testfixtures__/performance-0.input.js (100%) rename lib/{init/transformations/performance => ast}/__testfixtures__/performance-1.input.js (100%) rename lib/{init/transformations/plugins => ast}/__testfixtures__/plugins-0.input.js (100%) rename lib/{init/transformations/plugins => ast}/__testfixtures__/plugins-1.input.js (100%) rename lib/{init/transformations/resolve => ast}/__testfixtures__/resolve-0.input.js (100%) rename lib/{init/transformations/resolve => ast}/__testfixtures__/resolve-1.input.js (100%) rename lib/{init/transformations/resolveLoader => ast}/__testfixtures__/resolveLoader-0.input.js (100%) rename lib/{init/transformations/resolveLoader => ast}/__testfixtures__/resolveLoader-1.input.js (100%) rename lib/{init/transformations/stats => ast}/__testfixtures__/stats-0.input.js (100%) rename lib/{init/transformations/stats => ast}/__testfixtures__/stats-1.input.js (100%) rename lib/{init/transformations/target => ast}/__testfixtures__/target-0.input.js (100%) rename lib/{init/transformations/target => ast}/__testfixtures__/target-1.input.js (100%) rename lib/{init/transformations/target => ast}/__testfixtures__/target-2.input.js (100%) rename lib/{init/transformations/top-scope => ast}/__testfixtures__/top-scope-0.input.js (100%) rename lib/{init/transformations/top-scope => ast}/__testfixtures__/top-scope-1.input.js (100%) rename lib/{init/transformations/watch => ast}/__testfixtures__/watch-0.input.js (100%) rename lib/{init/transformations/watch => ast}/__testfixtures__/watch-1.input.js (100%) rename lib/{init/transformations/watch => ast}/__testfixtures__/watch-2.input.js (100%) rename lib/{init/transformations/watch => ast}/__testfixtures__/watch-3.input.js (100%) rename lib/{init/transformations/watch => ast}/__testfixtures__/watch-4.input.js (100%) create mode 100644 lib/ast/ast.test.js delete mode 100644 lib/init/transformations/context/__snapshots__/context.test.js.snap delete mode 100644 lib/init/transformations/context/context.js delete mode 100644 lib/init/transformations/context/context.test.js delete mode 100644 lib/init/transformations/devServer/__snapshots__/devServer.test.js.snap delete mode 100644 lib/init/transformations/devServer/devServer.js delete mode 100644 lib/init/transformations/devServer/devServer.test.js delete mode 100644 lib/init/transformations/devtool/__snapshots__/devtool.test.js.snap delete mode 100644 lib/init/transformations/devtool/devtool.js delete mode 100644 lib/init/transformations/devtool/devtool.test.js delete mode 100644 lib/init/transformations/entry/__snapshots__/entry.test.js.snap delete mode 100644 lib/init/transformations/entry/entry.js delete mode 100644 lib/init/transformations/entry/entry.test.js delete mode 100644 lib/init/transformations/externals/__snapshots__/externals.test.js.snap delete mode 100644 lib/init/transformations/externals/externals.js delete mode 100644 lib/init/transformations/externals/externals.test.js delete mode 100644 lib/init/transformations/mode/__snapshots__/mode.test.js.snap delete mode 100644 lib/init/transformations/mode/mode.js delete mode 100644 lib/init/transformations/mode/mode.test.js delete mode 100644 lib/init/transformations/module/__snapshots__/module.test.js.snap delete mode 100644 lib/init/transformations/module/module.js delete mode 100644 lib/init/transformations/module/module.test.js delete mode 100644 lib/init/transformations/node/__snapshots__/node.test.js.snap delete mode 100644 lib/init/transformations/node/node.js delete mode 100644 lib/init/transformations/node/node.test.js delete mode 100644 lib/init/transformations/other/__snapshots__/other.test.js.snap delete mode 100644 lib/init/transformations/other/amd.js delete mode 100644 lib/init/transformations/other/bail.js delete mode 100644 lib/init/transformations/other/cache.js delete mode 100644 lib/init/transformations/other/merge.js delete mode 100644 lib/init/transformations/other/other.test.js delete mode 100644 lib/init/transformations/other/parallelism.js delete mode 100644 lib/init/transformations/other/profile.js delete mode 100644 lib/init/transformations/other/recordsInputPath.js delete mode 100644 lib/init/transformations/other/recordsOutputPath.js delete mode 100644 lib/init/transformations/other/recordsPath.js delete mode 100644 lib/init/transformations/output/__snapshots__/output.test.js.snap delete mode 100644 lib/init/transformations/output/output.js delete mode 100644 lib/init/transformations/output/output.test.js delete mode 100644 lib/init/transformations/performance/__snapshots__/performance.test.js.snap delete mode 100644 lib/init/transformations/performance/performance.js delete mode 100644 lib/init/transformations/performance/performance.test.js delete mode 100644 lib/init/transformations/plugins/__snapshots__/plugins.test.js.snap delete mode 100644 lib/init/transformations/plugins/plugins.js delete mode 100644 lib/init/transformations/plugins/plugins.test.js delete mode 100644 lib/init/transformations/resolve/__snapshots__/resolve.test.js.snap delete mode 100644 lib/init/transformations/resolve/resolve.js delete mode 100644 lib/init/transformations/resolve/resolve.test.js delete mode 100644 lib/init/transformations/resolveLoader/__snapshots__/resolveLoader.test.js.snap delete mode 100644 lib/init/transformations/resolveLoader/resolveLoader.js delete mode 100644 lib/init/transformations/resolveLoader/resolveLoader.test.js delete mode 100644 lib/init/transformations/stats/__snapshots__/stats.test.js.snap delete mode 100644 lib/init/transformations/stats/stats.js delete mode 100644 lib/init/transformations/stats/stats.test.js delete mode 100644 lib/init/transformations/target/__snapshots__/target.test.js.snap delete mode 100644 lib/init/transformations/target/target.js delete mode 100644 lib/init/transformations/target/target.test.js delete mode 100644 lib/init/transformations/top-scope/__snapshots__/top-scope.test.js.snap delete mode 100644 lib/init/transformations/top-scope/top-scope.js delete mode 100644 lib/init/transformations/top-scope/top-scope.test.js delete mode 100644 lib/init/transformations/watch/__snapshots__/watch.test.js.snap delete mode 100644 lib/init/transformations/watch/__snapshots__/watchOptions.test.js.snap delete mode 100644 lib/init/transformations/watch/watch.js delete mode 100644 lib/init/transformations/watch/watch.test.js delete mode 100644 lib/init/transformations/watch/watchOptions.js delete mode 100644 lib/init/transformations/watch/watchOptions.test.js diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap new file mode 100644 index 00000000000..2f342587a35 --- /dev/null +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -0,0 +1,1199 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`amd transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`amd transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`bail transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`bail transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`cache transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`cache transforms correctly using "other-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`cache transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`cache transforms correctly using "other-1" data 2`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`context transforms correctly using "context-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`context transforms correctly using "context-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`context transforms correctly using "context-2" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`context transforms correctly using "context-3" data 1`] = ` +"module.exports = { + entry: 'index.js', +} +" +`; + +exports[`context transforms correctly using "context-4" data 1`] = ` +"module.exports = { + entry: 'index.js', + context: 'reassign me like one of your french girls' +} +" +`; + +exports[`devServer transforms correctly using "devServer-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, +} +" +`; + +exports[`devServer transforms correctly using "devServer-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devServer transforms correctly using "devServer-2" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devServer transforms correctly using "devServer-3" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000 +} +} +" +`; + +exports[`devServer transforms correctly using "devServer-4" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + devServer: { + empti: \\"ness\\" + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-1" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-2" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-3" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-3" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`devtool transforms correctly using "devtool-4" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + devtool: 'eval' +} +" +`; + +exports[`devtool transforms correctly using "devtool-4" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + devtool: 'eval' +} +" +`; + +exports[`entry transforms correctly using "entry-0" data 1`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 2`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 3`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 4`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 5`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 6`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 7`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 8`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 9`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 10`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 11`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-0" data 12`] = ` +"module.exports = {} +" +`; + +exports[`entry transforms correctly using "entry-1" data 1`] = ` +"module.exports = { + entry: { + index: 'index.js', + ed: 'sheeran' + } +} +" +`; + +exports[`entry transforms correctly using "entry-1" data 2`] = ` +"module.exports = { + entry: { + index: 'index.js', + ed: 'sheeran' + } +} +" +`; + +exports[`externals transforms correctly using "externals-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 3`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 4`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 5`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 6`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 7`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`externals transforms correctly using "externals-1" data 8`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`merge transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`merge transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`mode transforms correctly using "mode-1" data 1`] = ` +"module.exports = {}; +" +`; + +exports[`mode transforms correctly using "mode-1" data 2`] = ` +"module.exports = {}; +" +`; + +exports[`mode transforms correctly using "mode-2" data 1`] = ` +"module.exports = { + mode: 'development' +} +" +`; + +exports[`mode transforms correctly using "mode-2" data 2`] = ` +"module.exports = { + mode: 'development' +} +" +`; + +exports[`module transforms correctly using "module-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`module transforms correctly using "module-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`module transforms correctly using "module-0" data 3`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`module transforms correctly using "module-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`module transforms correctly using "module-1" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`module transforms correctly using "module-2" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +} +" +`; + +exports[`node transforms correctly using "node-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`output transforms correctly using "output-0" data 1`] = ` +"module.exports = { + entry: 'index.js' +} +" +`; + +exports[`output transforms correctly using "output-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, +} +" +`; + +exports[`parallelism transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`parallelism transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`performance transforms correctly using "performance-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`performance transforms correctly using "performance-1" data 1`] = ` +"module.exports = { + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + } +} +" +`; + +exports[`plugins transforms correctly using "plugins-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`plugins transforms correctly using "plugins-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`plugins transforms correctly using "plugins-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + plugins: ['something'] +} +" +`; + +exports[`profile transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`profile transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`recordsInputPath transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`recordsInputPath transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`recordsOutputPath transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`recordsOutputPath transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`recordsPath transforms correctly using "other-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`recordsPath transforms correctly using "other-1" data 1`] = ` +"module.exports = { + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + } +}; +" +`; + +exports[`resolve transforms correctly using "resolve-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`resolve transforms correctly using "resolve-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + } +} +" +`; + +exports[`resolveLoader transforms correctly using "resolveLoader-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`resolveLoader transforms correctly using "resolveLoader-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + } +} +" +`; + +exports[`stats transforms correctly using "stats-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`stats transforms correctly using "stats-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`stats transforms correctly using "stats-0" data 3`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`stats transforms correctly using "stats-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + } +} +" +`; + +exports[`stats transforms correctly using "stats-1" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + } +} +" +`; + +exports[`target transforms correctly using "target-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`target transforms correctly using "target-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`target transforms correctly using "target-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`target transforms correctly using "target-1" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`target transforms correctly using "target-2" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + target: 'something' +} +" +`; + +exports[`top-scope transforms correctly using "top-scope-0" data 1`] = ` +"module.exports = {} +" +`; + +exports[`top-scope transforms correctly using "top-scope-1" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = {} +" +`; + +exports[`watch transforms correctly using "watch-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watch transforms correctly using "watch-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watch transforms correctly using "watch-0" data 3`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watch transforms correctly using "watch-0" data 4`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watch transforms correctly using "watch-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watch transforms correctly using "watch-1" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watch transforms correctly using "watch-4" data 1`] = ` +"module.exports = { + watch: 'someone' +} +" +`; + +exports[`watch transforms correctly using "watch-4" data 2`] = ` +"module.exports = { + watch: 'someone' +} +" +`; + +exports[`watchOptions transforms correctly using "watch-0" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watchOptions transforms correctly using "watch-0" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watchOptions transforms correctly using "watch-1" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watchOptions transforms correctly using "watch-2" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + } +} +" +`; + +exports[`watchOptions transforms correctly using "watch-3" data 1`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me' +} +" +`; + +exports[`watchOptions transforms correctly using "watch-3" data 2`] = ` +"module.exports = { + entry: 'index.js', + output: { + filename: 'bundle.js' + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me' +} +" +`; diff --git a/lib/init/transformations/context/__testfixtures__/context-0.input.js b/lib/ast/__testfixtures__/context-0.input.js similarity index 100% rename from lib/init/transformations/context/__testfixtures__/context-0.input.js rename to lib/ast/__testfixtures__/context-0.input.js diff --git a/lib/init/transformations/context/__testfixtures__/context-1.input.js b/lib/ast/__testfixtures__/context-1.input.js similarity index 100% rename from lib/init/transformations/context/__testfixtures__/context-1.input.js rename to lib/ast/__testfixtures__/context-1.input.js diff --git a/lib/init/transformations/context/__testfixtures__/context-2.input.js b/lib/ast/__testfixtures__/context-2.input.js similarity index 100% rename from lib/init/transformations/context/__testfixtures__/context-2.input.js rename to lib/ast/__testfixtures__/context-2.input.js diff --git a/lib/init/transformations/context/__testfixtures__/context-3.input.js b/lib/ast/__testfixtures__/context-3.input.js similarity index 100% rename from lib/init/transformations/context/__testfixtures__/context-3.input.js rename to lib/ast/__testfixtures__/context-3.input.js diff --git a/lib/init/transformations/context/__testfixtures__/context-4.input.js b/lib/ast/__testfixtures__/context-4.input.js similarity index 100% rename from lib/init/transformations/context/__testfixtures__/context-4.input.js rename to lib/ast/__testfixtures__/context-4.input.js diff --git a/lib/init/transformations/devServer/__testfixtures__/devServer-0.input.js b/lib/ast/__testfixtures__/devServer-0.input.js similarity index 100% rename from lib/init/transformations/devServer/__testfixtures__/devServer-0.input.js rename to lib/ast/__testfixtures__/devServer-0.input.js diff --git a/lib/init/transformations/devServer/__testfixtures__/devServer-1.input.js b/lib/ast/__testfixtures__/devServer-1.input.js similarity index 100% rename from lib/init/transformations/devServer/__testfixtures__/devServer-1.input.js rename to lib/ast/__testfixtures__/devServer-1.input.js diff --git a/lib/init/transformations/devServer/__testfixtures__/devServer-2.input.js b/lib/ast/__testfixtures__/devServer-2.input.js similarity index 100% rename from lib/init/transformations/devServer/__testfixtures__/devServer-2.input.js rename to lib/ast/__testfixtures__/devServer-2.input.js diff --git a/lib/init/transformations/devServer/__testfixtures__/devServer-3.input.js b/lib/ast/__testfixtures__/devServer-3.input.js similarity index 100% rename from lib/init/transformations/devServer/__testfixtures__/devServer-3.input.js rename to lib/ast/__testfixtures__/devServer-3.input.js diff --git a/lib/init/transformations/devServer/__testfixtures__/devServer-4.input.js b/lib/ast/__testfixtures__/devServer-4.input.js similarity index 100% rename from lib/init/transformations/devServer/__testfixtures__/devServer-4.input.js rename to lib/ast/__testfixtures__/devServer-4.input.js diff --git a/lib/init/transformations/devtool/__testfixtures__/devtool-0.input.js b/lib/ast/__testfixtures__/devtool-0.input.js similarity index 100% rename from lib/init/transformations/devtool/__testfixtures__/devtool-0.input.js rename to lib/ast/__testfixtures__/devtool-0.input.js diff --git a/lib/init/transformations/devtool/__testfixtures__/devtool-1.input.js b/lib/ast/__testfixtures__/devtool-1.input.js similarity index 100% rename from lib/init/transformations/devtool/__testfixtures__/devtool-1.input.js rename to lib/ast/__testfixtures__/devtool-1.input.js diff --git a/lib/init/transformations/devtool/__testfixtures__/devtool-2.input.js b/lib/ast/__testfixtures__/devtool-2.input.js similarity index 100% rename from lib/init/transformations/devtool/__testfixtures__/devtool-2.input.js rename to lib/ast/__testfixtures__/devtool-2.input.js diff --git a/lib/init/transformations/devtool/__testfixtures__/devtool-3.input.js b/lib/ast/__testfixtures__/devtool-3.input.js similarity index 100% rename from lib/init/transformations/devtool/__testfixtures__/devtool-3.input.js rename to lib/ast/__testfixtures__/devtool-3.input.js diff --git a/lib/init/transformations/devtool/__testfixtures__/devtool-4.input.js b/lib/ast/__testfixtures__/devtool-4.input.js similarity index 100% rename from lib/init/transformations/devtool/__testfixtures__/devtool-4.input.js rename to lib/ast/__testfixtures__/devtool-4.input.js diff --git a/lib/init/transformations/entry/__testfixtures__/entry-0.input.js b/lib/ast/__testfixtures__/entry-0.input.js similarity index 100% rename from lib/init/transformations/entry/__testfixtures__/entry-0.input.js rename to lib/ast/__testfixtures__/entry-0.input.js diff --git a/lib/init/transformations/entry/__testfixtures__/entry-1.input.js b/lib/ast/__testfixtures__/entry-1.input.js similarity index 100% rename from lib/init/transformations/entry/__testfixtures__/entry-1.input.js rename to lib/ast/__testfixtures__/entry-1.input.js diff --git a/lib/init/transformations/externals/__testfixtures__/externals-0.input.js b/lib/ast/__testfixtures__/externals-0.input.js similarity index 100% rename from lib/init/transformations/externals/__testfixtures__/externals-0.input.js rename to lib/ast/__testfixtures__/externals-0.input.js diff --git a/lib/init/transformations/externals/__testfixtures__/externals-1.input.js b/lib/ast/__testfixtures__/externals-1.input.js similarity index 100% rename from lib/init/transformations/externals/__testfixtures__/externals-1.input.js rename to lib/ast/__testfixtures__/externals-1.input.js diff --git a/lib/init/transformations/externals/__testfixtures__/externals-2.input.js b/lib/ast/__testfixtures__/externals-2.input.js similarity index 100% rename from lib/init/transformations/externals/__testfixtures__/externals-2.input.js rename to lib/ast/__testfixtures__/externals-2.input.js diff --git a/lib/init/transformations/mode/__testfixtures__/mode-1.input.js b/lib/ast/__testfixtures__/mode-1.input.js similarity index 100% rename from lib/init/transformations/mode/__testfixtures__/mode-1.input.js rename to lib/ast/__testfixtures__/mode-1.input.js diff --git a/lib/init/transformations/mode/__testfixtures__/mode-2.input.js b/lib/ast/__testfixtures__/mode-2.input.js similarity index 100% rename from lib/init/transformations/mode/__testfixtures__/mode-2.input.js rename to lib/ast/__testfixtures__/mode-2.input.js diff --git a/lib/init/transformations/module/__testfixtures__/module-0.input.js b/lib/ast/__testfixtures__/module-0.input.js similarity index 100% rename from lib/init/transformations/module/__testfixtures__/module-0.input.js rename to lib/ast/__testfixtures__/module-0.input.js diff --git a/lib/init/transformations/module/__testfixtures__/module-1.input.js b/lib/ast/__testfixtures__/module-1.input.js similarity index 100% rename from lib/init/transformations/module/__testfixtures__/module-1.input.js rename to lib/ast/__testfixtures__/module-1.input.js diff --git a/lib/init/transformations/module/__testfixtures__/module-2.input.js b/lib/ast/__testfixtures__/module-2.input.js similarity index 100% rename from lib/init/transformations/module/__testfixtures__/module-2.input.js rename to lib/ast/__testfixtures__/module-2.input.js diff --git a/lib/init/transformations/node/__testfixtures__/node-0.input.js b/lib/ast/__testfixtures__/node-0.input.js similarity index 100% rename from lib/init/transformations/node/__testfixtures__/node-0.input.js rename to lib/ast/__testfixtures__/node-0.input.js diff --git a/lib/init/transformations/other/__testfixtures__/other-0.input.js b/lib/ast/__testfixtures__/other-0.input.js similarity index 100% rename from lib/init/transformations/other/__testfixtures__/other-0.input.js rename to lib/ast/__testfixtures__/other-0.input.js diff --git a/lib/init/transformations/other/__testfixtures__/other-1.input.js b/lib/ast/__testfixtures__/other-1.input.js similarity index 100% rename from lib/init/transformations/other/__testfixtures__/other-1.input.js rename to lib/ast/__testfixtures__/other-1.input.js diff --git a/lib/init/transformations/output/__testfixtures__/output-0.input.js b/lib/ast/__testfixtures__/output-0.input.js similarity index 100% rename from lib/init/transformations/output/__testfixtures__/output-0.input.js rename to lib/ast/__testfixtures__/output-0.input.js diff --git a/lib/init/transformations/output/__testfixtures__/output-1.input.js b/lib/ast/__testfixtures__/output-1.input.js similarity index 100% rename from lib/init/transformations/output/__testfixtures__/output-1.input.js rename to lib/ast/__testfixtures__/output-1.input.js diff --git a/lib/init/transformations/performance/__testfixtures__/performance-0.input.js b/lib/ast/__testfixtures__/performance-0.input.js similarity index 100% rename from lib/init/transformations/performance/__testfixtures__/performance-0.input.js rename to lib/ast/__testfixtures__/performance-0.input.js diff --git a/lib/init/transformations/performance/__testfixtures__/performance-1.input.js b/lib/ast/__testfixtures__/performance-1.input.js similarity index 100% rename from lib/init/transformations/performance/__testfixtures__/performance-1.input.js rename to lib/ast/__testfixtures__/performance-1.input.js diff --git a/lib/init/transformations/plugins/__testfixtures__/plugins-0.input.js b/lib/ast/__testfixtures__/plugins-0.input.js similarity index 100% rename from lib/init/transformations/plugins/__testfixtures__/plugins-0.input.js rename to lib/ast/__testfixtures__/plugins-0.input.js diff --git a/lib/init/transformations/plugins/__testfixtures__/plugins-1.input.js b/lib/ast/__testfixtures__/plugins-1.input.js similarity index 100% rename from lib/init/transformations/plugins/__testfixtures__/plugins-1.input.js rename to lib/ast/__testfixtures__/plugins-1.input.js diff --git a/lib/init/transformations/resolve/__testfixtures__/resolve-0.input.js b/lib/ast/__testfixtures__/resolve-0.input.js similarity index 100% rename from lib/init/transformations/resolve/__testfixtures__/resolve-0.input.js rename to lib/ast/__testfixtures__/resolve-0.input.js diff --git a/lib/init/transformations/resolve/__testfixtures__/resolve-1.input.js b/lib/ast/__testfixtures__/resolve-1.input.js similarity index 100% rename from lib/init/transformations/resolve/__testfixtures__/resolve-1.input.js rename to lib/ast/__testfixtures__/resolve-1.input.js diff --git a/lib/init/transformations/resolveLoader/__testfixtures__/resolveLoader-0.input.js b/lib/ast/__testfixtures__/resolveLoader-0.input.js similarity index 100% rename from lib/init/transformations/resolveLoader/__testfixtures__/resolveLoader-0.input.js rename to lib/ast/__testfixtures__/resolveLoader-0.input.js diff --git a/lib/init/transformations/resolveLoader/__testfixtures__/resolveLoader-1.input.js b/lib/ast/__testfixtures__/resolveLoader-1.input.js similarity index 100% rename from lib/init/transformations/resolveLoader/__testfixtures__/resolveLoader-1.input.js rename to lib/ast/__testfixtures__/resolveLoader-1.input.js diff --git a/lib/init/transformations/stats/__testfixtures__/stats-0.input.js b/lib/ast/__testfixtures__/stats-0.input.js similarity index 100% rename from lib/init/transformations/stats/__testfixtures__/stats-0.input.js rename to lib/ast/__testfixtures__/stats-0.input.js diff --git a/lib/init/transformations/stats/__testfixtures__/stats-1.input.js b/lib/ast/__testfixtures__/stats-1.input.js similarity index 100% rename from lib/init/transformations/stats/__testfixtures__/stats-1.input.js rename to lib/ast/__testfixtures__/stats-1.input.js diff --git a/lib/init/transformations/target/__testfixtures__/target-0.input.js b/lib/ast/__testfixtures__/target-0.input.js similarity index 100% rename from lib/init/transformations/target/__testfixtures__/target-0.input.js rename to lib/ast/__testfixtures__/target-0.input.js diff --git a/lib/init/transformations/target/__testfixtures__/target-1.input.js b/lib/ast/__testfixtures__/target-1.input.js similarity index 100% rename from lib/init/transformations/target/__testfixtures__/target-1.input.js rename to lib/ast/__testfixtures__/target-1.input.js diff --git a/lib/init/transformations/target/__testfixtures__/target-2.input.js b/lib/ast/__testfixtures__/target-2.input.js similarity index 100% rename from lib/init/transformations/target/__testfixtures__/target-2.input.js rename to lib/ast/__testfixtures__/target-2.input.js diff --git a/lib/init/transformations/top-scope/__testfixtures__/top-scope-0.input.js b/lib/ast/__testfixtures__/top-scope-0.input.js similarity index 100% rename from lib/init/transformations/top-scope/__testfixtures__/top-scope-0.input.js rename to lib/ast/__testfixtures__/top-scope-0.input.js diff --git a/lib/init/transformations/top-scope/__testfixtures__/top-scope-1.input.js b/lib/ast/__testfixtures__/top-scope-1.input.js similarity index 100% rename from lib/init/transformations/top-scope/__testfixtures__/top-scope-1.input.js rename to lib/ast/__testfixtures__/top-scope-1.input.js diff --git a/lib/init/transformations/watch/__testfixtures__/watch-0.input.js b/lib/ast/__testfixtures__/watch-0.input.js similarity index 100% rename from lib/init/transformations/watch/__testfixtures__/watch-0.input.js rename to lib/ast/__testfixtures__/watch-0.input.js diff --git a/lib/init/transformations/watch/__testfixtures__/watch-1.input.js b/lib/ast/__testfixtures__/watch-1.input.js similarity index 100% rename from lib/init/transformations/watch/__testfixtures__/watch-1.input.js rename to lib/ast/__testfixtures__/watch-1.input.js diff --git a/lib/init/transformations/watch/__testfixtures__/watch-2.input.js b/lib/ast/__testfixtures__/watch-2.input.js similarity index 100% rename from lib/init/transformations/watch/__testfixtures__/watch-2.input.js rename to lib/ast/__testfixtures__/watch-2.input.js diff --git a/lib/init/transformations/watch/__testfixtures__/watch-3.input.js b/lib/ast/__testfixtures__/watch-3.input.js similarity index 100% rename from lib/init/transformations/watch/__testfixtures__/watch-3.input.js rename to lib/ast/__testfixtures__/watch-3.input.js diff --git a/lib/init/transformations/watch/__testfixtures__/watch-4.input.js b/lib/ast/__testfixtures__/watch-4.input.js similarity index 100% rename from lib/init/transformations/watch/__testfixtures__/watch-4.input.js rename to lib/ast/__testfixtures__/watch-4.input.js diff --git a/lib/ast/ast.test.js b/lib/ast/ast.test.js new file mode 100644 index 00000000000..ed40cf0dbe3 --- /dev/null +++ b/lib/ast/ast.test.js @@ -0,0 +1,1033 @@ +"use strict"; + +const defineTest = require("../utils/defineTest"); + +defineTest( + __dirname, + "context", + "context-0", + "path.resolve(__dirname, 'app')", + "init" +); +defineTest(__dirname, "context", "context-1", "'./some/fake/path'", "init"); +defineTest(__dirname, "context", "context-2", "contextVariable", "init"); + +defineTest(__dirname, "context", "context-3", "path.join('dist', mist)", "add"); +defineTest(__dirname, "context", "context-4", "'just did'", "add"); + +defineTest( + __dirname, + "devServer", + "devServer-0", + { + contentBase: "path.join(__dirname, 'dist')", + compress: true, + port: 9000 + }, + "init" +); +defineTest(__dirname, "devServer", "devServer-1", "someVar", "init"); + +defineTest( + __dirname, + "devServer", + "devServer-2", + { + contentBase: "path.join(__dirname, 'dist')", + compress: true, + port: 9000 + }, + "add" +); + +defineTest( + __dirname, + "devServer", + "devServer-3", + { + contentBase: "path.join(__dirname, 'dist')", + port: 420 + }, + "add" +); + +defineTest(__dirname, "devServer", "devServer-4", "someVar", "add"); + +defineTest(__dirname, "devtool", "devtool-0", "'source-map'", "init"); +defineTest(__dirname, "devtool", "devtool-0", "myVariable", "init"); +defineTest( + __dirname, + "devtool", + "devtool-1", + "'cheap-module-source-map'", + "init" +); +defineTest(__dirname, "devtool", "devtool-1", "false", "init"); + +defineTest(__dirname, "devtool", "devtool-2", "'source-map'", "add"); +defineTest(__dirname, "devtool", "devtool-3", "myVariable", "add"); +defineTest( + __dirname, + "devtool", + "devtool-3", + "'cheap-module-source-map'", + "add" +); +defineTest(__dirname, "devtool", "devtool-4", false, "add"); +defineTest(__dirname, "devtool", "devtool-4", "false", "add"); + +defineTest(__dirname, "entry", "entry-0", "'index.js'", "init"); +defineTest(__dirname, "entry", "entry-0", ["'index.js'", "'app.js'"], "init"); +defineTest( + __dirname, + "entry", + "entry-0", + { + index: "'index.js'", + app: "'app.js'" + }, + "init" +); + +defineTest( + __dirname, + "entry", + "entry-0", + { + inject: "something", + app: "'app.js'", + inject_1: "else" + }, + "init" +); +defineTest(__dirname, "entry", "entry-0", "() => 'index.js'", "init"); +defineTest( + __dirname, + "entry", + "entry-0", + "() => new Promise((resolve) => resolve(['./app', './router']))", + "init" +); +defineTest(__dirname, "entry", "entry-0", "entryStringVariable", "init"); + +defineTest(__dirname, "entry", "entry-0", "'index.js'", "add"); +defineTest(__dirname, "entry", "entry-0", ["'index.js'", "'app.js'"], "add"); +defineTest( + __dirname, + "entry", + "entry-1", + { + index: "'outdex.js'", + app: "'nap.js'" + }, + "add" +); + +defineTest( + __dirname, + "entry", + "entry-0", + { + inject: "something", + ed: "'eddy.js'", + inject_1: "else" + }, + "add" +); +defineTest(__dirname, "entry", "entry-1", "() => 'index.js'", "add"); +defineTest( + __dirname, + "entry", + "entry-0", + "() => new Promise((resolve) => resolve(['./app', './router']))", + "add" +); +defineTest(__dirname, "entry", "entry-0", "entryStringVariable", "add"); + +defineTest(__dirname, "externals", "externals-0", /react/, "init"); +defineTest( + __dirname, + "externals", + "externals-1", + { + jquery: "'jQuery'", + react: "'react'" + }, + "init" +); + +defineTest(__dirname, "externals", "externals-1", "myObj", "init"); + +defineTest( + __dirname, + "externals", + "externals-1", + { + jquery: "'jQuery'", + react: "reactObj" + }, + "init" +); + +defineTest( + __dirname, + "externals", + "externals-1", + { + jquery: "'jQuery'", + react: ["reactObj", "path.join(__dirname, 'app')", "'jquery'"] + }, + "init" +); + +defineTest( + __dirname, + "externals", + "externals-1", + { + lodash: { + commonjs: "'lodash'", + amd: "'lodash'", + root: "'_'" + } + }, + "init" +); + +defineTest( + __dirname, + "externals", + "externals-1", + { + lodash: { + commonjs: "lodash", + amd: "hidash", + root: "_" + } + }, + "init" +); + +defineTest( + __dirname, + "externals", + "externals-1", + [ + { + a: "false", + b: "true", + "'./ext'": "./hey" + }, + "function(context, request, callback) {" + + "if (/^yourregex$/.test(request)){" + + "return callback(null, 'commonjs ' + request);" + + "}" + + "callback();" + + "}" + ], + "init" +); + +defineTest( + __dirname, + "externals", + "externals-1", + [ + "myObj", + "function(context, request, callback) {" + + "if (/^yourregex$/.test(request)){" + + "return callback(null, 'commonjs ' + request);" + + "}" + + "callback();" + + "}" + ], + "init" +); + +/* +defineTest(__dirname, "externals", "externals-0", /react/, "add"); +defineTest( + __dirname, + "externals", + "externals-1", + { + jquery: "'qQuery'", + react: "'isNowPreact'" + }, + "add" +); + +defineTest(__dirname, "externals", "externals-1", "myObj", "add"); + +defineTest( + __dirname, + "externals", + "externals-1", + { + jquery: "'jQuery'", + react: "reactObj" + }, + "add" +); + +defineTest( + __dirname, + "externals", + "externals-1", + { + jquery: "'jQuery'", + react: ["reactObj", "path.join(__dirname, 'app')", "'jquery'"] + }, + "add" +); + +defineTest( + __dirname, + "externals", + "externals-2", + { + highdash: { + commonjs: "'highdash'", + amd: "'lodash'", + root: "'_'" + } + }, + "add" +); + +defineTest( + __dirname, + "externals", + "externals-1", + { + lodash: { + commonjs: "lodash", + amd: "hidash", + root: "_" + } + }, + "add" +); + +defineTest( + __dirname, + "externals", + "externals-1", + [ + { + a: "false", + b: "true", + "'./ext'": "./hey" + }, + "function(context, request, callback) {" + + "if (/^yourregex$/.test(request)){" + + "return callback(null, 'commonjs ' + request);" + + "}" + + "callback();" + + "}" + ], + "add" +); + +defineTest( + __dirname, + "externals", + "externals-1", + [ + "myObj", + "function(context, request, callback) {" + + "if (/^yourregex$/.test(request)){" + + "return callback(null, 'commonjs ' + request);" + + "}" + + "callback();" + + "}" + ], + "add" +); +*/ + +defineTest(__dirname, "mode", "mode-1", "'production'", "init"); +defineTest(__dirname, "mode", "mode-1", "modeVariable", "init"); + +defineTest(__dirname, "mode", "mode-2", "none", "add"); +defineTest(__dirname, "mode", "mode-2", "'production'", "add"); + +defineTest( + __dirname, + "module", + "module-0", + { + rules: [ + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" + } + }, + { + test: new RegExp(/\.vue$/), + loader: "'vue-loader'", + options: "vueObject" + }, + { + test: new RegExp(/\.js$/), + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { + test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: 10000, + name: "utils.assetsPath('img/[name].[hash:7].[ext]')" + } + }, + { + test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')", + someArr: ["Hey"] + } + } + ] + }, + "init" +); + +defineTest( + __dirname, + "module", + "module-1", + { + noParse: /jquery|lodash/, + rules: [ + { + test: new RegExp(/\.js$/), + parser: { + amd: false + }, + use: [ + "'htmllint-loader'", + { + loader: "'html-loader'", + options: { + hello: "'world'" + } + } + ] + } + ] + }, + "init" +); + +defineTest( + __dirname, + "module", + "module-0", + { + rules: [ + "{{#if_eq build 'standalone'}}", + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" + } + }, + { + test: new RegExp(/\.vue$/), + loader: "'vue-loader'", + options: "vueObject" + }, + { + test: new RegExp(/\.js$/), + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { + test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: 10000, + name: "utils.assetsPath('img/[name].[hash:7].[ext]')", + inject: "{{#if_eq build 'standalone'}}" + } + }, + { + test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), + loader: "'url-loader'", + inject: "{{#if_eq build 'standalone'}}", + options: { + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" + } + } + ] + }, + "init" +); + +defineTest( + __dirname, + "module", + "module-0", + { + rules: [ + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" + } + }, + { + test: new RegExp(/\.vue$/), + loader: "'vue-loader'", + options: "vueObject" + }, + { + test: new RegExp(/\.js$/), + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { + test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: 10000, + name: "utils.assetsPath('img/[name].[hash:7].[ext]')" + } + }, + { + test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')", + someArr: ["Hey"] + } + } + ] + }, + "init" +); + +defineTest( + __dirname, + "module", + "module-1", + { + noParse: /jquery|lodash/, + rules: [ + { + test: new RegExp(/\.js$/), + parser: { + amd: false + }, + use: [ + "'htmllint-loader'", + { + loader: "'html-loader'", + options: { + hello: "'world'" + } + } + ] + } + ] + }, + "add" +); + +defineTest( + __dirname, + "module", + "module-2", + { + rules: [ + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" + } + }, + { + test: new RegExp(/\.vue$/), + loader: "'vue-loader'", + options: "vueObject" + }, + { + test: new RegExp(/\.js$/), + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { + test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), + loader: "'url-loader'", + options: { + limit: 10000, + name: "utils.assetsPath('img/[name].[hash:7].[ext]')", + inject: "{{#if_eq build 'standalone'}}" + } + }, + { + test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), + loader: "'url-loader'", + inject: "{{#if_eq build 'standalone'}}", + options: { + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" + } + } + ] + }, + "add" +); + +defineTest( + __dirname, + "node", + "node-0", + { + console: false, + global: true, + process: true, + Buffer: true, + __filename: "mock", + __dirname: "mock", + setImmediate: true + }, + "init" +); + +defineTest( + __dirname, + "amd", + "other-0", + { + jQuery: true, + kQuery: false + }, + "init" +); +defineTest(__dirname, "bail", "other-0", true, "init"); +defineTest(__dirname, "cache", "other-0", true, "init"); +defineTest(__dirname, "cache", "other-0", "cacheVal", "init"); +defineTest(__dirname, "profile", "other-0", true, "init"); +defineTest(__dirname, "merge", "other-0", "myConfig", "init"); + +defineTest(__dirname, "parallelism", "other-0", 10, "init"); +defineTest( + __dirname, + "recordsInputPath", + "other-0", + "path.join('dist', mine)", + "init" +); +defineTest( + __dirname, + "recordsOutputPath", + "other-0", + "path.join('src', yours)", + "init" +); +defineTest( + __dirname, + "recordsPath", + "other-0", + "path.join(__dirname, 'records.json')", + "init" +); + +defineTest( + __dirname, + "amd", + "other-1", + { + jQuery: false, + kQuery: true + }, + "add" +); +defineTest(__dirname, "bail", "other-1", false, "add"); +defineTest(__dirname, "cache", "other-1", false, "add"); +defineTest(__dirname, "cache", "other-1", "cacheKey", "add"); +defineTest(__dirname, "profile", "other-1", false, "add"); +defineTest(__dirname, "merge", "other-1", "TheirConfig", "add"); + +defineTest(__dirname, "parallelism", "other-1", 20, "add"); +defineTest( + __dirname, + "recordsInputPath", + "other-1", + "path.join('dist', ours)", + "add" +); +defineTest( + __dirname, + "recordsOutputPath", + "other-1", + "path.join('src', theirs)", + "add" +); +defineTest( + __dirname, + "recordsPath", + "other-1", + "path.resolve(__dirname, 'gradle.json')", + "add" +); + +const jscodeshift = require("jscodeshift"); + +defineTest( + __dirname, + "output", + "output-0", + { + filename: "'bundle'", + path: "'dist/assets'", + pathinfo: true, + publicPath: "'https://google.com'", + sourceMapFilename: "'[name].map'", + sourcePrefix: jscodeshift("'\t'"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + "init" +); + +defineTest( + __dirname, + "output", + "output-1", + { + filename: "'app'", + path: "'distro/src'", + pathinfo: false, + publicPath: "'https://google.com'", + sourcePrefix: jscodeshift("'\t'") + }, + "add" +); + +defineTest( + __dirname, + "performance", + "performance-0", + { + hints: "'warning'", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + "function(assetFilename) {" + + "return assetFilename.endsWith('.js');" + + "}" + }, + "init" +); + +defineTest( + __dirname, + "performance", + "performance-1", + { + hints: "'nuclear-warning'", + maxAssetSize: 6969, + assetFilter: + "un(assetFilename) {" + "return assetFilename.endsWith('.js');" + "}" + }, + "add" +); + +defineTest( + __dirname, + "plugins", + "plugins-0", + [ + "new webpack.optimize.CommonsChunkPlugin({name:" + + "'" + + "vendor" + + "'" + + ",filename:" + + "'" + + "vendor" + + "-[hash].min.js'})" + ], + "init" +); + +defineTest( + __dirname, + "plugins", + "plugins-1", + "new webpack.optimize.DefinePlugin()", + "add" +); + +defineTest( + __dirname, + "plugins", + "plugins-0", + "new webpack.optimize.DefinePlugin()", + "add" +); + +defineTest( + __dirname, + "resolve", + "resolve-0", + { + alias: { + inject: "{{#if_eq build 'standalone'}}", + hello: "'world'", + inject_1: "{{/if_eq}}", + world: "hello" + }, + aliasFields: ["'browser'", "wars"], + descriptionFiles: ["'a'", "b"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: ["hey", "'ho'"], + mainFields: ["main", "'story'"], + mainFiles: ["'noMainFileHere'", "iGuess"], + modules: ["one", "'two'"], + unsafeCache: false, + plugins: ["somePlugin", "'stringVal'"], + symlinks: true + }, + "init" +); + +defineTest( + __dirname, + "resolve", + "resolve-1", + { + alias: { + inject: "{{#isdf_eq buildasda 'staasdndalone'}}", + hello: "'worlasdd'", + inject_1: "{{/asd}}", + world: "asdc" + }, + aliasFields: ["'as'"], + descriptionFiles: ["'d'", "e", "f"], + enforceExtension: true, + extensions: ["ok", "'ho'"], + mainFields: ["ok", "'story'"], + mainFiles: ["'noMainFileHere'", "niGuess"], + plugins: ["somePlugin", "'stringVal'"], + symlinks: false + }, + "add" +); + +defineTest( + __dirname, + "resolveLoader", + "resolveLoader-0", + { + modules: ["'ok'", "mode_nodules"], + mainFields: ["no", "'main'"], + moduleExtensions: ["'-kn'", "ok"] + }, + "init" +); + +defineTest( + __dirname, + "resolveLoader", + "resolveLoader-1", + { + modules: ["'ok'", "mode_nodules"], + mainFields: ["no", "'main'"], + moduleExtensions: ["'-kn'", "ok"] + }, + "add" +); + +defineTest( + __dirname, + "stats", + "stats-0", + { + assets: true, + assetsSort: "'field'", + cached: true, + cachedAssets: true, + children: true, + chunks: true, + chunkModules: true, + chunkOrigins: true, + chunksSort: "'field'", + context: "'../src/'", + colors: true, + depth: false, + entrypoints: "customVal", + errors: true, + errorDetails: true, + exclude: [], + hash: true, + maxModules: 15, + modules: true, + modulesSort: "'field'", + performance: true, + providedExports: false, + publicPath: true, + reasons: true, + source: true, + timings: true, + usedExports: false, + version: true, + warnings: true + }, + "init" +); +defineTest(__dirname, "stats", "stats-0", "'errors-only'", "init"); + +defineTest( + __dirname, + "stats", + "stats-0", + { + assets: true, + assetsSort: "'naw'", + cached: true, + cachedAssets: true, + children: true, + chunks: true, + version: true, + warnings: false + }, + "add" +); +defineTest( + __dirname, + "stats", + "stats-1", + { + assets: true, + assetsSort: "'naw'", + cached: true, + cachedAssets: true, + children: true, + chunks: true, + version: true, + warnings: false + }, + "add" +); +defineTest(__dirname, "stats", "stats-1", "'errors-only'", "add"); + +defineTest(__dirname, "target", "target-0", "'async-node'", "init"); +defineTest(__dirname, "target", "target-1", "node", "init"); + +defineTest(__dirname, "target", "target-0", "'async-node'", "add"); +defineTest(__dirname, "target", "target-1", "'node'", "add"); +defineTest(__dirname, "target", "target-2", "'node'", "add"); + +defineTest( + __dirname, + "top-scope", + "top-scope-0", + ["const test = 'me';"], + "init" +); +defineTest( + __dirname, + "top-scope", + "top-scope-1", + ["const webpack = require('webpack');"], + "add" +); + +defineTest( + __dirname, + "watchOptions", + "watch-0", + { + aggregateTimeout: 300, + poll: 1000, + ignored: "/node_modules/" + }, + "init" +); + +defineTest( + __dirname, + "watchOptions", + "watch-1", + { + aggregateTimeout: 300, + poll: 1000, + ignored: "/node_modules/" + }, + "init" +); + +defineTest( + __dirname, + "watchOptions", + "watch-2", + { + aggregateTimeout: 300, + poll: 1000, + ignored: "/node_modules/" + }, + "init" +); + +defineTest( + __dirname, + "watchOptions", + "watch-0", + { + aggregateTimeout: 300, + poll: 1000, + ignored: "/node_modules/" + }, + "add" +); +defineTest( + __dirname, + "watchOptions", + "watch-3", + { + poll: 69, + ignored: "/node_modules/" + }, + "add" +); + +defineTest( + __dirname, + "watchOptions", + "watch-3", + { + ignored: "abc" + }, + "add" +); + +defineTest(__dirname, "watch", "watch-0", true, "init"); +defineTest(__dirname, "watch", "watch-0", false, "init"); +defineTest(__dirname, "watch", "watch-1", true, "init"); +defineTest(__dirname, "watch", "watch-1", false, "init"); + +defineTest(__dirname, "watch", "watch-0", true, "add"); +defineTest(__dirname, "watch", "watch-0", false, "add"); +defineTest(__dirname, "watch", "watch-4", false, "add"); +defineTest(__dirname, "watch", "watch-4", "somehin", "add"); diff --git a/lib/generators/init-generator.js b/lib/generators/init-generator.js index bf7f4ad083f..bc2eb0d6863 100644 --- a/lib/generators/init-generator.js +++ b/lib/generators/init-generator.js @@ -11,7 +11,7 @@ const Input = require("webpack-addons").Input; const Confirm = require("webpack-addons").Confirm; const List = require("webpack-addons").List; -const getPackageManager = require("../utils/package-manager").getPackageManager; +//const getPackageManager = require("../utils/package-manager").getPackageManager; const entryQuestions = require("./utils/entry"); const getBabelPlugin = require("./utils/module"); diff --git a/lib/init/transformations/context/__snapshots__/context.test.js.snap b/lib/init/transformations/context/__snapshots__/context.test.js.snap deleted file mode 100644 index 83a8862858b..00000000000 --- a/lib/init/transformations/context/__snapshots__/context.test.js.snap +++ /dev/null @@ -1,56 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`context transforms correctly using "context-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - context: path.resolve(__dirname, 'app') -} -" -`; - -exports[`context transforms correctly using "context-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - context: './some/fake/path' -} -" -`; - -exports[`context transforms correctly using "context-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - context: contextVariable -} -" -`; - -exports[`context transforms correctly using "context-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - context: path.join('dist', mist) -} -" -`; - -exports[`context transforms correctly using "context-4" data 1`] = ` -"module.exports = { - entry: 'index.js', - context: 'just did' -} -" -`; diff --git a/lib/init/transformations/context/context.js b/lib/init/transformations/context/context.js deleted file mode 100644 index 5b4128f9bc8..00000000000 --- a/lib/init/transformations/context/context.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for context. Finds the context property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function contextTransform(j, ast, webpackProperties, action) { - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "context", - webpackProperties - ) - ); - } else if (action === "add") { - const contextNode = utils.findRootNodesByName(j, ast, "context"); - if (contextNode.size() !== 0) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "context", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return contextTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/context/context.test.js b/lib/init/transformations/context/context.test.js deleted file mode 100644 index 7dcf6b0474d..00000000000 --- a/lib/init/transformations/context/context.test.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "context", - "context-0", - "path.resolve(__dirname, 'app')", - "init" -); -defineTest(__dirname, "context", "context-1", "'./some/fake/path'", "init"); -defineTest(__dirname, "context", "context-2", "contextVariable", "init"); - -defineTest(__dirname, "context", "context-3", "path.join('dist', mist)", "add"); -defineTest(__dirname, "context", "context-4", "'just did'", "add"); diff --git a/lib/init/transformations/devServer/__snapshots__/devServer.test.js.snap b/lib/init/transformations/devServer/__snapshots__/devServer.test.js.snap deleted file mode 100644 index dfa4348efd4..00000000000 --- a/lib/init/transformations/devServer/__snapshots__/devServer.test.js.snap +++ /dev/null @@ -1,74 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`devServer transforms correctly using "devServer-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devServer: { - contentBase: path.join(__dirname, 'dist'), - compress: true, - port: 9000 - } -} -" -`; - -exports[`devServer transforms correctly using "devServer-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devServer: someVar -} -" -`; - -exports[`devServer transforms correctly using "devServer-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devServer: { - contentBase: path.join(__dirname, 'dist'), - compress: true, - port: 9000 - } -} -" -`; - -exports[`devServer transforms correctly using "devServer-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devServer: { - contentBase: path.join(__dirname, 'dist'), - compress: true, - port: 420 -} -} -" -`; - -exports[`devServer transforms correctly using "devServer-4" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devServer: someVar -} -" -`; diff --git a/lib/init/transformations/devServer/devServer.js b/lib/init/transformations/devServer/devServer.js deleted file mode 100644 index 2ebfdcee408..00000000000 --- a/lib/init/transformations/devServer/devServer.js +++ /dev/null @@ -1,89 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for devServer. Finds the devServer property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function devServerTransform( - j, - ast, - webpackProperties, - action -) { - function createDevServerProperty(p) { - utils.pushCreateProperty(j, p, "devServer", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "devServer"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createDevServerProperty)); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "devServer", - webpackProperties - ) - ); - } else if (action === "add") { - const devServerNode = utils.findRootNodesByName(j, ast, "devServer"); - if (devServerNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "devServer" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (devServerNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "devServer" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return devServerTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/devServer/devServer.test.js b/lib/init/transformations/devServer/devServer.test.js deleted file mode 100644 index d1832185f7f..00000000000 --- a/lib/init/transformations/devServer/devServer.test.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "devServer", - "devServer-0", - { - contentBase: "path.join(__dirname, 'dist')", - compress: true, - port: 9000 - }, - "init" -); -defineTest(__dirname, "devServer", "devServer-1", "someVar", "init"); - -defineTest( - __dirname, - "devServer", - "devServer-2", - { - contentBase: "path.join(__dirname, 'dist')", - compress: true, - port: 9000 - }, - "add" -); - -defineTest( - __dirname, - "devServer", - "devServer-3", - { - contentBase: "path.join(__dirname, 'dist')", - port: 420 - }, - "add" -); - -defineTest(__dirname, "devServer", "devServer-4", "someVar", "add"); diff --git a/lib/init/transformations/devtool/__snapshots__/devtool.test.js.snap b/lib/init/transformations/devtool/__snapshots__/devtool.test.js.snap deleted file mode 100644 index d82d810dd5a..00000000000 --- a/lib/init/transformations/devtool/__snapshots__/devtool.test.js.snap +++ /dev/null @@ -1,114 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`devtool transforms correctly using "devtool-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: 'source-map' -} -" -`; - -exports[`devtool transforms correctly using "devtool-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: myVariable -} -" -`; - -exports[`devtool transforms correctly using "devtool-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: 'cheap-module-source-map' -} -" -`; - -exports[`devtool transforms correctly using "devtool-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: false -} -" -`; - -exports[`devtool transforms correctly using "devtool-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: 'source-map' -} -" -`; - -exports[`devtool transforms correctly using "devtool-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: myVariable -} -" -`; - -exports[`devtool transforms correctly using "devtool-3" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: 'cheap-module-source-map' -} -" -`; - -exports[`devtool transforms correctly using "devtool-4" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devtool: false -} -" -`; - -exports[`devtool transforms correctly using "devtool-4" data 2`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devtool: false -} -" -`; diff --git a/lib/init/transformations/devtool/devtool.js b/lib/init/transformations/devtool/devtool.js deleted file mode 100644 index 05bea8ae4c5..00000000000 --- a/lib/init/transformations/devtool/devtool.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for devtool. Finds the devtool property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function devToolTransform(j, ast, webpackProperties, action) { - if (webpackProperties || typeof webpackProperties === "boolean") { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "devtool", - webpackProperties - ) - ); - } else if (action === "add") { - const devToolNode = utils.findRootNodesByName(j, ast, "devtool"); - if (devToolNode.size() !== 0) { - return devToolNode.forEach(p => { - j(p).replaceWith( - j.property( - "init", - j.identifier("devtool"), - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - }); - } else { - return devToolTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/devtool/devtool.test.js b/lib/init/transformations/devtool/devtool.test.js deleted file mode 100644 index 02464db79a5..00000000000 --- a/lib/init/transformations/devtool/devtool.test.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest(__dirname, "devtool", "devtool-0", "'source-map'", "init"); -defineTest(__dirname, "devtool", "devtool-0", "myVariable", "init"); -defineTest( - __dirname, - "devtool", - "devtool-1", - "'cheap-module-source-map'", - "init" -); -defineTest(__dirname, "devtool", "devtool-1", "false", "init"); - -defineTest(__dirname, "devtool", "devtool-2", "'source-map'", "add"); -defineTest(__dirname, "devtool", "devtool-3", "myVariable", "add"); -defineTest( - __dirname, - "devtool", - "devtool-3", - "'cheap-module-source-map'", - "add" -); -defineTest(__dirname, "devtool", "devtool-4", false, "add"); -defineTest(__dirname, "devtool", "devtool-4", "false", "add"); diff --git a/lib/init/transformations/entry/__snapshots__/entry.test.js.snap b/lib/init/transformations/entry/__snapshots__/entry.test.js.snap deleted file mode 100644 index 8d92d0c9f61..00000000000 --- a/lib/init/transformations/entry/__snapshots__/entry.test.js.snap +++ /dev/null @@ -1,114 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`entry transforms correctly using "entry-0" data 1`] = ` -"module.exports = { - entry: 'index.js' -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 2`] = ` -"module.exports = { - entry: ['index.js', 'app.js'] -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 3`] = ` -"module.exports = { - entry: { - index: 'index.js', - app: 'app.js' - } -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 4`] = ` -"module.exports = { - entry: { - something, - app: 'app.js', - else - } -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 5`] = ` -"module.exports = { - entry: () => 'index.js' -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 6`] = ` -"module.exports = { - entry: () => new Promise((resolve) => resolve(['./app', './router'])) -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 7`] = ` -"module.exports = { - entry: entryStringVariable -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 8`] = ` -"module.exports = { - entry: 'index.js' -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 9`] = ` -"module.exports = { - entry: ['index.js', 'app.js'] -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 10`] = ` -"module.exports = { - entry: { - something, - ed: 'eddy.js', - else - } -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 11`] = ` -"module.exports = { - entry: () => new Promise((resolve) => resolve(['./app', './router'])) -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 12`] = ` -"module.exports = { - entry: entryStringVariable -} -" -`; - -exports[`entry transforms correctly using "entry-1" data 1`] = ` -"module.exports = { - entry: { - index: 'outdex.js', - ed: 'sheeran', - app: 'nap.js' - } -} -" -`; - -exports[`entry transforms correctly using "entry-1" data 2`] = ` -"module.exports = { - entry: () => 'index.js' -} -" -`; diff --git a/lib/init/transformations/entry/entry.js b/lib/init/transformations/entry/entry.js deleted file mode 100644 index 184229179e9..00000000000 --- a/lib/init/transformations/entry/entry.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for entry. Finds the entry property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function entryTransform(j, ast, webpackProperties, action) { - function createEntryProperty(p) { - if (typeof webpackProperties === "string") { - return utils.pushCreateProperty(j, p, "entry", webpackProperties); - } - if (Array.isArray(webpackProperties)) { - const externalArray = utils.createArrayWithChildren( - j, - "entry", - webpackProperties, - true - ); - return p.value.properties.push(externalArray); - } else { - utils.pushCreateProperty(j, p, "entry", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "entry"); - } - } - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createEntryProperty)); - } else if (action === "add") { - const entryNode = utils.findRootNodesByName(j, ast, "entry"); - if (entryNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "entry" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (entryNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "entry" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return entryTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/entry/entry.test.js b/lib/init/transformations/entry/entry.test.js deleted file mode 100644 index 406c8830ea3..00000000000 --- a/lib/init/transformations/entry/entry.test.js +++ /dev/null @@ -1,71 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest(__dirname, "entry", "entry-0", "'index.js'", "init"); -defineTest(__dirname, "entry", "entry-0", ["'index.js'", "'app.js'"], "init"); -defineTest( - __dirname, - "entry", - "entry-0", - { - index: "'index.js'", - app: "'app.js'" - }, - "init" -); - -defineTest( - __dirname, - "entry", - "entry-0", - { - inject: "something", - app: "'app.js'", - inject_1: "else" - }, - "init" -); -defineTest(__dirname, "entry", "entry-0", "() => 'index.js'", "init"); -defineTest( - __dirname, - "entry", - "entry-0", - "() => new Promise((resolve) => resolve(['./app', './router']))", - "init" -); -defineTest(__dirname, "entry", "entry-0", "entryStringVariable", "init"); - -defineTest(__dirname, "entry", "entry-0", "'index.js'", "add"); -defineTest(__dirname, "entry", "entry-0", ["'index.js'", "'app.js'"], "add"); -defineTest( - __dirname, - "entry", - "entry-1", - { - index: "'outdex.js'", - app: "'nap.js'" - }, - "add" -); - -defineTest( - __dirname, - "entry", - "entry-0", - { - inject: "something", - ed: "'eddy.js'", - inject_1: "else" - }, - "add" -); -defineTest(__dirname, "entry", "entry-1", "() => 'index.js'", "add"); -defineTest( - __dirname, - "entry", - "entry-0", - "() => new Promise((resolve) => resolve(['./app', './router']))", - "add" -); -defineTest(__dirname, "entry", "entry-0", "entryStringVariable", "add"); diff --git a/lib/init/transformations/externals/__snapshots__/externals.test.js.snap b/lib/init/transformations/externals/__snapshots__/externals.test.js.snap deleted file mode 100644 index 2837759f02b..00000000000 --- a/lib/init/transformations/externals/__snapshots__/externals.test.js.snap +++ /dev/null @@ -1,146 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`externals transforms correctly using "externals-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: /react/ -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: { - jquery: 'jQuery', - react: 'react' - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: myObj -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 3`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: { - jquery: 'jQuery', - react: reactObj - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 4`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: { - jquery: 'jQuery', - react: [reactObj, path.join(__dirname, 'app'), 'jquery'] - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 5`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: { - lodash: { - commonjs: 'lodash', - amd: 'lodash', - root: '_' - } - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 6`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: { - lodash: { - commonjs: lodash, - amd: hidash, - root: _ - } - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 7`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: [{ - a: false, - b: true, - './ext': ./hey - }, function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();}] -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 8`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: [ - myObj, - function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();} - ] -} -" -`; diff --git a/lib/init/transformations/externals/externals.js b/lib/init/transformations/externals/externals.js deleted file mode 100644 index ebc903bc272..00000000000 --- a/lib/init/transformations/externals/externals.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for externals. Finds the externals property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function externalsTransform( - j, - ast, - webpackProperties, - action -) { - function createExternalProperty(p) { - if ( - webpackProperties instanceof RegExp || - typeof webpackProperties === "string" - ) { - return utils.pushCreateProperty(j, p, "externals", webpackProperties); - } - if (Array.isArray(webpackProperties)) { - const externalArray = utils.createArrayWithChildren( - j, - "externals", - webpackProperties, - true - ); - return p.value.properties.push(externalArray); - } else { - utils.pushCreateProperty(j, p, "externals", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "externals"); - } - } - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, [ - "parent", - "value", - "left", - "property", - "name" - ]) === "exports" - ) - .forEach(createExternalProperty); - } else if (action === "add") { - const externalNode = utils.findRootNodesByName(j, ast, "externals"); - if (externalNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "externals" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - // need to check for every prop beneath, use the recursion util - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - externalNode.size() !== 0 && - Array.isArray(webpackProperties) - ) { - // Todo - } else if (externalNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "externals" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return externalsTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/externals/externals.test.js b/lib/init/transformations/externals/externals.test.js deleted file mode 100644 index 342d30f7a70..00000000000 --- a/lib/init/transformations/externals/externals.test.js +++ /dev/null @@ -1,204 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest(__dirname, "externals", "externals-0", /react/, "init"); -defineTest( - __dirname, - "externals", - "externals-1", - { - jquery: "'jQuery'", - react: "'react'" - }, - "init" -); - -defineTest(__dirname, "externals", "externals-1", "myObj", "init"); - -defineTest( - __dirname, - "externals", - "externals-1", - { - jquery: "'jQuery'", - react: "reactObj" - }, - "init" -); - -defineTest( - __dirname, - "externals", - "externals-1", - { - jquery: "'jQuery'", - react: ["reactObj", "path.join(__dirname, 'app')", "'jquery'"] - }, - "init" -); - -defineTest( - __dirname, - "externals", - "externals-1", - { - lodash: { - commonjs: "'lodash'", - amd: "'lodash'", - root: "'_'" - } - }, - "init" -); - -defineTest( - __dirname, - "externals", - "externals-1", - { - lodash: { - commonjs: "lodash", - amd: "hidash", - root: "_" - } - }, - "init" -); - -defineTest( - __dirname, - "externals", - "externals-1", - [ - { - a: "false", - b: "true", - "'./ext'": "./hey" - }, - "function(context, request, callback) {" + - "if (/^yourregex$/.test(request)){" + - "return callback(null, 'commonjs ' + request);" + - "}" + - "callback();" + - "}" - ], - "init" -); - -defineTest( - __dirname, - "externals", - "externals-1", - [ - "myObj", - "function(context, request, callback) {" + - "if (/^yourregex$/.test(request)){" + - "return callback(null, 'commonjs ' + request);" + - "}" + - "callback();" + - "}" - ], - "init" -); -/* -defineTest(__dirname, "externals", "externals-0", /react/, "add"); -defineTest( - __dirname, - "externals", - "externals-1", - { - jquery: "'qQuery'", - react: "'isNowPreact'" - }, - "add" -); - -defineTest(__dirname, "externals", "externals-1", "myObj", "add"); - -defineTest( - __dirname, - "externals", - "externals-1", - { - jquery: "'jQuery'", - react: "reactObj" - }, - "add" -); - -defineTest( - __dirname, - "externals", - "externals-1", - { - jquery: "'jQuery'", - react: ["reactObj", "path.join(__dirname, 'app')", "'jquery'"] - }, - "add" -); - -defineTest( - __dirname, - "externals", - "externals-2", - { - highdash: { - commonjs: "'highdash'", - amd: "'lodash'", - root: "'_'" - } - }, - "add" -); - -defineTest( - __dirname, - "externals", - "externals-1", - { - lodash: { - commonjs: "lodash", - amd: "hidash", - root: "_" - } - }, - "add" -); - -defineTest( - __dirname, - "externals", - "externals-1", - [ - { - a: "false", - b: "true", - "'./ext'": "./hey" - }, - "function(context, request, callback) {" + - "if (/^yourregex$/.test(request)){" + - "return callback(null, 'commonjs ' + request);" + - "}" + - "callback();" + - "}" - ], - "add" -); - -defineTest( - __dirname, - "externals", - "externals-1", - [ - "myObj", - "function(context, request, callback) {" + - "if (/^yourregex$/.test(request)){" + - "return callback(null, 'commonjs ' + request);" + - "}" + - "callback();" + - "}" - ], - "add" -); -*/ diff --git a/lib/init/transformations/mode/__snapshots__/mode.test.js.snap b/lib/init/transformations/mode/__snapshots__/mode.test.js.snap deleted file mode 100644 index ddb18a7f1cf..00000000000 --- a/lib/init/transformations/mode/__snapshots__/mode.test.js.snap +++ /dev/null @@ -1,29 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`mode transforms correctly using "mode-1" data 1`] = ` -"module.exports = { - mode: 'production' -}; -" -`; - -exports[`mode transforms correctly using "mode-1" data 2`] = ` -"module.exports = { - mode: modeVariable -}; -" -`; - -exports[`mode transforms correctly using "mode-2" data 1`] = ` -"module.exports = { - mode: none -} -" -`; - -exports[`mode transforms correctly using "mode-2" data 2`] = ` -"module.exports = { - mode: 'production' -} -" -`; diff --git a/lib/init/transformations/mode/mode.js b/lib/init/transformations/mode/mode.js deleted file mode 100644 index 3c92d2880f6..00000000000 --- a/lib/init/transformations/mode/mode.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for mode. Finds the mode property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function modeTransform(j, ast, webpackProperties, action) { - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "mode", - webpackProperties - ) - ); - } else if (action === "add") { - const modeNode = utils.findRootNodesByName(j, ast, "mode"); - if (modeNode.size() !== 0) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "mode", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return modeTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/mode/mode.test.js b/lib/init/transformations/mode/mode.test.js deleted file mode 100644 index b5bc662fb73..00000000000 --- a/lib/init/transformations/mode/mode.test.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest(__dirname, "mode", "mode-1", "'production'", "init"); -defineTest(__dirname, "mode", "mode-1", "modeVariable", "init"); - -defineTest(__dirname, "mode", "mode-2", "none", "add"); -defineTest(__dirname, "mode", "mode-2", "'production'", "add"); diff --git a/lib/init/transformations/module/__snapshots__/module.test.js.snap b/lib/init/transformations/module/__snapshots__/module.test.js.snap deleted file mode 100644 index 9a7c0dcce10..00000000000 --- a/lib/init/transformations/module/__snapshots__/module.test.js.snap +++ /dev/null @@ -1,257 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`module transforms correctly using "module-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - module: { - rules: [{ - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }, { - test: /\\\\.vue$/, - loader: 'vue-loader', - options: vueObject - }, { - test: /\\\\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] - }, { - test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]') - } - }, { - test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), - someArr: [Hey] - } - }] - } -} -" -`; - -exports[`module transforms correctly using "module-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - module: { - rules: [{{#if_eq build 'standalone'}}, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }, { - test: /\\\\.vue$/, - loader: 'vue-loader', - options: vueObject - }, { - test: /\\\\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] - }, { - test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]'), - {{#if_eq build 'standalone'}} - } - }, { - test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, - loader: 'url-loader', - {{#if_eq build 'standalone'}}, - - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]') - } - }] - } -} -" -`; - -exports[`module transforms correctly using "module-0" data 3`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - module: { - rules: [{ - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }, { - test: /\\\\.vue$/, - loader: 'vue-loader', - options: vueObject - }, { - test: /\\\\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] - }, { - test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]') - } - }, { - test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), - someArr: [Hey] - } - }] - } -} -" -`; - -exports[`module transforms correctly using "module-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - module: { - noParse: /jquery|lodash/, - - rules: [{ - test: /\\\\.js$/, - - parser: { - amd: false - }, - - use: ['htmllint-loader', { - loader: 'html-loader', - - options: { - hello: 'world' - } - }] - }] - } -} -" -`; - -exports[`module transforms correctly using "module-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - module: { - noParse: /jquery|lodash/, - - rules: [{ - test: /\\\\.js$/, - - parser: { - amd: false - }, - - use: ['htmllint-loader', { - loader: 'html-loader', - - options: { - hello: 'world' - } - }] - }] - } -} -" -`; - -exports[`module transforms correctly using "module-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -} -" -`; diff --git a/lib/init/transformations/module/module.js b/lib/init/transformations/module/module.js deleted file mode 100644 index 0b838e119fb..00000000000 --- a/lib/init/transformations/module/module.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for module. Finds the module property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function moduleTransform(j, ast, webpackProperties, action) { - function createModuleProperty(p) { - if (typeof webpackProperties === "string") { - return utils.pushCreateProperty(j, p, "module", webpackProperties); - } - if (Array.isArray(webpackProperties)) { - const externalArray = utils.createArrayWithChildren( - j, - "module", - webpackProperties, - true - ); - return p.value.properties.push(externalArray); - } else { - utils.pushCreateProperty(j, p, "module", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "module"); - } - } - function editModuleProperty(p) { - return utils.pushObjectKeys(j, p, webpackProperties, "module", true); - } - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createModuleProperty)); - } else if (action === "add") { - const moduleNode = utils.findRootNodesByName(j, ast, "module"); - if (moduleNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, editModuleProperty)); - } else if (moduleNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "module" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return moduleTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/module/module.test.js b/lib/init/transformations/module/module.test.js deleted file mode 100644 index ed6356b3bd0..00000000000 --- a/lib/init/transformations/module/module.test.js +++ /dev/null @@ -1,248 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "module", - "module-0", - { - rules: [ - { - test: new RegExp(/\.(js|vue)$/), - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["customObj", "'Stringy'"], - options: { - formatter: "'someOption'" - } - }, - { - test: new RegExp(/\.vue$/), - loader: "'vue-loader'", - options: "vueObject" - }, - { - test: new RegExp(/\.js$/), - loader: "'babel-loader'", - include: ["resolve('src')", "resolve('test')"] - }, - { - test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), - loader: "'url-loader'", - options: { - limit: 10000, - name: "utils.assetsPath('img/[name].[hash:7].[ext]')" - } - }, - { - test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), - loader: "'url-loader'", - options: { - limit: "10000", - name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')", - someArr: ["Hey"] - } - } - ] - }, - "init" -); - -defineTest( - __dirname, - "module", - "module-1", - { - noParse: /jquery|lodash/, - rules: [ - { - test: new RegExp(/\.js$/), - parser: { - amd: false - }, - use: [ - "'htmllint-loader'", - { - loader: "'html-loader'", - options: { - hello: "'world'" - } - } - ] - } - ] - }, - "init" -); - -defineTest( - __dirname, - "module", - "module-0", - { - rules: [ - "{{#if_eq build 'standalone'}}", - { - test: new RegExp(/\.(js|vue)$/), - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["customObj", "'Stringy'"], - options: { - formatter: "'someOption'" - } - }, - { - test: new RegExp(/\.vue$/), - loader: "'vue-loader'", - options: "vueObject" - }, - { - test: new RegExp(/\.js$/), - loader: "'babel-loader'", - include: ["resolve('src')", "resolve('test')"] - }, - { - test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), - loader: "'url-loader'", - options: { - limit: 10000, - name: "utils.assetsPath('img/[name].[hash:7].[ext]')", - inject: "{{#if_eq build 'standalone'}}" - } - }, - { - test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), - loader: "'url-loader'", - inject: "{{#if_eq build 'standalone'}}", - options: { - limit: "10000", - name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" - } - } - ] - }, - "init" -); - -defineTest( - __dirname, - "module", - "module-0", - { - rules: [ - { - test: new RegExp(/\.(js|vue)$/), - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["customObj", "'Stringy'"], - options: { - formatter: "'someOption'" - } - }, - { - test: new RegExp(/\.vue$/), - loader: "'vue-loader'", - options: "vueObject" - }, - { - test: new RegExp(/\.js$/), - loader: "'babel-loader'", - include: ["resolve('src')", "resolve('test')"] - }, - { - test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), - loader: "'url-loader'", - options: { - limit: 10000, - name: "utils.assetsPath('img/[name].[hash:7].[ext]')" - } - }, - { - test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), - loader: "'url-loader'", - options: { - limit: "10000", - name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')", - someArr: ["Hey"] - } - } - ] - }, - "init" -); - -defineTest( - __dirname, - "module", - "module-1", - { - noParse: /jquery|lodash/, - rules: [ - { - test: new RegExp(/\.js$/), - parser: { - amd: false - }, - use: [ - "'htmllint-loader'", - { - loader: "'html-loader'", - options: { - hello: "'world'" - } - } - ] - } - ] - }, - "add" -); - -defineTest( - __dirname, - "module", - "module-2", - { - rules: [ - { - test: new RegExp(/\.(js|vue)$/), - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["customObj", "'Stringy'"], - options: { - formatter: "'someOption'" - } - }, - { - test: new RegExp(/\.vue$/), - loader: "'vue-loader'", - options: "vueObject" - }, - { - test: new RegExp(/\.js$/), - loader: "'babel-loader'", - include: ["resolve('src')", "resolve('test')"] - }, - { - test: new RegExp(/\.(png|jpe?g|gif|svg)(\?.*)?$/), - loader: "'url-loader'", - options: { - limit: 10000, - name: "utils.assetsPath('img/[name].[hash:7].[ext]')", - inject: "{{#if_eq build 'standalone'}}" - } - }, - { - test: new RegExp(/\.(woff2?|eot|ttf|otf)(\?.*)?$/), - loader: "'url-loader'", - inject: "{{#if_eq build 'standalone'}}", - options: { - limit: "10000", - name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" - } - } - ] - }, - "add" -); diff --git a/lib/init/transformations/node/__snapshots__/node.test.js.snap b/lib/init/transformations/node/__snapshots__/node.test.js.snap deleted file mode 100644 index c6f9857d484..00000000000 --- a/lib/init/transformations/node/__snapshots__/node.test.js.snap +++ /dev/null @@ -1,22 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`node transforms correctly using "node-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - node: { - console: false, - global: true, - process: true, - Buffer: true, - __filename: mock, - __dirname: mock, - setImmediate: true - } -} -" -`; diff --git a/lib/init/transformations/node/node.js b/lib/init/transformations/node/node.js deleted file mode 100644 index e78961d6e34..00000000000 --- a/lib/init/transformations/node/node.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for node. Finds the node property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function nodeTransform(j, ast, webpackProperties, action) { - function createNodeProperty(p) { - utils.pushCreateProperty(j, p, "node", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "node"); - } - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createNodeProperty)); - } else if (action === "add") { - const nodeNode = utils.findRootNodesByName(j, ast, "node"); - if (nodeNode.size() !== 0) { - return ast - .find(j.ObjectExpression) - .filter(p => utils.pushObjectKeys(j, p, webpackProperties, "node")); - } else { - return nodeTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/node/node.test.js b/lib/init/transformations/node/node.test.js deleted file mode 100644 index e33fa36a1f9..00000000000 --- a/lib/init/transformations/node/node.test.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "node", - "node-0", - { - console: false, - global: true, - process: true, - Buffer: true, - __filename: "mock", - __dirname: "mock", - setImmediate: true - }, - "init" -); diff --git a/lib/init/transformations/other/__snapshots__/other.test.js.snap b/lib/init/transformations/other/__snapshots__/other.test.js.snap deleted file mode 100644 index 2ebc9a1a35d..00000000000 --- a/lib/init/transformations/other/__snapshots__/other.test.js.snap +++ /dev/null @@ -1,316 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`amd transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - amd: { - jQuery: true, - kQuery: false - } -} -" -`; - -exports[`amd transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: false, - kQuery: true - } -}; -" -`; - -exports[`bail transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - bail: true -} -" -`; - -exports[`bail transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: false, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false, - bail: false - } -}; -" -`; - -exports[`cache transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - cache: true -} -" -`; - -exports[`cache transforms correctly using "other-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - cache: cacheVal -} -" -`; - -exports[`cache transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: false, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false, - cache: false - } -}; -" -`; - -exports[`cache transforms correctly using "other-1" data 2`] = ` -"module.exports = { - bail: true, - cache: cacheKey, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false, - cache: cacheKey - } -}; -" -`; - -exports[`merge transforms correctly using "other-0" data 1`] = ` -"module.exports = merge(myConfig, { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -}); -" -`; - -exports[`merge transforms correctly using "other-1" data 1`] = ` -"module.exports = merge(TheirConfig, { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}); -" -`; - -exports[`parallelism transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - parallelism: 10 -} -" -`; - -exports[`parallelism transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 20, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false, - parallelism: 20 - } -}; -" -`; - -exports[`profile transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - profile: true -} -" -`; - -exports[`profile transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: false, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false, - profile: false - } -}; -" -`; - -exports[`recordsInputPath transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - recordsInputPath: path.join('dist', mine) -} -" -`; - -exports[`recordsInputPath transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: path.join('dist', ours), - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}; -" -`; - -exports[`recordsOutputPath transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - recordsOutputPath: path.join('src', yours) -} -" -`; - -exports[`recordsOutputPath transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: path.join('src', theirs), - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}; -" -`; - -exports[`recordsPath transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - recordsPath: path.join(__dirname, 'records.json') -} -" -`; - -exports[`recordsPath transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: path.resolve(__dirname, 'gradle.json'), - amd: { - jQuery: true, - kQuery: false - } -}; -" -`; diff --git a/lib/init/transformations/other/amd.js b/lib/init/transformations/other/amd.js deleted file mode 100644 index d606eba7eb3..00000000000 --- a/lib/init/transformations/other/amd.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for amd. Finds the amd property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function amdTransform(j, ast, webpackProperties, action) { - function createAmdProperty(p) { - utils.pushCreateProperty(j, p, "amd", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "amd"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createAmdProperty)); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "amd", - webpackProperties - ) - ); - } else if (action === "add") { - const amdNode = utils.findRootNodesByName(j, ast, "amd"); - if (amdNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "amd" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (amdNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "amd" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return amdTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/bail.js b/lib/init/transformations/other/bail.js deleted file mode 100644 index 474300f057e..00000000000 --- a/lib/init/transformations/other/bail.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for bail. Finds the bail property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function bailTransform(j, ast, webpackProperties, action) { - if (webpackProperties || typeof webpackProperties === "boolean") { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "bail", - webpackProperties - ) - ); - } else if (action === "add") { - const bailNode = utils.findRootNodesByName(j, ast, "bail"); - if (bailNode.size() !== 0) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "bail", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return bailTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/cache.js b/lib/init/transformations/other/cache.js deleted file mode 100644 index 7c808ee88ff..00000000000 --- a/lib/init/transformations/other/cache.js +++ /dev/null @@ -1,88 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for cache. Finds the cache property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function cacheTransform(j, ast, webpackProperties, action) { - function createCacheProperty(p) { - utils.pushCreateProperty(j, p, "cache", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "cache"); - } - if (webpackProperties || typeof webpackProperties === "boolean") { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createCacheProperty)); - } else if ( - action === "init" && - (webpackProperties.length || typeof webpackProperties === "boolean") - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "cache", - webpackProperties - ) - ); - } else if (action === "add") { - const cacheNode = utils.findRootNodesByName(j, ast, "cache"); - if (cacheNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "cache" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - cacheNode.size() !== 0 && - (typeof webpackProperties === "boolean" || webpackProperties.length > 0) - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "cache", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return cacheTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/merge.js b/lib/init/transformations/other/merge.js deleted file mode 100644 index f77c77882a8..00000000000 --- a/lib/init/transformations/other/merge.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -/** - * - * Transform for merge. Finds the merge property from yeoman and creates a way - * for users to allow webpack-merge in their scaffold - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function(j, ast, webpackProperties, action) { - function createMergeProperty(p) { - // FIXME Use j.callExp() - let exportsDecl = p.value.body.map(n => { - if (n.expression) { - return n.expression.right; - } - }); - const bodyLength = exportsDecl.length; - let newVal = {}; - newVal.type = "ExpressionStatement"; - newVal.expression = { - type: "AssignmentExpression", - operator: "=", - left: { - type: "MemberExpression", - computed: false, - object: j.identifier("module"), - property: j.identifier("exports") - }, - right: j.callExpression(j.identifier("merge"), [ - j.identifier(webpackProperties), - exportsDecl.pop() - ]) - }; - p.value.body[bodyLength - 1] = newVal; - } - if (webpackProperties) { - return ast.find(j.Program).filter(p => createMergeProperty(p)); - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/other.test.js b/lib/init/transformations/other/other.test.js deleted file mode 100644 index 7ef7ed04e7d..00000000000 --- a/lib/init/transformations/other/other.test.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "amd", - "other-0", - { - jQuery: true, - kQuery: false - }, - "init" -); -defineTest(__dirname, "bail", "other-0", true, "init"); -defineTest(__dirname, "cache", "other-0", true, "init"); -defineTest(__dirname, "cache", "other-0", "cacheVal", "init"); -defineTest(__dirname, "profile", "other-0", true, "init"); -defineTest(__dirname, "merge", "other-0", "myConfig", "init"); - -defineTest(__dirname, "parallelism", "other-0", 10, "init"); -defineTest( - __dirname, - "recordsInputPath", - "other-0", - "path.join('dist', mine)", - "init" -); -defineTest( - __dirname, - "recordsOutputPath", - "other-0", - "path.join('src', yours)", - "init" -); -defineTest( - __dirname, - "recordsPath", - "other-0", - "path.join(__dirname, 'records.json')", - "init" -); - -defineTest( - __dirname, - "amd", - "other-1", - { - jQuery: false, - kQuery: true - }, - "add" -); -defineTest(__dirname, "bail", "other-1", false, "add"); -defineTest(__dirname, "cache", "other-1", false, "add"); -defineTest(__dirname, "cache", "other-1", "cacheKey", "add"); -defineTest(__dirname, "profile", "other-1", false, "add"); -defineTest(__dirname, "merge", "other-1", "TheirConfig", "add"); - -defineTest(__dirname, "parallelism", "other-1", 20, "add"); -defineTest( - __dirname, - "recordsInputPath", - "other-1", - "path.join('dist', ours)", - "add" -); -defineTest( - __dirname, - "recordsOutputPath", - "other-1", - "path.join('src', theirs)", - "add" -); -defineTest( - __dirname, - "recordsPath", - "other-1", - "path.resolve(__dirname, 'gradle.json')", - "add" -); diff --git a/lib/init/transformations/other/parallelism.js b/lib/init/transformations/other/parallelism.js deleted file mode 100644 index 6cbe456f11d..00000000000 --- a/lib/init/transformations/other/parallelism.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for parallelism. Finds the parallelism property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function parallelismTransform( - j, - ast, - webpackProperties, - action -) { - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "parallelism", - webpackProperties - ) - ); - } else if (action === "add") { - const parallelismNode = utils.findRootNodesByName(j, ast, "parallelism"); - if (parallelismNode.size() !== 0) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "parallelism", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return parallelismTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/profile.js b/lib/init/transformations/other/profile.js deleted file mode 100644 index a1454ff015b..00000000000 --- a/lib/init/transformations/other/profile.js +++ /dev/null @@ -1,88 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for profile. Finds the profile property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function profileTransform(j, ast, webpackProperties, action) { - function createProfileProperty(p) { - utils.pushCreateProperty(j, p, "profile", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "profile"); - } - if (webpackProperties || typeof webpackProperties === "boolean") { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createProfileProperty)); - } else if ( - action === "init" && - (webpackProperties.length || typeof webpackProperties === "boolean") - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "profile", - webpackProperties - ) - ); - } else if (action === "add") { - const profileNode = utils.findRootNodesByName(j, ast, "profile"); - if (profileNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "profile" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - profileNode.size() !== 0 && - (typeof webpackProperties === "boolean" || webpackProperties.length > 0) - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "profile", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return profileTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/recordsInputPath.js b/lib/init/transformations/other/recordsInputPath.js deleted file mode 100644 index 757d46bdb27..00000000000 --- a/lib/init/transformations/other/recordsInputPath.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for recordsInputPath. Finds the recordsInputPath property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function recordsInputPathTransform( - j, - ast, - webpackProperties, - action -) { - function createRecordsInputPathProperty(p) { - utils.pushCreateProperty(j, p, "recordsInputPath", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "recordsInputPath"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment(null, p, createRecordsInputPathProperty) - ); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "recordsInputPath", - webpackProperties - ) - ); - } else if (action === "add") { - const recordsInputPathNode = utils.findRootNodesByName( - j, - ast, - "recordsInputPath" - ); - if ( - recordsInputPathNode.size() !== 0 && - typeof webpackProperties === "object" - ) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "recordsInputPath" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - recordsInputPathNode.size() !== 0 && - webpackProperties.length > 0 - ) { - return utils - .findRootNodesByName(j, ast, "recordsInputPath") - .forEach(p => { - j(p).replaceWith( - j.property( - "init", - utils.createIdentifierOrLiteral(j, "recordsInputPath"), - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - }); - } else { - return recordsInputPathTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/recordsOutputPath.js b/lib/init/transformations/other/recordsOutputPath.js deleted file mode 100644 index 565c9021907..00000000000 --- a/lib/init/transformations/other/recordsOutputPath.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for recordsOutputPath. Finds the recordsOutputPath property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function recordsOutputPathTransform( - j, - ast, - webpackProperties, - action -) { - function createRecordsOutputPathProperty(p) { - utils.pushCreateProperty(j, p, "recordsOutputPath", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "recordsOutputPath"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment(null, p, createRecordsOutputPathProperty) - ); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "recordsOutputPath", - webpackProperties - ) - ); - } else if (action === "add") { - const recordsOutputPathNode = utils.findRootNodesByName( - j, - ast, - "recordsOutputPath" - ); - if ( - recordsOutputPathNode.size() !== 0 && - typeof webpackProperties === "object" - ) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "recordsOutputPath" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - recordsOutputPathNode.size() !== 0 && - webpackProperties.length > 0 - ) { - return utils - .findRootNodesByName(j, ast, "recordsOutputPath") - .forEach(p => { - j(p).replaceWith( - j.property( - "init", - utils.createIdentifierOrLiteral(j, "recordsOutputPath"), - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - }); - } else { - return recordsOutputPathTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/other/recordsPath.js b/lib/init/transformations/other/recordsPath.js deleted file mode 100644 index d9d3720a7b9..00000000000 --- a/lib/init/transformations/other/recordsPath.js +++ /dev/null @@ -1,89 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for recordsPath. Finds the recordsPath property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function recordsPathTransform( - j, - ast, - webpackProperties, - action -) { - function createRecordsPathProperty(p) { - utils.pushCreateProperty(j, p, "recordsPath", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "recordsPath"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createRecordsPathProperty)); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "recordsPath", - webpackProperties - ) - ); - } else if (action === "add") { - const recordsPathNode = utils.findRootNodesByName(j, ast, "recordsPath"); - if ( - recordsPathNode.size() !== 0 && - typeof webpackProperties === "object" - ) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "recordsPath" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (recordsPathNode.size() !== 0 && webpackProperties.length > 0) { - return recordsPathNode.forEach(p => { - j(p).replaceWith( - j.property( - "init", - utils.createIdentifierOrLiteral(j, "recordsPath"), - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - }); - } else { - return recordsPathTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/output/__snapshots__/output.test.js.snap b/lib/init/transformations/output/__snapshots__/output.test.js.snap deleted file mode 100644 index 1a2703b6c7b..00000000000 --- a/lib/init/transformations/output/__snapshots__/output.test.js.snap +++ /dev/null @@ -1,36 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`output transforms correctly using "output-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle', - path: 'dist/assets', - pathinfo: true, - publicPath: 'https://google.com', - sourceMapFilename: '[name].map', - sourcePrefix: '\\\\t', - umdNamedDefine: true, - strictModuleExceptionHandling: true - } -} -" -`; - -exports[`output transforms correctly using "output-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'app', - path: 'distro/src', - pathinfo: false, - publicPath: 'https://google.com', - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: '\\\\t', - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, -} -" -`; diff --git a/lib/init/transformations/output/output.js b/lib/init/transformations/output/output.js deleted file mode 100644 index f8d0e18795c..00000000000 --- a/lib/init/transformations/output/output.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for output. Finds the output property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function outputTransform(j, ast, webpackProperties, action) { - function createOutputProperty(p) { - utils.pushCreateProperty(j, p, "output", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "output"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createOutputProperty)); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "output", - webpackProperties - ) - ); - } else if (action === "add") { - const outputNode = utils.findRootNodesByName(j, ast, "output"); - if (outputNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "output" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (outputNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "output" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return outputTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/output/output.test.js b/lib/init/transformations/output/output.test.js deleted file mode 100644 index 0be5c563a2f..00000000000 --- a/lib/init/transformations/output/output.test.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); -const jscodeshift = require("jscodeshift"); - -defineTest( - __dirname, - "output", - "output-0", - { - filename: "'bundle'", - path: "'dist/assets'", - pathinfo: true, - publicPath: "'https://google.com'", - sourceMapFilename: "'[name].map'", - sourcePrefix: jscodeshift("'\t'"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - "init" -); - -defineTest( - __dirname, - "output", - "output-1", - { - filename: "'app'", - path: "'distro/src'", - pathinfo: false, - publicPath: "'https://google.com'", - sourcePrefix: jscodeshift("'\t'") - }, - "add" -); diff --git a/lib/init/transformations/performance/__snapshots__/performance.test.js.snap b/lib/init/transformations/performance/__snapshots__/performance.test.js.snap deleted file mode 100644 index 5c09253561a..00000000000 --- a/lib/init/transformations/performance/__snapshots__/performance.test.js.snap +++ /dev/null @@ -1,32 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`performance transforms correctly using "performance-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - performance: { - hints: 'warning', - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: function(assetFilename) {return assetFilename.endsWith('.js');} - } -} -" -`; - -exports[`performance transforms correctly using "performance-1" data 1`] = ` -"module.exports = { - performance: { - hints: 'nuclear-warning', - maxEntrypointSize: 400000, - maxAssetSize: 6969, - assetFilter: - un(assetFilename) {return assetFilename.endsWith('.js');} - } -} -" -`; diff --git a/lib/init/transformations/performance/performance.js b/lib/init/transformations/performance/performance.js deleted file mode 100644 index f352d165e71..00000000000 --- a/lib/init/transformations/performance/performance.js +++ /dev/null @@ -1,92 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for performance. Finds the performance property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function performanceTransform( - j, - ast, - webpackProperties, - action -) { - function createPerformanceProperty(p) { - utils.pushCreateProperty(j, p, "performance", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "performance"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createPerformanceProperty)); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "performance", - webpackProperties - ) - ); - } else if (action === "add") { - const performanceNode = utils.findRootNodesByName(j, ast, "performance"); - if ( - performanceNode.size() !== 0 && - typeof webpackProperties === "object" - ) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "performance" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (performanceNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "performance" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return performanceTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/performance/performance.test.js b/lib/init/transformations/performance/performance.test.js deleted file mode 100644 index 4b610a98e65..00000000000 --- a/lib/init/transformations/performance/performance.test.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "performance", - "performance-0", - { - hints: "'warning'", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - "function(assetFilename) {" + - "return assetFilename.endsWith('.js');" + - "}" - }, - "init" -); - -defineTest( - __dirname, - "performance", - "performance-1", - { - hints: "'nuclear-warning'", - maxAssetSize: 6969, - assetFilter: - "un(assetFilename) {" + "return assetFilename.endsWith('.js');" + "}" - }, - "add" -); diff --git a/lib/init/transformations/plugins/__snapshots__/plugins.test.js.snap b/lib/init/transformations/plugins/__snapshots__/plugins.test.js.snap deleted file mode 100644 index edcbbf62050..00000000000 --- a/lib/init/transformations/plugins/__snapshots__/plugins.test.js.snap +++ /dev/null @@ -1,43 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`plugins transforms correctly using "plugins-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - plugins: [ - new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}) - ] -} -" -`; - -exports[`plugins transforms correctly using "plugins-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - plugins: [new webpack.optimize.DefinePlugin()] -} -" -`; - -exports[`plugins transforms correctly using "plugins-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - plugins: [ - 'something', - new webpack.optimize.DefinePlugin()('/* Add your arguments here */') - ] -} -" -`; diff --git a/lib/init/transformations/plugins/plugins.js b/lib/init/transformations/plugins/plugins.js deleted file mode 100644 index 5119fbc2534..00000000000 --- a/lib/init/transformations/plugins/plugins.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for plugins. Finds the plugins property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function pluginsTransform(j, ast, webpackProperties, action) { - function createPluginsProperty(p) { - const pluginArray = utils.createArrayWithChildren( - j, - "plugins", - webpackProperties, - true - ); - return p.value.properties.push(pluginArray); - } - if (webpackProperties) { - if (Array.isArray(webpackProperties) && action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createPluginsProperty)); - } else if (action === "add") { - const pluginsNode = utils.findRootNodesByName(j, ast, "plugins"); - if (pluginsNode.size() !== 0) { - return pluginsNode.filter(p => { - let node = utils.createFunctionWithArguments(j, p, webpackProperties); - if (node) { - p.value.value.elements.push(node); - } else { - return null; - } - }); - } else { - return pluginsTransform(j, ast, [webpackProperties], "init"); - } - } else if (action === "remove") { - return utils - .findRootNodesByName(j, ast, "plugins") - .filter(p => - p.value.value.elements.filter(name => name !== webpackProperties) - ); - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/plugins/plugins.test.js b/lib/init/transformations/plugins/plugins.test.js deleted file mode 100644 index 448e0c72769..00000000000 --- a/lib/init/transformations/plugins/plugins.test.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "plugins", - "plugins-0", - [ - "new webpack.optimize.CommonsChunkPlugin({name:" + - "'" + - "vendor" + - "'" + - ",filename:" + - "'" + - "vendor" + - "-[hash].min.js'})" - ], - "init" -); - -defineTest( - __dirname, - "plugins", - "plugins-1", - "new webpack.optimize.DefinePlugin()", - "add" -); - -defineTest( - __dirname, - "plugins", - "plugins-0", - "new webpack.optimize.DefinePlugin()", - "add" -); diff --git a/lib/init/transformations/resolve/__snapshots__/resolve.test.js.snap b/lib/init/transformations/resolve/__snapshots__/resolve.test.js.snap deleted file mode 100644 index a9efa8a6090..00000000000 --- a/lib/init/transformations/resolve/__snapshots__/resolve.test.js.snap +++ /dev/null @@ -1,68 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`resolve transforms correctly using "resolve-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - resolve: { - alias: { - {{#if_eq build 'standalone'}}, - hello: 'world', - {{/if_eq}}, - world: hello - }, - - aliasFields: ['browser', wars], - descriptionFiles: ['a', b], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [hey, 'ho'], - mainFields: [main, 'story'], - mainFiles: ['noMainFileHere', iGuess], - modules: [one, 'two'], - unsafeCache: false, - plugins: [somePlugin, 'stringVal'], - symlinks: true - } -} -" -`; - -exports[`resolve transforms correctly using "resolve-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - resolve: { - alias: { - inject: {{#isdf_eq buildasda 'staasdndalone'}}, - hello: 'worlasdd', - inject_1: {{/asd}}, - world: asdc - }, - aliasFields: [\\"'browser'\\", \\"wars\\", 'as'], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\", 'd', e, f], - enforceExtension: true, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\", ok, 'ho'], - mainFields: [\\"main\\", \\"'story'\\", ok], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\", niGuess], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\", ok, 'ho'], - mainFields: [\\"loader\\", \\"'main'\\", ok, 'story'], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: false - } -} -" -`; diff --git a/lib/init/transformations/resolve/resolve.js b/lib/init/transformations/resolve/resolve.js deleted file mode 100644 index d62b55693f4..00000000000 --- a/lib/init/transformations/resolve/resolve.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for resolve. Finds the resolve property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function resolveTransform(j, ast, webpackProperties, action) { - function createResolveProperty(p) { - if (typeof webpackProperties === "string") { - return utils.pushCreateProperty(j, p, "resolve", webpackProperties); - } - if (Array.isArray(webpackProperties)) { - const externalArray = utils.createArrayWithChildren( - j, - "resolve", - webpackProperties, - true - ); - return p.value.properties.push(externalArray); - } else { - utils.pushCreateProperty(j, p, "resolve", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "resolve"); - } - } - function editResolveProperty(p) { - return utils.pushObjectKeys(j, p, webpackProperties, "resolve", true); - } - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createResolveProperty)); - } else if (action === "add") { - const resolveNode = utils.findRootNodesByName(j, ast, "resolve"); - if (resolveNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, editResolveProperty)); - } else if (resolveNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "resolve" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return resolveTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/resolve/resolve.test.js b/lib/init/transformations/resolve/resolve.test.js deleted file mode 100644 index 40cc3ac37e5..00000000000 --- a/lib/init/transformations/resolve/resolve.test.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "resolve", - "resolve-0", - { - alias: { - inject: "{{#if_eq build 'standalone'}}", - hello: "'world'", - inject_1: "{{/if_eq}}", - world: "hello" - }, - aliasFields: ["'browser'", "wars"], - descriptionFiles: ["'a'", "b"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: ["hey", "'ho'"], - mainFields: ["main", "'story'"], - mainFiles: ["'noMainFileHere'", "iGuess"], - modules: ["one", "'two'"], - unsafeCache: false, - plugins: ["somePlugin", "'stringVal'"], - symlinks: true - }, - "init" -); - -defineTest( - __dirname, - "resolve", - "resolve-1", - { - alias: { - inject: "{{#isdf_eq buildasda 'staasdndalone'}}", - hello: "'worlasdd'", - inject_1: "{{/asd}}", - world: "asdc" - }, - aliasFields: ["'as'"], - descriptionFiles: ["'d'", "e", "f"], - enforceExtension: true, - extensions: ["ok", "'ho'"], - mainFields: ["ok", "'story'"], - mainFiles: ["'noMainFileHere'", "niGuess"], - plugins: ["somePlugin", "'stringVal'"], - symlinks: false - }, - "add" -); diff --git a/lib/init/transformations/resolveLoader/__snapshots__/resolveLoader.test.js.snap b/lib/init/transformations/resolveLoader/__snapshots__/resolveLoader.test.js.snap deleted file mode 100644 index f78b86c4da5..00000000000 --- a/lib/init/transformations/resolveLoader/__snapshots__/resolveLoader.test.js.snap +++ /dev/null @@ -1,31 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`resolveLoader transforms correctly using "resolveLoader-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - resolveLoader: { - modules: ['ok', mode_nodules], - mainFields: [no, 'main'], - moduleExtensions: ['-kn', ok] - } -} -" -`; - -exports[`resolveLoader transforms correctly using "resolveLoader-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - resolveLoader: { - moduleExtensions: ['-loader', '-kn', ok] - } -} -" -`; diff --git a/lib/init/transformations/resolveLoader/resolveLoader.js b/lib/init/transformations/resolveLoader/resolveLoader.js deleted file mode 100644 index 5871672c837..00000000000 --- a/lib/init/transformations/resolveLoader/resolveLoader.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for resolveLoader. Finds the resolveLoader property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function resolveLoaderTransform( - j, - ast, - webpackProperties, - action -) { - function createResolveLoaderProperty(p) { - if (typeof webpackProperties === "string") { - return utils.pushCreateProperty(j, p, "resolveLoader", webpackProperties); - } - if (Array.isArray(webpackProperties)) { - const externalArray = utils.createArrayWithChildren( - j, - "resolveLoader", - webpackProperties, - true - ); - return p.value.properties.push(externalArray); - } else { - utils.pushCreateProperty(j, p, "resolveLoader", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "resolveLoader"); - } - } - function editResolveLoaderProperty(p) { - return utils.pushObjectKeys(j, p, webpackProperties, "resolveLoader", true); - } - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createResolveLoaderProperty)); - } else if (action === "add") { - const resolveLoaderNode = utils.findRootNodesByName( - j, - ast, - "resolveLoader" - ); - if ( - resolveLoaderNode.size() !== 0 && - typeof webpackProperties === "object" - ) { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, editResolveLoaderProperty)); - } else if (resolveLoaderNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "resolveLoader" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return resolveLoaderTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/resolveLoader/resolveLoader.test.js b/lib/init/transformations/resolveLoader/resolveLoader.test.js deleted file mode 100644 index fc0192425eb..00000000000 --- a/lib/init/transformations/resolveLoader/resolveLoader.test.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "resolveLoader", - "resolveLoader-0", - { - modules: ["'ok'", "mode_nodules"], - mainFields: ["no", "'main'"], - moduleExtensions: ["'-kn'", "ok"] - }, - "init" -); - -defineTest( - __dirname, - "resolveLoader", - "resolveLoader-1", - { - modules: ["'ok'", "mode_nodules"], - mainFields: ["no", "'main'"], - moduleExtensions: ["'-kn'", "ok"] - }, - "add" -); diff --git a/lib/init/transformations/stats/__snapshots__/stats.test.js.snap b/lib/init/transformations/stats/__snapshots__/stats.test.js.snap deleted file mode 100644 index e78fb4ecf5b..00000000000 --- a/lib/init/transformations/stats/__snapshots__/stats.test.js.snap +++ /dev/null @@ -1,110 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`stats transforms correctly using "stats-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - stats: { - assets: true, - assetsSort: 'field', - cached: true, - cachedAssets: true, - children: true, - chunks: true, - chunkModules: true, - chunkOrigins: true, - chunksSort: 'field', - context: '../src/', - colors: true, - depth: false, - entrypoints: customVal, - errors: true, - errorDetails: true, - exclude: [], - hash: true, - maxModules: 15, - modules: true, - modulesSort: 'field', - performance: true, - providedExports: false, - publicPath: true, - reasons: true, - source: true, - timings: true, - usedExports: false, - version: true, - warnings: true - } -} -" -`; - -exports[`stats transforms correctly using "stats-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - stats: 'errors-only' -} -" -`; - -exports[`stats transforms correctly using "stats-0" data 3`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - stats: { - assets: true, - assetsSort: 'naw', - cached: true, - cachedAssets: true, - children: true, - chunks: true, - version: true, - warnings: false - } -} -" -`; - -exports[`stats transforms correctly using "stats-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - stats: { - assets: true, - assetsSort: 'naw', - cached: true, - cachedAssets: true, - children: true, - chunks: true, - version: true, - warnings: false - } -} -" -`; - -exports[`stats transforms correctly using "stats-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - stats: 'errors-only' -} -" -`; diff --git a/lib/init/transformations/stats/stats.js b/lib/init/transformations/stats/stats.js deleted file mode 100644 index a3acbde940b..00000000000 --- a/lib/init/transformations/stats/stats.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for stats. Finds the stats property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function statsTransform(j, ast, webpackProperties, action) { - function createStatsProperty(p) { - utils.pushCreateProperty(j, p, "stats", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "stats"); - } - if (webpackProperties) { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createStatsProperty)); - } else if (action === "init" && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "stats", - webpackProperties - ) - ); - } else if (action === "add") { - const statsNode = utils.findRootNodesByName(j, ast, "stats"); - if (statsNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "stats" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if (statsNode.size() !== 0 && webpackProperties.length) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "stats" - ) - .forEach(p => { - j(p).replaceWith( - utils.createIdentifierOrLiteral(j, webpackProperties) - ); - }); - } else { - return statsTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/stats/stats.test.js b/lib/init/transformations/stats/stats.test.js deleted file mode 100644 index 7969230b58e..00000000000 --- a/lib/init/transformations/stats/stats.test.js +++ /dev/null @@ -1,76 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "stats", - "stats-0", - { - assets: true, - assetsSort: "'field'", - cached: true, - cachedAssets: true, - children: true, - chunks: true, - chunkModules: true, - chunkOrigins: true, - chunksSort: "'field'", - context: "'../src/'", - colors: true, - depth: false, - entrypoints: "customVal", - errors: true, - errorDetails: true, - exclude: [], - hash: true, - maxModules: 15, - modules: true, - modulesSort: "'field'", - performance: true, - providedExports: false, - publicPath: true, - reasons: true, - source: true, - timings: true, - usedExports: false, - version: true, - warnings: true - }, - "init" -); -defineTest(__dirname, "stats", "stats-0", "'errors-only'", "init"); - -defineTest( - __dirname, - "stats", - "stats-0", - { - assets: true, - assetsSort: "'naw'", - cached: true, - cachedAssets: true, - children: true, - chunks: true, - version: true, - warnings: false - }, - "add" -); -defineTest( - __dirname, - "stats", - "stats-1", - { - assets: true, - assetsSort: "'naw'", - cached: true, - cachedAssets: true, - children: true, - chunks: true, - version: true, - warnings: false - }, - "add" -); -defineTest(__dirname, "stats", "stats-1", "'errors-only'", "add"); diff --git a/lib/init/transformations/target/__snapshots__/target.test.js.snap b/lib/init/transformations/target/__snapshots__/target.test.js.snap deleted file mode 100644 index baf9b79f9da..00000000000 --- a/lib/init/transformations/target/__snapshots__/target.test.js.snap +++ /dev/null @@ -1,65 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`target transforms correctly using "target-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: 'async-node' -} -" -`; - -exports[`target transforms correctly using "target-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: 'async-node' -} -" -`; - -exports[`target transforms correctly using "target-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: node -} -" -`; - -exports[`target transforms correctly using "target-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: 'node' -} -" -`; - -exports[`target transforms correctly using "target-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js', - target: 'node' - }, - target: 'node' -} -" -`; diff --git a/lib/init/transformations/target/target.js b/lib/init/transformations/target/target.js deleted file mode 100644 index c9c9887d28f..00000000000 --- a/lib/init/transformations/target/target.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for target. Finds the target property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function targetTransform(j, ast, webpackProperties, action) { - if (webpackProperties) { - if (action === "init") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "target", - webpackProperties - ) - ); - } else if (action === "add") { - const targetNode = utils.findRootNodesByName(j, ast, "target"); - if (targetNode.size() !== 0) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "target", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return targetTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/target/target.test.js b/lib/init/transformations/target/target.test.js deleted file mode 100644 index 684811faa53..00000000000 --- a/lib/init/transformations/target/target.test.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest(__dirname, "target", "target-0", "'async-node'", "init"); -defineTest(__dirname, "target", "target-1", "node", "init"); - -defineTest(__dirname, "target", "target-0", "'async-node'", "add"); -defineTest(__dirname, "target", "target-1", "'node'", "add"); -defineTest(__dirname, "target", "target-2", "'node'", "add"); diff --git a/lib/init/transformations/top-scope/__snapshots__/top-scope.test.js.snap b/lib/init/transformations/top-scope/__snapshots__/top-scope.test.js.snap deleted file mode 100644 index dd59a02c372..00000000000 --- a/lib/init/transformations/top-scope/__snapshots__/top-scope.test.js.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`top-scope transforms correctly using "top-scope-0" data 1`] = ` -"const test = 'me'; -module.exports = {} -" -`; - -exports[`top-scope transforms correctly using "top-scope-1" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = {} -" -`; diff --git a/lib/init/transformations/top-scope/top-scope.js b/lib/init/transformations/top-scope/top-scope.js deleted file mode 100644 index b897484157f..00000000000 --- a/lib/init/transformations/top-scope/top-scope.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * - * Get an property named topScope from yeoman and inject it to the top scope of - * the config, outside module.exports - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function(j, ast, webpackProperties, action) { - function createTopScopeProperty(p) { - webpackProperties.forEach(n => { - if ( - !p.value.body[0].declarations || - n.indexOf(p.value.body[0].declarations[0].id.name) <= 0 - ) { - p.value.body.splice(-1, 0, n); - } - }); - } - if (webpackProperties) { - return ast.find(j.Program).filter(p => createTopScopeProperty(p)); - } else { - return ast; - } -}; diff --git a/lib/init/transformations/top-scope/top-scope.test.js b/lib/init/transformations/top-scope/top-scope.test.js deleted file mode 100644 index 22f8f5885bc..00000000000 --- a/lib/init/transformations/top-scope/top-scope.test.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "top-scope", - "top-scope-0", - ["const test = 'me';"], - "init" -); -defineTest( - __dirname, - "top-scope", - "top-scope-1", - ["const webpack = require('webpack');"], - "add" -); diff --git a/lib/init/transformations/watch/__snapshots__/watch.test.js.snap b/lib/init/transformations/watch/__snapshots__/watch.test.js.snap deleted file mode 100644 index e52cdb787d3..00000000000 --- a/lib/init/transformations/watch/__snapshots__/watch.test.js.snap +++ /dev/null @@ -1,93 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`watch transforms correctly using "watch-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: true -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 3`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: true -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 4`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: true -} -" -`; - -exports[`watch transforms correctly using "watch-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-4" data 1`] = ` -"module.exports = { - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-4" data 2`] = ` -"module.exports = { - watch: somehin -} -" -`; diff --git a/lib/init/transformations/watch/__snapshots__/watchOptions.test.js.snap b/lib/init/transformations/watch/__snapshots__/watchOptions.test.js.snap deleted file mode 100644 index 0c6485ada36..00000000000 --- a/lib/init/transformations/watch/__snapshots__/watchOptions.test.js.snap +++ /dev/null @@ -1,101 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`watchOptions transforms correctly using "watch-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - watchOptions: { - aggregateTimeout: 100, - poll: 69, - ignored: /node_modules/ - }, - watch: 'me' -} -" -`; - -exports[`watchOptions transforms correctly using "watch-3" data 2`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: abc - }, - watch: 'me' -} -" -`; diff --git a/lib/init/transformations/watch/watch.js b/lib/init/transformations/watch/watch.js deleted file mode 100644 index 57c0c1450e4..00000000000 --- a/lib/init/transformations/watch/watch.js +++ /dev/null @@ -1,85 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for watch. Finds the watch property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function watchTransform(j, ast, webpackProperties, action) { - function createWatchProperty(p) { - utils.pushCreateProperty(j, p, "watch", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "watch"); - } - if (webpackProperties || typeof webpackProperties === "boolean") { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createWatchProperty)); - } else if (action === "init" && typeof webpackProperties === "boolean") { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "watch", - webpackProperties - ) - ); - } else if (action === "add") { - const watchNode = utils.findRootNodesByName(j, ast, "watch"); - if (watchNode.size() !== 0 && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "watch" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - watchNode.size() !== 0 && - (webpackProperties.length || typeof webpackProperties === "boolean") - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "watch", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return watchTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/watch/watch.test.js b/lib/init/transformations/watch/watch.test.js deleted file mode 100644 index de31910e8bc..00000000000 --- a/lib/init/transformations/watch/watch.test.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest(__dirname, "watch", "watch-0", true, "init"); -defineTest(__dirname, "watch", "watch-0", false, "init"); -defineTest(__dirname, "watch", "watch-1", true, "init"); -defineTest(__dirname, "watch", "watch-1", false, "init"); - -defineTest(__dirname, "watch", "watch-0", true, "add"); -defineTest(__dirname, "watch", "watch-0", false, "add"); -defineTest(__dirname, "watch", "watch-4", false, "add"); -defineTest(__dirname, "watch", "watch-4", "somehin", "add"); diff --git a/lib/init/transformations/watch/watchOptions.js b/lib/init/transformations/watch/watchOptions.js deleted file mode 100644 index ef8d807e3e6..00000000000 --- a/lib/init/transformations/watch/watchOptions.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; - -const utils = require("../../../utils/ast-utils"); - -/** - * - * Transform for watchOptions. Finds the watchOptions property from yeoman and creates a - * property based on what the user has given us. - * - * @param j — jscodeshift API - * @param ast - jscodeshift API - * @param {any} webpackProperties - transformation object to scaffold - * @param {String} action - action that indicates what to be done to the AST - * @returns ast - jscodeshift API - */ - -module.exports = function watchOptionsTransform( - j, - ast, - webpackProperties, - action -) { - function createWatchOptionsProperty(p) { - utils.pushCreateProperty(j, p, "watchOptions", j.objectExpression([])); - return utils.pushObjectKeys(j, p, webpackProperties, "watchOptions"); - } - if (webpackProperties || typeof webpackProperties === "boolean") { - if (action === "init" && typeof webpackProperties === "object") { - return ast - .find(j.ObjectExpression) - .filter(p => utils.isAssignment(null, p, createWatchOptionsProperty)); - } else if ( - action === "init" && - (webpackProperties.length || typeof webpackProperties === "boolean") - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.isAssignment( - j, - p, - utils.pushCreateProperty, - "watchOptions", - webpackProperties - ) - ); - } else if (action === "add") { - const watchOptionsNode = utils.findRootNodesByName( - j, - ast, - "watchOptions" - ); - if ( - watchOptionsNode.size() !== 0 && - typeof webpackProperties === "object" - ) { - return ast - .find(j.ObjectExpression) - .filter( - p => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "watchOptions" - ) - .filter(p => { - Object.keys(webpackProperties).forEach(prop => { - utils.checkIfExistsAndAddValue( - j, - p, - prop, - utils.createIdentifierOrLiteral(j, webpackProperties[prop]) - ); - }); - return ast; - }); - } else if ( - watchOptionsNode.size() !== 0 && - (typeof webpackProperties === "boolean" || webpackProperties.length > 0) - ) { - return ast - .find(j.ObjectExpression) - .filter(p => - utils.checkIfExistsAndAddValue( - j, - p, - "watchOptions", - utils.createIdentifierOrLiteral(j, webpackProperties) - ) - ); - } else { - return watchOptionsTransform(j, ast, webpackProperties, "init"); - } - } else if (action === "remove") { - // TODO - } else if (action === "update") { - // TODO - } - } else { - return ast; - } -}; diff --git a/lib/init/transformations/watch/watchOptions.test.js b/lib/init/transformations/watch/watchOptions.test.js deleted file mode 100644 index d55cb68928f..00000000000 --- a/lib/init/transformations/watch/watchOptions.test.js +++ /dev/null @@ -1,71 +0,0 @@ -"use strict"; - -const defineTest = require("../../../utils/defineTest"); - -defineTest( - __dirname, - "watchOptions", - "watch-0", - { - aggregateTimeout: 300, - poll: 1000, - ignored: "/node_modules/" - }, - "init" -); - -defineTest( - __dirname, - "watchOptions", - "watch-1", - { - aggregateTimeout: 300, - poll: 1000, - ignored: "/node_modules/" - }, - "init" -); - -defineTest( - __dirname, - "watchOptions", - "watch-2", - { - aggregateTimeout: 300, - poll: 1000, - ignored: "/node_modules/" - }, - "init" -); - -defineTest( - __dirname, - "watchOptions", - "watch-0", - { - aggregateTimeout: 300, - poll: 1000, - ignored: "/node_modules/" - }, - "add" -); -defineTest( - __dirname, - "watchOptions", - "watch-3", - { - poll: 69, - ignored: "/node_modules/" - }, - "add" -); - -defineTest( - __dirname, - "watchOptions", - "watch-3", - { - ignored: "abc" - }, - "add" -); diff --git a/lib/utils/__snapshots__/ast-utils.test.js.snap b/lib/utils/__snapshots__/ast-utils.test.js.snap index 6065745e190..7f4f8b579f6 100644 --- a/lib/utils/__snapshots__/ast-utils.test.js.snap +++ b/lib/utils/__snapshots__/ast-utils.test.js.snap @@ -1,32 +1,11 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`utils checkIfExistsAndAddValue should create new prop if none exist 1`] = ` -" - module.exports = { - entry: 'index.js', - externals: \\"React\\" - } - " -`; - -exports[`utils checkIfExistsAndAddValue should override prop if it exists 1`] = ` -" - module.exports = { - entry: \\"app.js\\" - } - " -`; - -exports[`utils createArrayWithChildren should add all children of an array to a new one with a supplied key 1`] = `"myVeryOwnKey: ['hello', world]"`; - -exports[`utils createArrayWithChildren should find an prop that matches key and create an array with it 1`] = `"react: ['bo']"`; +exports[`utils createArrayWithChildren should add props to a property 1`] = `"['bo']"`; exports[`utils createEmptyArrayProperty should create an array with no properties 1`] = `"its-lit: []"`; exports[`utils createExternalRegExp should create an regExp property that has been parsed by jscodeshift 1`] = `"\\"\\\\t\\""`; -exports[`utils createFunctionWithArguments Should create a empty function with a name 1`] = `"ringoStar(\\"/* Add your arguments here */\\")"`; - exports[`utils createIdentifierOrLiteral should create basic literal 1`] = `"'stringLiteral'"`; exports[`utils createIdentifierOrLiteral should create boolean 1`] = `"true"`; @@ -35,8 +14,6 @@ exports[`utils createLiteral should create basic literal 1`] = `"\\"stringLitera exports[`utils createLiteral should create boolean 1`] = `"true"`; -exports[`utils createObjectWithSuppliedProperty should create an object with a property supplied by us 1`] = `"its-lit: {}"`; - exports[`utils createOrUpdatePluginByName should add an object as an argument 1`] = ` "[new Plugin({ foo: true @@ -92,42 +69,8 @@ exports[`utils createProperty should create properties for non-literal keys 1`] exports[`utils getRequire should create a require statement 1`] = `"const filesys = require(\\"fs\\");"`; -exports[`utils isAssignment should allow custom transform functions instead of singularProperty 1`] = ` -"module.exports = { - plugins: [one, two, three] -}" -`; - -exports[`utils isAssignment should invoke a callback if parent type is AssignmentExpression 1`] = ` -"module.exports = { - context: Heyho -}" -`; - -exports[`utils loopThroughObjects Should use recursion and add elements to a node 1`] = ` -"module.exports = { - hello: { - webpack: cli - } -}" -`; - -exports[`utils pushCreateProperty should create an object or property and push the value to a node 1`] = ` -"module.exports = { - pushMe: { - just: pushed - } - }" -`; - exports[`utils pushObjectKeys should push object to an node using Object.keys 1`] = ` "module.exports = { - pushMe: { - hello: { - world: { - its: 'great' - } - } - } + pushMe: {} }" `; diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index ee80921241b..2b601a642ff 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -1,5 +1,3 @@ -const hashtable = require("./hashtable"); - function safeTraverse(obj, paths) { let val = obj; let idx = 0; diff --git a/lib/utils/ast-utils.test.js b/lib/utils/ast-utils.test.js index 7dfdf7eeeb9..af1a6f98825 100644 --- a/lib/utils/ast-utils.test.js +++ b/lib/utils/ast-utils.test.js @@ -187,55 +187,10 @@ const a = { plugs: [] } }); }); - describe("checkIfExistsAndAddValue", () => { - it("should create new prop if none exist", () => { - const ast = j(` - module.exports = { - entry: 'index.js' - } - `); - ast - .find(j.ObjectExpression) - .forEach(node => - utils.checkIfExistsAndAddValue( - j, - node, - "externals", - j.literal("React") - ) - ); - expect(ast.toSource()).toMatchSnapshot(); - }); - it("should override prop if it exists", () => { - const ast = j(` - module.exports = { - entry: 'index.js' - } - `); - ast - .find(j.ObjectExpression) - .forEach(node => - utils.checkIfExistsAndAddValue(j, node, "entry", j.literal("app.js")) - ); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); describe("createArrayWithChildren", () => { - it("should find an prop that matches key and create an array with it", () => { - const ast = j("{}"); - let key = "react"; - let reactArr = { - react: ["'bo'"] - }; - const arr = utils.createArrayWithChildren(j, key, reactArr, false); - ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); - expect(ast.toSource()).toMatchSnapshot(); - }); - it("should add all children of an array to a new one with a supplied key", () => { + it("should add props to a property", () => { const ast = j("{}"); - let key = "myVeryOwnKey"; - let helloWorldArray = ["'hello'", "world"]; - const arr = utils.createArrayWithChildren(j, key, helloWorldArray, true); + const arr = utils.createArrayWithChildren(j, ["'bo'"]); ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); expect(ast.toSource()).toMatchSnapshot(); }); @@ -249,18 +204,6 @@ const a = { plugs: [] } }); }); - describe("createObjectWithSuppliedProperty", () => { - it("should create an object with a property supplied by us", () => { - const ast = j("{}"); - const prop = utils.createObjectWithSuppliedProperty( - j, - "its-lit", - j.objectExpression([]) - ); - ast.find(j.Program).forEach(node => j(node).replaceWith(prop)); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); describe("createExternalRegExp", () => { it("should create an regExp property that has been parsed by jscodeshift", () => { const ast = j("{}"); @@ -270,26 +213,6 @@ const a = { plugs: [] } expect(ast.toSource()).toMatchSnapshot(); }); }); - describe("pushCreateProperty", () => { - it("should create an object or property and push the value to a node", () => { - const ast = j(`module.exports = { - pushMe: {} - }`); - ast - .find(j.Identifier) - .filter(n => n.value.name === "pushMe") - .forEach(node => { - const heavyNodeNoSafeTraverse = node.parentPath.value; - utils.pushCreateProperty( - j, - heavyNodeNoSafeTraverse, - "just", - "pushed" - ); - }); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); describe("pushObjectKeys", () => { it("should push object to an node using Object.keys", () => { const ast = j(`module.exports = { @@ -308,65 +231,4 @@ const a = { plugs: [] } expect(ast.toSource()).toMatchSnapshot(); }); }); - describe("loopThroughObjects", () => { - it("Should use recursion and add elements to a node", () => { - const ast = j("module.exports = {}"); - const webpackProperties = { - hello: { - webpack: "cli" - } - }; - ast.find(j.ObjectExpression).forEach(node => { - return utils.loopThroughObjects(j, node.value, webpackProperties); - }); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); - describe("createFunctionWithArguments", () => { - it("Should create a empty function with a name", () => { - const ast = j("module.exports = {plugins: []}"); - const pluginsNode = utils.findRootNodesByName(j, ast, "plugins"); - pluginsNode.forEach(node => { - let expectedPlugin = utils.createFunctionWithArguments( - j, - node, - "ringoStar" - ); - expect(j(expectedPlugin).toSource()).toMatchSnapshot(); - }); - }); - }); - describe("isAssignment", () => { - it("should invoke a callback if parent type is AssignmentExpression", () => { - const ast = j("module.exports = {}"); - const myObj = "Heyho"; - const myKey = "context"; - - ast - .find(j.ObjectExpression) - .filter(n => - utils.isAssignment(j, n, utils.pushCreateProperty, myKey, myObj) - ); - expect(ast.toSource()).toMatchSnapshot(); - }); - it("should allow custom transform functions instead of singularProperty", () => { - const ast = j("module.exports = {}"); - - function createPluginsProperty(p) { - const webpackProperties = { - plugins: ["one", "two", "three"] - }; - const pluginArray = utils.createArrayWithChildren( - j, - "plugins", - webpackProperties - ); - return p.value.properties.push(pluginArray); - } - ast - .find(j.ObjectExpression) - .filter(n => utils.isAssignment(null, n, createPluginsProperty)); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); }); diff --git a/lib/utils/defineTest.js b/lib/utils/defineTest.js index fff0f15487a..3018bdc22d2 100644 --- a/lib/utils/defineTest.js +++ b/lib/utils/defineTest.js @@ -40,8 +40,14 @@ function runSingleTransform( const fixtureDir = path.join(dirName, "__testfixtures__"); const inputPath = path.join(fixtureDir, testFilePrefix + ".input.js"); const source = fs.readFileSync(inputPath, "utf8"); + + let module; // Assumes transform and test are on the same level - const module = require(path.join(dirName, transformName + ".js")); + if (action) { + module = require(path.join(dirName, "index.js")); + } else { + module = require(path.join(dirName, transformName + ".js")); + } // Handle ES6 modules using default export for the transform const transform = module.default ? module.default : module; From c2ef49fa758f161622dcb1ce5e4a5e916628932b Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Wed, 14 Mar 2018 12:42:17 +0100 Subject: [PATCH 05/17] tests(define): swap args --- lib/ast/__snapshots__/ast.test.js.snap | 678 ++++++++++++++++++------- lib/ast/index.js | 2 +- lib/utils/defineTest.js | 2 +- 3 files changed, 505 insertions(+), 177 deletions(-) diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 2f342587a35..08192412a40 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -2,10 +2,16 @@ exports[`amd transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + amd: { + jQuery: true, + kQuery: false + } } " `; @@ -30,10 +36,13 @@ exports[`amd transforms correctly using "other-1" data 1`] = ` exports[`bail transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + bail: true } " `; @@ -58,20 +67,26 @@ exports[`bail transforms correctly using "other-1" data 1`] = ` exports[`cache transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + cache: true } " `; exports[`cache transforms correctly using "other-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + cache: cacheVal } " `; @@ -114,37 +129,47 @@ exports[`cache transforms correctly using "other-1" data 2`] = ` exports[`context transforms correctly using "context-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + context: path.resolve(__dirname, 'app') } " `; exports[`context transforms correctly using "context-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + context: './some/fake/path' } " `; exports[`context transforms correctly using "context-2" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + context: contextVariable } " `; exports[`context transforms correctly using "context-3" data 1`] = ` "module.exports = { - entry: 'index.js', + entry: 'index.js', + context: path.join('dist', mist) } " `; @@ -159,30 +184,47 @@ exports[`context transforms correctly using "context-4" data 1`] = ` exports[`devServer transforms correctly using "devServer-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' }, + + devServer: { + contentBase: path.join(__dirname, 'dist'), + compress: true, + port: 9000 + } } " `; exports[`devServer transforms correctly using "devServer-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devServer: someVar } " `; exports[`devServer transforms correctly using "devServer-2" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devServer: { + contentBase: path.join(__dirname, 'dist'), + compress: true, + port: 9000 + } } " `; @@ -217,70 +259,91 @@ exports[`devServer transforms correctly using "devServer-4" data 1`] = ` exports[`devtool transforms correctly using "devtool-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: 'source-map' } " `; exports[`devtool transforms correctly using "devtool-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: myVariable } " `; exports[`devtool transforms correctly using "devtool-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: 'cheap-module-source-map' } " `; exports[`devtool transforms correctly using "devtool-1" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: false } " `; exports[`devtool transforms correctly using "devtool-2" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: 'source-map' } " `; exports[`devtool transforms correctly using "devtool-3" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: myVariable } " `; exports[`devtool transforms correctly using "devtool-3" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + devtool: 'cheap-module-source-map' } " `; @@ -308,62 +371,97 @@ exports[`devtool transforms correctly using "devtool-4" data 2`] = ` `; exports[`entry transforms correctly using "entry-0" data 1`] = ` -"module.exports = {} +"module.exports = { + entry: 'index.js' +} " `; exports[`entry transforms correctly using "entry-0" data 2`] = ` -"module.exports = {} +"module.exports = { + entry: ['index.js', 'app.js'] +} " `; exports[`entry transforms correctly using "entry-0" data 3`] = ` -"module.exports = {} +"module.exports = { + entry: { + index: 'index.js', + app: 'app.js' + } +} " `; exports[`entry transforms correctly using "entry-0" data 4`] = ` -"module.exports = {} +"module.exports = { + entry: { + inject: something, + app: 'app.js', + inject_1: else + } +} " `; exports[`entry transforms correctly using "entry-0" data 5`] = ` -"module.exports = {} +"module.exports = { + entry: () => 'index.js' +} " `; exports[`entry transforms correctly using "entry-0" data 6`] = ` -"module.exports = {} +"module.exports = { + entry: () => new Promise((resolve) => resolve(['./app', './router'])) +} " `; exports[`entry transforms correctly using "entry-0" data 7`] = ` -"module.exports = {} +"module.exports = { + entry: entryStringVariable +} " `; exports[`entry transforms correctly using "entry-0" data 8`] = ` -"module.exports = {} +"module.exports = { + entry: 'index.js' +} " `; exports[`entry transforms correctly using "entry-0" data 9`] = ` -"module.exports = {} +"module.exports = { + entry: ['index.js', 'app.js'] +} " `; exports[`entry transforms correctly using "entry-0" data 10`] = ` -"module.exports = {} +"module.exports = { + entry: { + inject: something, + ed: 'eddy.js', + inject_1: else + } +} " `; exports[`entry transforms correctly using "entry-0" data 11`] = ` -"module.exports = {} +"module.exports = { + entry: () => new Promise((resolve) => resolve(['./app', './router'])) +} " `; exports[`entry transforms correctly using "entry-0" data 12`] = ` -"module.exports = {} +"module.exports = { + entry: entryStringVariable +} " `; @@ -389,70 +487,112 @@ exports[`entry transforms correctly using "entry-1" data 2`] = ` exports[`externals transforms correctly using "externals-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: {} } " `; exports[`externals transforms correctly using "externals-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: { + jquery: 'jQuery', + react: 'react' + } } " `; exports[`externals transforms correctly using "externals-1" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: myObj } " `; exports[`externals transforms correctly using "externals-1" data 3`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: { + jquery: 'jQuery', + react: reactObj + } } " `; exports[`externals transforms correctly using "externals-1" data 4`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: { + jquery: 'jQuery', + react: [reactObj, path.join(__dirname, 'app'), 'jquery'] + } } " `; exports[`externals transforms correctly using "externals-1" data 5`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: { + lodash: { + commonjs: 'lodash', + amd: 'lodash', + root: '_' + } + } } " `; exports[`externals transforms correctly using "externals-1" data 6`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: { + lodash: { + commonjs: lodash, + amd: hidash, + root: _ + } + } } " `; @@ -479,10 +619,13 @@ exports[`externals transforms correctly using "externals-1" data 8`] = ` exports[`merge transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + merge: myConfig } " `; @@ -506,12 +649,16 @@ exports[`merge transforms correctly using "other-1" data 1`] = ` `; exports[`mode transforms correctly using "mode-1" data 1`] = ` -"module.exports = {}; +"module.exports = { + mode: 'production' +}; " `; exports[`mode transforms correctly using "mode-1" data 2`] = ` -"module.exports = {}; +"module.exports = { + mode: modeVariable +}; " `; @@ -627,10 +774,21 @@ exports[`module transforms correctly using "module-2" data 1`] = ` exports[`node transforms correctly using "node-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + node: { + console: false, + global: true, + process: true, + Buffer: true, + __filename: mock, + __dirname: mock, + setImmediate: true + } } " `; @@ -661,10 +819,13 @@ exports[`output transforms correctly using "output-1" data 1`] = ` exports[`parallelism transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + parallelism: 10 } " `; @@ -689,10 +850,18 @@ exports[`parallelism transforms correctly using "other-1" data 1`] = ` exports[`performance transforms correctly using "performance-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + performance: { + hints: 'warning', + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: function(assetFilename) {return assetFilename.endsWith('.js');} + } } " `; @@ -714,20 +883,28 @@ exports[`performance transforms correctly using "performance-1" data 1`] = ` exports[`plugins transforms correctly using "plugins-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + plugins: [ + new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}) + ] } " `; exports[`plugins transforms correctly using "plugins-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + plugins: new webpack.optimize.DefinePlugin() } " `; @@ -745,10 +922,13 @@ exports[`plugins transforms correctly using "plugins-1" data 1`] = ` exports[`profile transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + profile: true } " `; @@ -773,10 +953,13 @@ exports[`profile transforms correctly using "other-1" data 1`] = ` exports[`recordsInputPath transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + recordsInputPath: path.join('dist', mine) } " `; @@ -801,10 +984,13 @@ exports[`recordsInputPath transforms correctly using "other-1" data 1`] = ` exports[`recordsOutputPath transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + recordsOutputPath: path.join('src', yours) } " `; @@ -829,10 +1015,13 @@ exports[`recordsOutputPath transforms correctly using "other-1" data 1`] = ` exports[`recordsPath transforms correctly using "other-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + recordsPath: path.join(__dirname, 'records.json') } " `; @@ -857,10 +1046,32 @@ exports[`recordsPath transforms correctly using "other-1" data 1`] = ` exports[`resolve transforms correctly using "resolve-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + resolve: { + alias: { + inject: {{#if_eq build 'standalone'}}, + hello: 'world', + inject_1: {{/if_eq}}, + world: hello + }, + + aliasFields: ['browser', wars], + descriptionFiles: ['a', b], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [hey, 'ho'], + mainFields: [main, 'story'], + mainFiles: ['noMainFileHere', iGuess], + modules: [one, 'two'], + unsafeCache: false, + plugins: [somePlugin, 'stringVal'], + symlinks: true + } } " `; @@ -902,10 +1113,17 @@ exports[`resolve transforms correctly using "resolve-1" data 1`] = ` exports[`resolveLoader transforms correctly using "resolveLoader-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + resolveLoader: { + modules: ['ok', mode_nodules], + mainFields: [no, 'main'], + moduleExtensions: ['-kn', ok] + } } " `; @@ -925,30 +1143,78 @@ exports[`resolveLoader transforms correctly using "resolveLoader-1" data 1`] = ` exports[`stats transforms correctly using "stats-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + stats: { + assets: true, + assetsSort: 'field', + cached: true, + cachedAssets: true, + children: true, + chunks: true, + chunkModules: true, + chunkOrigins: true, + chunksSort: 'field', + context: '../src/', + colors: true, + depth: false, + entrypoints: customVal, + errors: true, + errorDetails: true, + exclude: [], + hash: true, + maxModules: 15, + modules: true, + modulesSort: 'field', + performance: true, + providedExports: false, + publicPath: true, + reasons: true, + source: true, + timings: true, + usedExports: false, + version: true, + warnings: true + } } " `; exports[`stats transforms correctly using "stats-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + stats: 'errors-only' } " `; exports[`stats transforms correctly using "stats-0" data 3`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + stats: { + assets: true, + assetsSort: 'naw', + cached: true, + cachedAssets: true, + children: true, + chunks: true, + version: true, + warnings: false + } } " `; @@ -991,40 +1257,52 @@ exports[`stats transforms correctly using "stats-1" data 2`] = ` exports[`target transforms correctly using "target-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + target: 'async-node' } " `; exports[`target transforms correctly using "target-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + target: 'async-node' } " `; exports[`target transforms correctly using "target-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + target: node } " `; exports[`target transforms correctly using "target-1" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + target: 'node' } " `; @@ -1041,73 +1319,95 @@ exports[`target transforms correctly using "target-2" data 1`] = ` `; exports[`top-scope transforms correctly using "top-scope-0" data 1`] = ` -"module.exports = {} +"module.exports = { + top-scope: [const test = 'me';] +} " `; exports[`top-scope transforms correctly using "top-scope-1" data 1`] = ` "const webpack = require(\\"webpack\\"); -module.exports = {} +module.exports = { + top-scope: [const webpack = require('webpack');] +} " `; exports[`watch transforms correctly using "watch-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watch: true } " `; exports[`watch transforms correctly using "watch-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watch: false } " `; exports[`watch transforms correctly using "watch-0" data 3`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watch: true } " `; exports[`watch transforms correctly using "watch-0" data 4`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watch: false } " `; exports[`watch transforms correctly using "watch-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watch: true } " `; exports[`watch transforms correctly using "watch-1" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watch: false } " `; @@ -1128,40 +1428,68 @@ exports[`watch transforms correctly using "watch-4" data 2`] = ` exports[`watchOptions transforms correctly using "watch-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watchOptions: { + aggregateTimeout: 300, + poll: 1000, + ignored: /node_modules/ + } } " `; exports[`watchOptions transforms correctly using "watch-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watchOptions: { + aggregateTimeout: 300, + poll: 1000, + ignored: /node_modules/ + } } " `; exports[`watchOptions transforms correctly using "watch-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watchOptions: { + aggregateTimeout: 300, + poll: 1000, + ignored: /node_modules/ + } } " `; exports[`watchOptions transforms correctly using "watch-2" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + watchOptions: { + aggregateTimeout: 300, + poll: 1000, + ignored: /node_modules/ + } } " `; diff --git a/lib/ast/index.js b/lib/ast/index.js index 830323de3d5..8418f9ce27b 100644 --- a/lib/ast/index.js +++ b/lib/ast/index.js @@ -6,6 +6,7 @@ module.exports = function astTransform(j, ast, value, action, key) { const node = utils.findRootNodesByName(j, ast, key); if (node.size() !== 0) { // push to existing key + return ast; } else { // get module.exports prop const root = ast @@ -29,7 +30,6 @@ module.exports = function astTransform(j, ast, value, action, key) { ); }) .filter(p => p.value.properties); - return root.forEach(p => { utils.addProperty(j, p, key, value); }); diff --git a/lib/utils/defineTest.js b/lib/utils/defineTest.js index 3018bdc22d2..c2cbcdeae47 100644 --- a/lib/utils/defineTest.js +++ b/lib/utils/defineTest.js @@ -59,7 +59,7 @@ function runSingleTransform( } const ast = jscodeshift(source); if (initOptions || typeof initOptions === "boolean") { - return transform(jscodeshift, ast, initOptions, action).toSource({ + return transform(jscodeshift, ast, initOptions, action, transformName).toSource({ quote: "single" }); } From f961419bcdca2d2215cb53269b219f266b1a62dc Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Wed, 25 Apr 2018 19:39:46 +0200 Subject: [PATCH 06/17] ast(parsing): refactor stuff --- lib/ast/__snapshots__/ast.test.js.snap | 362 +++++++++++++++++++++---- lib/utils/ast-utils.js | 39 ++- 2 files changed, 342 insertions(+), 59 deletions(-) diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 08192412a40..c28a7cf8a36 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -9,8 +9,7 @@ exports[`amd transforms correctly using "other-0" data 1`] = ` }, amd: { - jQuery: true, - kQuery: false + jQuery: true } } " @@ -379,7 +378,7 @@ exports[`entry transforms correctly using "entry-0" data 1`] = ` exports[`entry transforms correctly using "entry-0" data 2`] = ` "module.exports = { - entry: ['index.js', 'app.js'] + entry: ['index.js',, 'app.js',,] } " `; @@ -435,7 +434,7 @@ exports[`entry transforms correctly using "entry-0" data 8`] = ` exports[`entry transforms correctly using "entry-0" data 9`] = ` "module.exports = { - entry: ['index.js', 'app.js'] + entry: ['index.js',, 'app.js',,] } " `; @@ -553,7 +552,7 @@ exports[`externals transforms correctly using "externals-1" data 4`] = ` externals: { jquery: 'jQuery', - react: [reactObj, path.join(__dirname, 'app'), 'jquery'] + react: [reactObj,, path.join(__dirname, 'app'),, 'jquery',,] } } " @@ -599,20 +598,33 @@ exports[`externals transforms correctly using "externals-1" data 6`] = ` exports[`externals transforms correctly using "externals-1" data 7`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: [{ + a: false, + b: true, + './ext': ./hey + },, function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();},,] } " `; exports[`externals transforms correctly using "externals-1" data 8`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + externals: [ + myObj, + , function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();}, + ,] } " `; @@ -678,50 +690,204 @@ exports[`mode transforms correctly using "mode-2" data 2`] = ` exports[`module transforms correctly using "module-0" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + module: { + rules: [{ + test: {}, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj,, 'Stringy',,], + + options: { + formatter: 'someOption' + } + },, { + test: {}, + loader: 'vue-loader', + options: vueObject + },, { + test: {}, + loader: 'babel-loader', + include: [resolve('src'),, resolve('test'),,] + },, { + test: {}, + loader: 'url-loader', + + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + },, { + test: {}, + loader: 'url-loader', + + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), + someArr: [Hey,,] + } + },,] + } } " `; exports[`module transforms correctly using "module-0" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + module: { + rules: [{{#if_eq build 'standalone'}},, { + test: {}, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj,, 'Stringy',,], + + options: { + formatter: 'someOption' + } + },, { + test: {}, + loader: 'vue-loader', + options: vueObject + },, { + test: {}, + loader: 'babel-loader', + include: [resolve('src'),, resolve('test'),,] + },, { + test: {}, + loader: 'url-loader', + + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]'), + inject: {{#if_eq build 'standalone'}} + } + },, { + test: {}, + loader: 'url-loader', + inject: {{#if_eq build 'standalone'}}, + + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + },,] + } } " `; exports[`module transforms correctly using "module-0" data 3`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + module: { + rules: [{ + test: {}, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj,, 'Stringy',,], + + options: { + formatter: 'someOption' + } + },, { + test: {}, + loader: 'vue-loader', + options: vueObject + },, { + test: {}, + loader: 'babel-loader', + include: [resolve('src'),, resolve('test'),,] + },, { + test: {}, + loader: 'url-loader', + + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + },, { + test: {}, + loader: 'url-loader', + + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), + someArr: [Hey,,] + } + },,] + } } " `; exports[`module transforms correctly using "module-1" data 1`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + module: { + noParse: {}, + + rules: [{ + test: {}, + parser: {}, + + use: ['htmllint-loader',, { + loader: 'html-loader', + + options: { + hello: 'world' + } + },,] + },,] + } } " `; exports[`module transforms correctly using "module-1" data 2`] = ` "module.exports = { - entry: 'index.js', - output: { + entry: 'index.js', + + output: { filename: 'bundle.js' - } + }, + + module: { + noParse: {}, + + rules: [{ + test: {}, + parser: {}, + + use: ['htmllint-loader',, { + loader: 'html-loader', + + options: { + hello: 'world' + } + },,] + },,] + } } " `; @@ -781,7 +947,6 @@ exports[`node transforms correctly using "node-0" data 1`] = ` }, node: { - console: false, global: true, process: true, Buffer: true, @@ -795,7 +960,111 @@ exports[`node transforms correctly using "node-0" data 1`] = ` exports[`output transforms correctly using "output-0" data 1`] = ` "module.exports = { - entry: 'index.js' + entry: 'index.js', + + output: { + filename: 'bundle', + path: 'dist/assets', + pathinfo: true, + publicPath: 'https://google.com', + sourceMapFilename: '[name].map', + + sourcePrefix: { + __paths: [{ + value: { + type: File, + end: 3, + + loc: { + start: { + line: 1 + }, + + end: { + line: 1, + column: 3 + }, + + lines: { + length: 1 + } + }, + + program: { + type: Program, + end: 3, + + loc: { + start: { + line: 1 + }, + + end: { + line: 1, + column: 3 + }, + + lines: { + length: 1 + } + }, + + sourceType: module, + + body: [{ + type: ExpressionStatement, + end: 3, + + loc: { + start: { + line: 1 + }, + + end: { + line: 1, + column: 3 + }, + + lines: { + length: 1 + } + }, + + expression: { + type: Literal, + end: 3, + + loc: { + start: { + line: 1 + }, + + end: { + line: 1, + column: 3 + }, + + lines: { + length: 1 + } + }, + + value: 0, + raw: ' ' + }, + + directive: 0 + },,] + } + } + },,], + + _types: [File,, Node,, Printable,,] + }, + + umdNamedDefine: true, + strictModuleExceptionHandling: true + } } " `; @@ -890,8 +1159,8 @@ exports[`plugins transforms correctly using "plugins-0" data 1`] = ` }, plugins: [ - new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}) - ] + new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}), + ,] } " `; @@ -1060,16 +1329,13 @@ exports[`resolve transforms correctly using "resolve-0" data 1`] = ` world: hello }, - aliasFields: ['browser', wars], - descriptionFiles: ['a', b], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [hey, 'ho'], - mainFields: [main, 'story'], - mainFiles: ['noMainFileHere', iGuess], - modules: [one, 'two'], - unsafeCache: false, - plugins: [somePlugin, 'stringVal'], + aliasFields: ['browser',, wars,,], + descriptionFiles: ['a',, b,,], + extensions: [hey,, 'ho',,], + mainFields: [main,, 'story',,], + mainFiles: ['noMainFileHere',, iGuess,,], + modules: [one,, 'two',,], + plugins: [somePlugin,, 'stringVal',,], symlinks: true } } @@ -1120,9 +1386,9 @@ exports[`resolveLoader transforms correctly using "resolveLoader-0" data 1`] = ` }, resolveLoader: { - modules: ['ok', mode_nodules], - mainFields: [no, 'main'], - moduleExtensions: ['-kn', ok] + modules: ['ok',, mode_nodules,,], + mainFields: [no,, 'main',,], + moduleExtensions: ['-kn',, ok,,] } } " @@ -1161,7 +1427,6 @@ exports[`stats transforms correctly using "stats-0" data 1`] = ` chunksSort: 'field', context: '../src/', colors: true, - depth: false, entrypoints: customVal, errors: true, errorDetails: true, @@ -1171,12 +1436,10 @@ exports[`stats transforms correctly using "stats-0" data 1`] = ` modules: true, modulesSort: 'field', performance: true, - providedExports: false, publicPath: true, reasons: true, source: true, timings: true, - usedExports: false, version: true, warnings: true } @@ -1212,8 +1475,7 @@ exports[`stats transforms correctly using "stats-0" data 3`] = ` cachedAssets: true, children: true, chunks: true, - version: true, - warnings: false + version: true } } " @@ -1320,7 +1582,7 @@ exports[`target transforms correctly using "target-2" data 1`] = ` exports[`top-scope transforms correctly using "top-scope-0" data 1`] = ` "module.exports = { - top-scope: [const test = 'me';] + top-scope: [const test = 'me';,,] } " `; @@ -1329,7 +1591,7 @@ exports[`top-scope transforms correctly using "top-scope-1" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { - top-scope: [const webpack = require('webpack');] + top-scope: [const webpack = require('webpack');,,] } " `; diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 2b601a642ff..315542c1723 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -321,6 +321,7 @@ function createArrayWithChildren(j, values) { function createExternalRegExp(j, prop) { let regExpProp = prop.__paths[0].value.program.body[0].expression; + console.log(regExpProp.value) return j.literal(regExpProp.value); } @@ -344,25 +345,45 @@ function pushObjectKeys(j, p, values) { function addProperty(j, p, key, value) { let valForNode; - if (!key) { - console.log("No key"); + if(!p) { return; } if (Array.isArray(value)) { - valForNode = createArrayWithChildren(j, value); + const arr = j.arrayExpression([]); + value.filter(val => val).forEach( val => { + arr.elements.push(addProperty(j, arr, null, val)); + }) + valForNode = arr; } else if (typeof value === "object") { // object -> loop through it - valForNode = pushObjectKeys(j, p, value); + let objectExp = j.objectExpression([]); + Object.keys(value).filter(prop => value[prop]).forEach(prop => { + addProperty(j, objectExp, prop, value[prop]); + }); + valForNode = objectExp; } else { valForNode = createIdentifierOrLiteral(j, value); } - const method = j.property("init", j.identifier(key), valForNode); - if (p.properties) { - p.properties.push(method); + let pushVal; + if (key) { + pushVal = j.property("init", j.identifier(key), valForNode); } else { - p.value.properties.push(method); + pushVal = valForNode; + } + if(p.properties) { + p.properties.push(pushVal); + return p; + } + if(p.value && p.value.properties) { + p.value.properties.push(pushVal); + return p; + } + if(p.elements) { + p.elements.push(pushVal); + return; } - return p; + console.log(p) + return; } module.exports = { safeTraverse, From 5b4b623469c7b6ebeab3804a1ad366c095b3c4ab Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 19:18:34 +0200 Subject: [PATCH 07/17] ast(init): refactor --- lib/ast/__snapshots__/ast.test.js.snap | 258 +++++++++---------------- lib/utils/ast-utils.js | 11 +- 2 files changed, 94 insertions(+), 175 deletions(-) diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index c28a7cf8a36..87175f8c8b6 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -9,7 +9,8 @@ exports[`amd transforms correctly using "other-0" data 1`] = ` }, amd: { - jQuery: true + jQuery: true, + kQuery: false } } " @@ -378,7 +379,7 @@ exports[`entry transforms correctly using "entry-0" data 1`] = ` exports[`entry transforms correctly using "entry-0" data 2`] = ` "module.exports = { - entry: ['index.js',, 'app.js',,] + entry: ['index.js', 'app.js'] } " `; @@ -434,7 +435,7 @@ exports[`entry transforms correctly using "entry-0" data 8`] = ` exports[`entry transforms correctly using "entry-0" data 9`] = ` "module.exports = { - entry: ['index.js',, 'app.js',,] + entry: ['index.js', 'app.js'] } " `; @@ -492,7 +493,7 @@ exports[`externals transforms correctly using "externals-0" data 1`] = ` filename: 'bundle.js' }, - externals: {} + externals: /react/ } " `; @@ -552,7 +553,7 @@ exports[`externals transforms correctly using "externals-1" data 4`] = ` externals: { jquery: 'jQuery', - react: [reactObj,, path.join(__dirname, 'app'),, 'jquery',,] + react: [reactObj, path.join(__dirname, 'app'), 'jquery'] } } " @@ -608,7 +609,7 @@ exports[`externals transforms correctly using "externals-1" data 7`] = ` a: false, b: true, './ext': ./hey - },, function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();},,] + }, function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();}] } " `; @@ -623,8 +624,8 @@ exports[`externals transforms correctly using "externals-1" data 8`] = ` externals: [ myObj, - , function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();}, - ,] + function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();} + ] } " `; @@ -698,40 +699,40 @@ exports[`module transforms correctly using "module-0" data 1`] = ` module: { rules: [{ - test: {}, + test: /\\\\.(js|vue)$/, loader: 'eslint-loader', enforce: 'pre', - include: [customObj,, 'Stringy',,], + include: [customObj, 'Stringy'], options: { formatter: 'someOption' } - },, { - test: {}, + }, { + test: /\\\\.vue$/, loader: 'vue-loader', options: vueObject - },, { - test: {}, + }, { + test: /\\\\.js$/, loader: 'babel-loader', - include: [resolve('src'),, resolve('test'),,] - },, { - test: {}, + include: [resolve('src'), resolve('test')] + }, { + test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('img/[name].[hash:7].[ext]') } - },, { - test: {}, + }, { + test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), - someArr: [Hey,,] + someArr: [Hey] } - },,] + }] } } " @@ -746,25 +747,25 @@ exports[`module transforms correctly using "module-0" data 2`] = ` }, module: { - rules: [{{#if_eq build 'standalone'}},, { - test: {}, + rules: [{{#if_eq build 'standalone'}}, { + test: /\\\\.(js|vue)$/, loader: 'eslint-loader', enforce: 'pre', - include: [customObj,, 'Stringy',,], + include: [customObj, 'Stringy'], options: { formatter: 'someOption' } - },, { - test: {}, + }, { + test: /\\\\.vue$/, loader: 'vue-loader', options: vueObject - },, { - test: {}, + }, { + test: /\\\\.js$/, loader: 'babel-loader', - include: [resolve('src'),, resolve('test'),,] - },, { - test: {}, + include: [resolve('src'), resolve('test')] + }, { + test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, loader: 'url-loader', options: { @@ -772,8 +773,8 @@ exports[`module transforms correctly using "module-0" data 2`] = ` name: utils.assetsPath('img/[name].[hash:7].[ext]'), inject: {{#if_eq build 'standalone'}} } - },, { - test: {}, + }, { + test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, loader: 'url-loader', inject: {{#if_eq build 'standalone'}}, @@ -781,7 +782,7 @@ exports[`module transforms correctly using "module-0" data 2`] = ` limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]') } - },,] + }] } } " @@ -797,40 +798,40 @@ exports[`module transforms correctly using "module-0" data 3`] = ` module: { rules: [{ - test: {}, + test: /\\\\.(js|vue)$/, loader: 'eslint-loader', enforce: 'pre', - include: [customObj,, 'Stringy',,], + include: [customObj, 'Stringy'], options: { formatter: 'someOption' } - },, { - test: {}, + }, { + test: /\\\\.vue$/, loader: 'vue-loader', options: vueObject - },, { - test: {}, + }, { + test: /\\\\.js$/, loader: 'babel-loader', - include: [resolve('src'),, resolve('test'),,] - },, { - test: {}, + include: [resolve('src'), resolve('test')] + }, { + test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('img/[name].[hash:7].[ext]') } - },, { - test: {}, + }, { + test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), - someArr: [Hey,,] + someArr: [Hey] } - },,] + }] } } " @@ -845,20 +846,23 @@ exports[`module transforms correctly using "module-1" data 1`] = ` }, module: { - noParse: {}, + noParse: /jquery|lodash/, rules: [{ - test: {}, - parser: {}, + test: /\\\\.js$/, - use: ['htmllint-loader',, { + parser: { + amd: false + }, + + use: ['htmllint-loader', { loader: 'html-loader', options: { hello: 'world' } - },,] - },,] + }] + }] } } " @@ -873,20 +877,23 @@ exports[`module transforms correctly using "module-1" data 2`] = ` }, module: { - noParse: {}, + noParse: /jquery|lodash/, rules: [{ - test: {}, - parser: {}, + test: /\\\\.js$/, + + parser: { + amd: false + }, - use: ['htmllint-loader',, { + use: ['htmllint-loader', { loader: 'html-loader', options: { hello: 'world' } - },,] - },,] + }] + }] } } " @@ -947,6 +954,7 @@ exports[`node transforms correctly using "node-0" data 1`] = ` }, node: { + console: false, global: true, process: true, Buffer: true, @@ -968,100 +976,7 @@ exports[`output transforms correctly using "output-0" data 1`] = ` pathinfo: true, publicPath: 'https://google.com', sourceMapFilename: '[name].map', - - sourcePrefix: { - __paths: [{ - value: { - type: File, - end: 3, - - loc: { - start: { - line: 1 - }, - - end: { - line: 1, - column: 3 - }, - - lines: { - length: 1 - } - }, - - program: { - type: Program, - end: 3, - - loc: { - start: { - line: 1 - }, - - end: { - line: 1, - column: 3 - }, - - lines: { - length: 1 - } - }, - - sourceType: module, - - body: [{ - type: ExpressionStatement, - end: 3, - - loc: { - start: { - line: 1 - }, - - end: { - line: 1, - column: 3 - }, - - lines: { - length: 1 - } - }, - - expression: { - type: Literal, - end: 3, - - loc: { - start: { - line: 1 - }, - - end: { - line: 1, - column: 3 - }, - - lines: { - length: 1 - } - }, - - value: 0, - raw: ' ' - }, - - directive: 0 - },,] - } - } - },,], - - _types: [File,, Node,, Printable,,] - }, - + sourcePrefix: '\\\\t', umdNamedDefine: true, strictModuleExceptionHandling: true } @@ -1159,8 +1074,8 @@ exports[`plugins transforms correctly using "plugins-0" data 1`] = ` }, plugins: [ - new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}), - ,] + new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}) + ] } " `; @@ -1329,13 +1244,16 @@ exports[`resolve transforms correctly using "resolve-0" data 1`] = ` world: hello }, - aliasFields: ['browser',, wars,,], - descriptionFiles: ['a',, b,,], - extensions: [hey,, 'ho',,], - mainFields: [main,, 'story',,], - mainFiles: ['noMainFileHere',, iGuess,,], - modules: [one,, 'two',,], - plugins: [somePlugin,, 'stringVal',,], + aliasFields: ['browser', wars], + descriptionFiles: ['a', b], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [hey, 'ho'], + mainFields: [main, 'story'], + mainFiles: ['noMainFileHere', iGuess], + modules: [one, 'two'], + unsafeCache: false, + plugins: [somePlugin, 'stringVal'], symlinks: true } } @@ -1386,9 +1304,9 @@ exports[`resolveLoader transforms correctly using "resolveLoader-0" data 1`] = ` }, resolveLoader: { - modules: ['ok',, mode_nodules,,], - mainFields: [no,, 'main',,], - moduleExtensions: ['-kn',, ok,,] + modules: ['ok', mode_nodules], + mainFields: [no, 'main'], + moduleExtensions: ['-kn', ok] } } " @@ -1427,6 +1345,7 @@ exports[`stats transforms correctly using "stats-0" data 1`] = ` chunksSort: 'field', context: '../src/', colors: true, + depth: false, entrypoints: customVal, errors: true, errorDetails: true, @@ -1436,10 +1355,12 @@ exports[`stats transforms correctly using "stats-0" data 1`] = ` modules: true, modulesSort: 'field', performance: true, + providedExports: false, publicPath: true, reasons: true, source: true, timings: true, + usedExports: false, version: true, warnings: true } @@ -1475,7 +1396,8 @@ exports[`stats transforms correctly using "stats-0" data 3`] = ` cachedAssets: true, children: true, chunks: true, - version: true + version: true, + warnings: false } } " @@ -1582,7 +1504,7 @@ exports[`target transforms correctly using "target-2" data 1`] = ` exports[`top-scope transforms correctly using "top-scope-0" data 1`] = ` "module.exports = { - top-scope: [const test = 'me';,,] + top-scope: [const test = 'me';] } " `; @@ -1591,7 +1513,7 @@ exports[`top-scope transforms correctly using "top-scope-1" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { - top-scope: [const webpack = require('webpack');,,] + top-scope: [const webpack = require('webpack');] } " `; diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 315542c1723..c37bbd8b4f1 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -142,7 +142,6 @@ function createIdentifierOrLiteral(j, val) { literalVal = Number(val); return j.literal(literalVal); } - if (val.__paths) { return createExternalRegExp(j, val); } else { @@ -321,7 +320,6 @@ function createArrayWithChildren(j, values) { function createExternalRegExp(j, prop) { let regExpProp = prop.__paths[0].value.program.body[0].expression; - console.log(regExpProp.value) return j.literal(regExpProp.value); } @@ -351,13 +349,13 @@ function addProperty(j, p, key, value) { if (Array.isArray(value)) { const arr = j.arrayExpression([]); value.filter(val => val).forEach( val => { - arr.elements.push(addProperty(j, arr, null, val)); + addProperty(j, arr, null, val); }) valForNode = arr; - } else if (typeof value === "object") { + } else if (typeof value === "object" && !(value.__paths || value instanceof RegExp)) { // object -> loop through it let objectExp = j.objectExpression([]); - Object.keys(value).filter(prop => value[prop]).forEach(prop => { + Object.keys(value).forEach(prop => { addProperty(j, objectExp, prop, value[prop]); }); valForNode = objectExp; @@ -380,9 +378,8 @@ function addProperty(j, p, key, value) { } if(p.elements) { p.elements.push(pushVal); - return; + return p; } - console.log(p) return; } module.exports = { From b8f4979792756303636c27e71ca1d40bb4e8d4ad Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 19:39:12 +0200 Subject: [PATCH 08/17] ast(init): refactor tests --- lib/ast/__snapshots__/ast.test.js.snap | 12381 ++++++++++++++-- lib/ast/__testfixtures__/context-0.input.js | 6 - lib/ast/__testfixtures__/context-1.input.js | 6 - lib/ast/__testfixtures__/context-2.input.js | 6 - lib/ast/__testfixtures__/context-3.input.js | 3 - lib/ast/__testfixtures__/context-4.input.js | 4 - lib/ast/__testfixtures__/devServer-0.input.js | 6 - lib/ast/__testfixtures__/devServer-1.input.js | 6 - lib/ast/__testfixtures__/devServer-2.input.js | 6 - lib/ast/__testfixtures__/devServer-3.input.js | 11 - lib/ast/__testfixtures__/devServer-4.input.js | 9 - lib/ast/__testfixtures__/devtool-0.input.js | 6 - lib/ast/__testfixtures__/devtool-1.input.js | 6 - lib/ast/__testfixtures__/devtool-2.input.js | 6 - lib/ast/__testfixtures__/devtool-3.input.js | 6 - lib/ast/__testfixtures__/devtool-4.input.js | 7 - lib/ast/__testfixtures__/entry-0.input.js | 1 - lib/ast/__testfixtures__/entry-1.input.js | 6 - lib/ast/__testfixtures__/externals-0.input.js | 6 - lib/ast/__testfixtures__/externals-1.input.js | 6 - lib/ast/__testfixtures__/externals-2.input.js | 12 - lib/ast/__testfixtures__/fixture-0.input.js | 134 + lib/ast/__testfixtures__/mode-1.input.js | 1 - lib/ast/__testfixtures__/mode-2.input.js | 3 - lib/ast/__testfixtures__/module-0.input.js | 6 - lib/ast/__testfixtures__/module-1.input.js | 6 - lib/ast/__testfixtures__/module-2.input.js | 42 - lib/ast/__testfixtures__/node-0.input.js | 6 - lib/ast/__testfixtures__/other-0.input.js | 6 - lib/ast/__testfixtures__/other-1.input.js | 14 - lib/ast/__testfixtures__/output-0.input.js | 3 - lib/ast/__testfixtures__/output-1.input.js | 13 - .../__testfixtures__/performance-0.input.js | 6 - .../__testfixtures__/performance-1.input.js | 11 - lib/ast/__testfixtures__/plugins-0.input.js | 6 - lib/ast/__testfixtures__/plugins-1.input.js | 7 - lib/ast/__testfixtures__/resolve-0.input.js | 6 - lib/ast/__testfixtures__/resolve-1.input.js | 31 - .../__testfixtures__/resolveLoader-0.input.js | 6 - .../__testfixtures__/resolveLoader-1.input.js | 9 - lib/ast/__testfixtures__/stats-0.input.js | 6 - lib/ast/__testfixtures__/stats-1.input.js | 14 - lib/ast/__testfixtures__/target-0.input.js | 6 - lib/ast/__testfixtures__/target-1.input.js | 6 - lib/ast/__testfixtures__/target-2.input.js | 7 - lib/ast/__testfixtures__/top-scope-0.input.js | 1 - lib/ast/__testfixtures__/top-scope-1.input.js | 3 - lib/ast/__testfixtures__/watch-0.input.js | 6 - lib/ast/__testfixtures__/watch-1.input.js | 6 - lib/ast/__testfixtures__/watch-2.input.js | 6 - lib/ast/__testfixtures__/watch-3.input.js | 12 - lib/ast/__testfixtures__/watch-4.input.js | 3 - lib/ast/ast.test.js | 40 +- lib/utils/ast-utils.js | 19 +- lib/utils/defineTest.js | 8 +- 55 files changed, 11129 insertions(+), 1836 deletions(-) delete mode 100644 lib/ast/__testfixtures__/context-0.input.js delete mode 100644 lib/ast/__testfixtures__/context-1.input.js delete mode 100644 lib/ast/__testfixtures__/context-2.input.js delete mode 100644 lib/ast/__testfixtures__/context-3.input.js delete mode 100644 lib/ast/__testfixtures__/context-4.input.js delete mode 100644 lib/ast/__testfixtures__/devServer-0.input.js delete mode 100644 lib/ast/__testfixtures__/devServer-1.input.js delete mode 100644 lib/ast/__testfixtures__/devServer-2.input.js delete mode 100644 lib/ast/__testfixtures__/devServer-3.input.js delete mode 100644 lib/ast/__testfixtures__/devServer-4.input.js delete mode 100644 lib/ast/__testfixtures__/devtool-0.input.js delete mode 100644 lib/ast/__testfixtures__/devtool-1.input.js delete mode 100644 lib/ast/__testfixtures__/devtool-2.input.js delete mode 100644 lib/ast/__testfixtures__/devtool-3.input.js delete mode 100644 lib/ast/__testfixtures__/devtool-4.input.js delete mode 100644 lib/ast/__testfixtures__/entry-0.input.js delete mode 100644 lib/ast/__testfixtures__/entry-1.input.js delete mode 100644 lib/ast/__testfixtures__/externals-0.input.js delete mode 100644 lib/ast/__testfixtures__/externals-1.input.js delete mode 100644 lib/ast/__testfixtures__/externals-2.input.js create mode 100644 lib/ast/__testfixtures__/fixture-0.input.js delete mode 100644 lib/ast/__testfixtures__/mode-1.input.js delete mode 100644 lib/ast/__testfixtures__/mode-2.input.js delete mode 100644 lib/ast/__testfixtures__/module-0.input.js delete mode 100644 lib/ast/__testfixtures__/module-1.input.js delete mode 100644 lib/ast/__testfixtures__/module-2.input.js delete mode 100644 lib/ast/__testfixtures__/node-0.input.js delete mode 100644 lib/ast/__testfixtures__/other-0.input.js delete mode 100644 lib/ast/__testfixtures__/other-1.input.js delete mode 100644 lib/ast/__testfixtures__/output-0.input.js delete mode 100644 lib/ast/__testfixtures__/output-1.input.js delete mode 100644 lib/ast/__testfixtures__/performance-0.input.js delete mode 100644 lib/ast/__testfixtures__/performance-1.input.js delete mode 100644 lib/ast/__testfixtures__/plugins-0.input.js delete mode 100644 lib/ast/__testfixtures__/plugins-1.input.js delete mode 100644 lib/ast/__testfixtures__/resolve-0.input.js delete mode 100644 lib/ast/__testfixtures__/resolve-1.input.js delete mode 100644 lib/ast/__testfixtures__/resolveLoader-0.input.js delete mode 100644 lib/ast/__testfixtures__/resolveLoader-1.input.js delete mode 100644 lib/ast/__testfixtures__/stats-0.input.js delete mode 100644 lib/ast/__testfixtures__/stats-1.input.js delete mode 100644 lib/ast/__testfixtures__/target-0.input.js delete mode 100644 lib/ast/__testfixtures__/target-1.input.js delete mode 100644 lib/ast/__testfixtures__/target-2.input.js delete mode 100644 lib/ast/__testfixtures__/top-scope-0.input.js delete mode 100644 lib/ast/__testfixtures__/top-scope-1.input.js delete mode 100644 lib/ast/__testfixtures__/watch-0.input.js delete mode 100644 lib/ast/__testfixtures__/watch-1.input.js delete mode 100644 lib/ast/__testfixtures__/watch-2.input.js delete mode 100644 lib/ast/__testfixtures__/watch-3.input.js delete mode 100644 lib/ast/__testfixtures__/watch-4.input.js diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 87175f8c8b6..5082f44dde7 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -1,24 +1,54 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`amd transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', +exports[`amd transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - - amd: { - jQuery: true, - kQuery: false - } -} -" -`; - -exports[`amd transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, cache: true, profile: true, merge: 'NotMuch', @@ -29,27 +59,133 @@ exports[`amd transforms correctly using "other-1" data 1`] = ` amd: { jQuery: true, kQuery: false - } -}; -" + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" `; -exports[`bail transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', +exports[`amd transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - - bail: true -} -" -`; - -exports[`bail transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, cache: true, profile: true, merge: 'NotMuch', @@ -60,40 +196,133 @@ exports[`bail transforms correctly using "other-1" data 1`] = ` amd: { jQuery: true, kQuery: false - } -}; -" -`; - -exports[`cache transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - - cache: true -} -" + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" `; -exports[`cache transforms correctly using "other-0" data 2`] = ` -"module.exports = { - entry: 'index.js', +exports[`amd transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - - cache: cacheVal -} -" -`; - -exports[`cache transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, cache: true, profile: true, merge: 'NotMuch', @@ -104,548 +333,10244 @@ exports[`cache transforms correctly using "other-1" data 1`] = ` amd: { jQuery: true, kQuery: false - } -}; -" -`; - -exports[`cache transforms correctly using "other-1" data 2`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`bail transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`bail transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`bail transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`cache transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`cache transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`cache transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`context transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`context transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`context transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`devServer transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`devServer transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`devServer transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`devtool transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`devtool transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`devtool transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`entry transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`entry transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`entry transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`externals transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`externals transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`externals transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`merge transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`merge transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`merge transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`mode transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`mode transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`mode transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`module transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`module transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`module transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`node transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + + watch: 'me', + context: 'reassign me like one of your french girls', + + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + + devtool: 'eval', + + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + + amd: { + jQuery: true, + kQuery: false + }, + + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + + target: 'something', + + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + + plugins: ['something'], + + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, + + node: path.resolve(__dirname, 'app) +}" +`; + +exports[`node transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + + watch: 'me', + context: 'reassign me like one of your french girls', + + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + + devtool: 'eval', + + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + + amd: { + jQuery: true, + kQuery: false + }, + + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + + target: 'something', + + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + + plugins: ['something'], + + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, + + node: 'string' +}" +`; + +exports[`node transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + + watch: 'me', + context: 'reassign me like one of your french girls', + + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + + devtool: 'eval', + + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + + amd: { + jQuery: true, + kQuery: false + }, + + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + + target: 'something', + + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + + plugins: ['something'], + + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, + + node: { + objects: are, + super: () => duper, + nice: ':)' + } +}" +`; + +exports[`output transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`output transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`output transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`parallelism transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`parallelism transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`parallelism transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`performance transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`performance transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`performance transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`plugins transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`plugins transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`plugins transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`profile transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`profile transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`profile transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsInputPath transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsInputPath transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsInputPath transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsOutputPath transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsOutputPath transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsOutputPath transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsPath transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsPath transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`recordsPath transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`resolve transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`resolve transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`resolve transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`resolveLoader transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`resolveLoader transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`resolveLoader transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`stats transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`stats transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`stats transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`target transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" +`; + +exports[`target transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', recordsPath: 'Brooklyn', amd: { jQuery: true, kQuery: false - } -}; -" -`; - -exports[`context transforms correctly using "context-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - - context: path.resolve(__dirname, 'app') -} -" -`; - -exports[`context transforms correctly using "context-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - - context: './some/fake/path' -} -" +}" `; -exports[`context transforms correctly using "context-2" data 1`] = ` -"module.exports = { - entry: 'index.js', +exports[`target transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - - context: contextVariable -} -" -`; - -exports[`context transforms correctly using "context-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - context: path.join('dist', mist) -} -" +}" `; -exports[`context transforms correctly using "context-4" data 1`] = ` -"module.exports = { - entry: 'index.js', - context: 'reassign me like one of your french girls' -} -" -`; +exports[`topScope transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); -exports[`devServer transforms correctly using "devServer-0" data 1`] = ` -"module.exports = { - entry: 'index.js', +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, output: { - filename: 'bundle.js' - }, - - devServer: { - contentBase: path.join(__dirname, 'dist'), - compress: true, - port: 9000 - } -} -" -`; - -exports[`devServer transforms correctly using "devServer-1" data 1`] = ` -"module.exports = { - entry: 'index.js', + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, - output: { - filename: 'bundle.js' + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - devServer: someVar -} -" -`; - -exports[`devServer transforms correctly using "devServer-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, + watch: 'me', + context: 'reassign me like one of your french girls', devServer: { - contentBase: path.join(__dirname, 'dist'), + contentBase: \\"edSheeran\\", compress: true, - port: 9000 - } -} -" -`; - -exports[`devServer transforms correctly using "devServer-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000 -} -} -" -`; + port: 9000, + empti: \\"ness\\" + }, -exports[`devServer transforms correctly using "devServer-4" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devServer: { - empti: \\"ness\\" - } -} -" -`; + devtool: 'eval', -exports[`devtool transforms correctly using "devtool-0" data 1`] = ` -"module.exports = { - entry: 'index.js', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, - output: { - filename: 'bundle.js' + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" }, - devtool: 'source-map' -} -" -`; + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', -exports[`devtool transforms correctly using "devtool-0" data 2`] = ` -"module.exports = { - entry: 'index.js', + amd: { + jQuery: true, + kQuery: false + }, - output: { - filename: 'bundle.js' - }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, - devtool: myVariable -} -" -`; + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, -exports[`devtool transforms correctly using "devtool-1" data 1`] = ` -"module.exports = { - entry: 'index.js', + target: 'something', - output: { - filename: 'bundle.js' + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - devtool: 'cheap-module-source-map' -} -" -`; - -exports[`devtool transforms correctly using "devtool-1" data 2`] = ` -"module.exports = { - entry: 'index.js', + plugins: ['something'], - output: { - filename: 'bundle.js' + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - devtool: false -} -" + topScope: path.resolve(__dirname, 'app) +}" `; -exports[`devtool transforms correctly using "devtool-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - devtool: 'source-map' -} -" -`; +exports[`topScope transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); -exports[`devtool transforms correctly using "devtool-3" data 1`] = ` -"module.exports = { - entry: 'index.js', +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, output: { - filename: 'bundle.js' - }, + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, - devtool: myVariable -} -" -`; + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, -exports[`devtool transforms correctly using "devtool-3" data 2`] = ` -"module.exports = { - entry: 'index.js', + watch: 'me', + context: 'reassign me like one of your french girls', - output: { - filename: 'bundle.js' - }, + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, - devtool: 'cheap-module-source-map' -} -" -`; + devtool: 'eval', -exports[`devtool transforms correctly using "devtool-4" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devtool: 'eval' -} -" -`; + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, -exports[`devtool transforms correctly using "devtool-4" data 2`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" }, - devtool: 'eval' -} -" -`; -exports[`entry transforms correctly using "entry-0" data 1`] = ` -"module.exports = { - entry: 'index.js' -} -" -`; - -exports[`entry transforms correctly using "entry-0" data 2`] = ` -"module.exports = { - entry: ['index.js', 'app.js'] -} -" -`; + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', -exports[`entry transforms correctly using "entry-0" data 3`] = ` -"module.exports = { - entry: { - index: 'index.js', - app: 'app.js' - } -} -" -`; + amd: { + jQuery: true, + kQuery: false + }, -exports[`entry transforms correctly using "entry-0" data 4`] = ` -"module.exports = { - entry: { - inject: something, - app: 'app.js', - inject_1: else - } -} -" -`; + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, -exports[`entry transforms correctly using "entry-0" data 5`] = ` -"module.exports = { - entry: () => 'index.js' -} -" -`; + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, -exports[`entry transforms correctly using "entry-0" data 6`] = ` -"module.exports = { - entry: () => new Promise((resolve) => resolve(['./app', './router'])) -} -" -`; + target: 'something', -exports[`entry transforms correctly using "entry-0" data 7`] = ` -"module.exports = { - entry: entryStringVariable -} -" -`; + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, -exports[`entry transforms correctly using "entry-0" data 8`] = ` -"module.exports = { - entry: 'index.js' -} -" -`; + plugins: ['something'], -exports[`entry transforms correctly using "entry-0" data 9`] = ` -"module.exports = { - entry: ['index.js', 'app.js'] -} -" -`; + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, -exports[`entry transforms correctly using "entry-0" data 10`] = ` -"module.exports = { - entry: { - inject: something, - ed: 'eddy.js', - inject_1: else - } -} -" + topScope: 'string' +}" `; -exports[`entry transforms correctly using "entry-0" data 11`] = ` -"module.exports = { - entry: () => new Promise((resolve) => resolve(['./app', './router'])) -} -" -`; +exports[`topScope transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); -exports[`entry transforms correctly using "entry-0" data 12`] = ` -"module.exports = { - entry: entryStringVariable -} -" -`; +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, -exports[`entry transforms correctly using "entry-1" data 1`] = ` -"module.exports = { - entry: { - index: 'index.js', - ed: 'sheeran' - } -} -" -`; + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, -exports[`entry transforms correctly using "entry-1" data 2`] = ` -"module.exports = { - entry: { - index: 'index.js', - ed: 'sheeran' - } -} -" -`; + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, -exports[`externals transforms correctly using "externals-0" data 1`] = ` -"module.exports = { - entry: 'index.js', + watch: 'me', + context: 'reassign me like one of your french girls', - output: { - filename: 'bundle.js' - }, + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, - externals: /react/ -} -" -`; + devtool: 'eval', -exports[`externals transforms correctly using "externals-1" data 1`] = ` -"module.exports = { - entry: 'index.js', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, - output: { - filename: 'bundle.js' + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" }, - externals: { - jquery: 'jQuery', - react: 'react' - } -} -" -`; + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', -exports[`externals transforms correctly using "externals-1" data 2`] = ` -"module.exports = { - entry: 'index.js', + amd: { + jQuery: true, + kQuery: false + }, - output: { - filename: 'bundle.js' - }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, - externals: myObj -} -" -`; + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, -exports[`externals transforms correctly using "externals-1" data 3`] = ` -"module.exports = { - entry: 'index.js', + target: 'something', - output: { - filename: 'bundle.js' + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - externals: { - jquery: 'jQuery', - react: reactObj - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 4`] = ` -"module.exports = { - entry: 'index.js', + plugins: ['something'], - output: { - filename: 'bundle.js' + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - externals: { - jquery: 'jQuery', - react: [reactObj, path.join(__dirname, 'app'), 'jquery'] + topScope: { + objects: are, + super: () => duper, + nice: ':)' } -} -" +}" `; -exports[`externals transforms correctly using "externals-1" data 5`] = ` -"module.exports = { - entry: 'index.js', +exports[`watch transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', externals: { - lodash: { + highdash: { commonjs: 'lodash', - amd: 'lodash', - root: '_' + amd: 'lodash' } - } -} -" + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" `; -exports[`externals transforms correctly using "externals-1" data 6`] = ` -"module.exports = { - entry: 'index.js', +exports[`watch transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', externals: { - lodash: { - commonjs: lodash, - amd: hidash, - root: _ + highdash: { + commonjs: 'lodash', + amd: 'lodash' } - } -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 7`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: [{ - a: false, - b: true, - './ext': ./hey - }, function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();}] -} -" -`; - -exports[`externals transforms correctly using "externals-1" data 8`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - externals: [ - myObj, - function(context, request, callback) {if (/^yourregex$/.test(request)){return callback(null, 'commonjs ' + request);}callback();} - ] -} -" -`; - -exports[`merge transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" }, - - merge: myConfig -} -" -`; - -exports[`merge transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, + mode: 'development', + bail: true, cache: true, profile: true, merge: 'NotMuch', @@ -656,255 +10581,319 @@ exports[`merge transforms correctly using "other-1" data 1`] = ` amd: { jQuery: true, kQuery: false - } -}; -" -`; - -exports[`mode transforms correctly using "mode-1" data 1`] = ` -"module.exports = { - mode: 'production' -}; -" -`; - -exports[`mode transforms correctly using "mode-1" data 2`] = ` -"module.exports = { - mode: modeVariable -}; -" -`; - -exports[`mode transforms correctly using "mode-2" data 1`] = ` -"module.exports = { - mode: 'development' -} -" -`; - -exports[`mode transforms correctly using "mode-2" data 2`] = ` -"module.exports = { - mode: 'development' -} -" -`; - -exports[`module transforms correctly using "module-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - - module: { - rules: [{ - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }, { - test: /\\\\.vue$/, - loader: 'vue-loader', - options: vueObject - }, { - test: /\\\\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] - }, { - test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]') - } - }, { - test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), - someArr: [Hey] - } - }] - } -} -" -`; - -exports[`module transforms correctly using "module-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - - module: { - rules: [{{#if_eq build 'standalone'}}, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }, { - test: /\\\\.vue$/, - loader: 'vue-loader', - options: vueObject - }, { - test: /\\\\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] - }, { - test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]'), - inject: {{#if_eq build 'standalone'}} - } - }, { - test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, - loader: 'url-loader', - inject: {{#if_eq build 'standalone'}}, - - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]') - } - }] - } -} -" +}" `; -exports[`module transforms correctly using "module-0" data 3`] = ` -"module.exports = { - entry: 'index.js', +exports[`watch transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - - module: { - rules: [{ - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }, { - test: /\\\\.vue$/, - loader: 'vue-loader', - options: vueObject - }, { - test: /\\\\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] - }, { - test: /\\\\.(png|jpe?g|gif|svg)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]') - } - }, { - test: /\\\\.(woff2?|eot|ttf|otf)(\\\\?.*)?$/, - loader: 'url-loader', - - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]'), - someArr: [Hey] - } - }] - } -} -" -`; - -exports[`module transforms correctly using "module-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" }, - - module: { - noParse: /jquery|lodash/, - - rules: [{ - test: /\\\\.js$/, - - parser: { - amd: false - }, - - use: ['htmllint-loader', { - loader: 'html-loader', - - options: { - hello: 'world' - } - }] - }] - } -} -" -`; - -exports[`module transforms correctly using "module-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - - module: { - noParse: /jquery|lodash/, - - rules: [{ - test: /\\\\.js$/, - - parser: { - amd: false - }, - - use: ['htmllint-loader', { - loader: 'html-loader', - - options: { - hello: 'world' - } - }] - }] - } -} -" + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] + }, +}" `; -exports[`module transforms correctly using "module-2" data 1`] = ` -"module.exports = { - entry: 'index.js', +exports[`watchOptions transforms correctly using "fixture-0" data 1`] = ` +"const webpack = require(\\"webpack\\"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, output: { - filename: 'bundle.js' + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, + plugins: ['something'], module: { rules: [ { @@ -941,52 +10930,17 @@ exports[`module transforms correctly using "module-2" data 1`] = ` } ] }, -} -" -`; - -exports[`node transforms correctly using "node-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - node: { - console: false, - global: true, - process: true, - Buffer: true, - __filename: mock, - __dirname: mock, - setImmediate: true - } -} -" +}" `; -exports[`output transforms correctly using "output-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle', - path: 'dist/assets', - pathinfo: true, - publicPath: 'https://google.com', - sourceMapFilename: '[name].map', - sourcePrefix: '\\\\t', - umdNamedDefine: true, - strictModuleExceptionHandling: true - } -} -" -`; +exports[`watchOptions transforms correctly using "fixture-0" data 2`] = ` +"const webpack = require(\\"webpack\\"); -exports[`output transforms correctly using "output-1" data 1`] = ` -"module.exports = { - entry: 'index.js', +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, output: { filename: \\"'bundle'\\", path: \\"'dist/assets'\\", @@ -996,63 +10950,28 @@ exports[`output transforms correctly using "output-1" data 1`] = ` sourcePrefix: jscodeshift(\\"'\\\\t'\\"), umdNamedDefine: true, strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, -} -" -`; - -exports[`parallelism transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - parallelism: 10 -} -" -`; - -exports[`parallelism transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}; -" -`; - -exports[`performance transforms correctly using "performance-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, performance: { - hints: 'warning', - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: function(assetFilename) {return assetFilename.endsWith('.js');} - } -} -" -`; - -exports[`performance transforms correctly using "performance-1" data 1`] = ` -"module.exports = { - performance: { hints: \\"'warning'\\", maxEntrypointSize: 400000, maxAssetSize: 100000, @@ -1060,66 +10979,9 @@ exports[`performance transforms correctly using "performance-1" data 1`] = ` \\"function(assetFilename) {\\" + \\"return assetFilename.endsWith('.js');\\" + \\"}\\" - } -} -" -`; - -exports[`plugins transforms correctly using "plugins-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - plugins: [ - new webpack.optimize.CommonsChunkPlugin({name:'vendor',filename:'vendor-[hash].min.js'}) - ] -} -" -`; - -exports[`plugins transforms correctly using "plugins-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - plugins: new webpack.optimize.DefinePlugin() -} -" -`; - -exports[`plugins transforms correctly using "plugins-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - plugins: ['something'] -} -" -`; - -exports[`profile transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' }, - - profile: true -} -" -`; - -exports[`profile transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, + mode: 'development', + bail: true, cache: true, profile: true, merge: 'NotMuch', @@ -1130,89 +10992,133 @@ exports[`profile transforms correctly using "other-1" data 1`] = ` amd: { jQuery: true, kQuery: false - } -}; -" -`; - -exports[`recordsInputPath transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: \\"{{#if_eq build 'standalone'}}\\", + hello: \\"'world'\\", + inject_1: \\"{{/if_eq}}\\", + world: \\"hello\\" + }, + aliasFields: [\\"'browser'\\", \\"wars\\"], + descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: [\\"hey\\", \\"ho\\"], + mainFields: [\\"main\\", \\"'story'\\"], + mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], + modules: [\\"one\\", \\"'two'\\"], + unsafeCache: false, + resolveLoader: { + modules: [\\"'node_modules'\\", \\"mode_nodules\\"], + extensions: [\\"jsVal\\", \\"'.json'\\"], + mainFields: [\\"loader\\", \\"'main'\\"], + moduleExtensions: [\\"'-loader'\\", \\"value\\"] + }, + plugins: [\\"somePlugin\\", \\"'stringVal'\\"], + symlinks: true }, - - recordsInputPath: path.join('dist', mine) -} -" -`; - -exports[`recordsInputPath transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}; -" -`; - -exports[`recordsOutputPath transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - - recordsOutputPath: path.join('src', yours) -} -" -`; - -exports[`recordsOutputPath transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}; -" +}" `; -exports[`recordsPath transforms correctly using "other-0" data 1`] = ` -"module.exports = { - entry: 'index.js', +exports[`watchOptions transforms correctly using "fixture-0" data 3`] = ` +"const webpack = require(\\"webpack\\"); - output: { - filename: 'bundle.js' +module.exports = { + entry: { + ed: 'index.js', + sheeran: \\"yea, good shit\\" + }, + output: { + filename: \\"'bundle'\\", + path: \\"'dist/assets'\\", + pathinfo: true, + publicPath: \\"'https://google.com'\\", + sourceMapFilename: \\"'[name].map'\\", + sourcePrefix: jscodeshift(\\"'\\\\t'\\"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: \\"/ok/\\" }, - - recordsPath: path.join(__dirname, 'records.json') -} -" -`; - -exports[`recordsPath transforms correctly using "other-1" data 1`] = ` -"module.exports = { - bail: true, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: \\"edSheeran\\", + compress: true, + port: 9000, + empti: \\"ness\\" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: \\"'warning'\\", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + \\"function(assetFilename) {\\" + + \\"return assetFilename.endsWith('.js');\\" + + \\"}\\" + }, + mode: 'development', + bail: true, cache: true, profile: true, merge: 'NotMuch', @@ -1223,50 +11129,20 @@ exports[`recordsPath transforms correctly using "other-1" data 1`] = ` amd: { jQuery: true, kQuery: false - } -}; -" -`; - -exports[`resolve transforms correctly using "resolve-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - resolve: { - alias: { - inject: {{#if_eq build 'standalone'}}, - hello: 'world', - inject_1: {{/if_eq}}, - world: hello - }, - - aliasFields: ['browser', wars], - descriptionFiles: ['a', b], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [hey, 'ho'], - mainFields: [main, 'story'], - mainFiles: ['noMainFileHere', iGuess], - modules: [one, 'two'], - unsafeCache: false, - plugins: [somePlugin, 'stringVal'], - symlinks: true - } -} -" -`; - -exports[`resolve transforms correctly using "resolve-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - resolve: { + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: \\"'gold'\\", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { alias: { inject: \\"{{#if_eq build 'standalone'}}\\", hello: \\"'world'\\", @@ -1290,422 +11166,43 @@ exports[`resolve transforms correctly using "resolve-1" data 1`] = ` }, plugins: [\\"somePlugin\\", \\"'stringVal'\\"], symlinks: true - } -} -" -`; - -exports[`resolveLoader transforms correctly using "resolveLoader-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - resolveLoader: { - modules: ['ok', mode_nodules], - mainFields: [no, 'main'], - moduleExtensions: ['-kn', ok] - } -} -" -`; - -exports[`resolveLoader transforms correctly using "resolveLoader-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - } -} -" -`; - -exports[`stats transforms correctly using "stats-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - stats: { - assets: true, - assetsSort: 'field', - cached: true, - cachedAssets: true, - children: true, - chunks: true, - chunkModules: true, - chunkOrigins: true, - chunksSort: 'field', - context: '../src/', - colors: true, - depth: false, - entrypoints: customVal, - errors: true, - errorDetails: true, - exclude: [], - hash: true, - maxModules: 15, - modules: true, - modulesSort: 'field', - performance: true, - providedExports: false, - publicPath: true, - reasons: true, - source: true, - timings: true, - usedExports: false, - version: true, - warnings: true - } -} -" -`; - -exports[`stats transforms correctly using "stats-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - stats: 'errors-only' -} -" -`; - -exports[`stats transforms correctly using "stats-0" data 3`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - stats: { - assets: true, - assetsSort: 'naw', - cached: true, - cachedAssets: true, - children: true, - chunks: true, - version: true, - warnings: false - } -} -" -`; - -exports[`stats transforms correctly using "stats-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - } -} -" -`; - -exports[`stats transforms correctly using "stats-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - } -} -" -`; - -exports[`target transforms correctly using "target-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: 'async-node' -} -" -`; - -exports[`target transforms correctly using "target-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: 'async-node' -} -" -`; - -exports[`target transforms correctly using "target-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: node -} -" -`; - -exports[`target transforms correctly using "target-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - target: 'node' -} -" -`; - -exports[`target transforms correctly using "target-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - target: 'something' -} -" -`; - -exports[`top-scope transforms correctly using "top-scope-0" data 1`] = ` -"module.exports = { - top-scope: [const test = 'me';] -} -" -`; - -exports[`top-scope transforms correctly using "top-scope-1" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - top-scope: [const webpack = require('webpack');] -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: true -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 3`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: true -} -" -`; - -exports[`watch transforms correctly using "watch-0" data 4`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: true -} -" -`; - -exports[`watch transforms correctly using "watch-1" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watch: false -} -" -`; - -exports[`watch transforms correctly using "watch-4" data 1`] = ` -"module.exports = { - watch: 'someone' -} -" -`; - -exports[`watch transforms correctly using "watch-4" data 2`] = ` -"module.exports = { - watch: 'someone' -} -" -`; - -exports[`watchOptions transforms correctly using "watch-0" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-0" data 2`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-1" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-2" data 1`] = ` -"module.exports = { - entry: 'index.js', - - output: { - filename: 'bundle.js' - }, - - watchOptions: { - aggregateTimeout: 300, - poll: 1000, - ignored: /node_modules/ - } -} -" -`; - -exports[`watchOptions transforms correctly using "watch-3" data 1`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me' -} -" -`; - -exports[`watchOptions transforms correctly using "watch-3" data 2`] = ` -"module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" + plugins: ['something'], + module: { + rules: [ + { + loader: \\"'eslint-loader'\\", + enforce: \\"'pre'\\", + include: [\\"hey\\", \\"'Stringy'\\"], + options: { + formatter: \\"'someOption'\\" + } + }, + { + loader: \\"'vue-loader'\\", + options: \\"vueObject\\" + }, + { + loader: \\"'babel-loader'\\", + include: [\\"resolve('src')\\", \\"resolve('test')\\"] + }, + { + loader: \\"'url-loader'\\", + options: { + limit: 10000, + name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", + inject: \\"{{#if_eq build 'standalone'}}\\" + } + }, + { + loader: \\"'url-loader'\\", + inject: \\"{{#if_eq build 'standalone'}}\\", + options: { + limit: \\"10000\\", + name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" + } + } + ] }, - watch: 'me' -} -" +}" `; diff --git a/lib/ast/__testfixtures__/context-0.input.js b/lib/ast/__testfixtures__/context-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/context-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/context-1.input.js b/lib/ast/__testfixtures__/context-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/context-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/context-2.input.js b/lib/ast/__testfixtures__/context-2.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/context-2.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/context-3.input.js b/lib/ast/__testfixtures__/context-3.input.js deleted file mode 100644 index b3f3946bbe1..00000000000 --- a/lib/ast/__testfixtures__/context-3.input.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - entry: 'index.js', -} diff --git a/lib/ast/__testfixtures__/context-4.input.js b/lib/ast/__testfixtures__/context-4.input.js deleted file mode 100644 index c9a7cb7d37c..00000000000 --- a/lib/ast/__testfixtures__/context-4.input.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - entry: 'index.js', - context: 'reassign me like one of your french girls' -} diff --git a/lib/ast/__testfixtures__/devServer-0.input.js b/lib/ast/__testfixtures__/devServer-0.input.js deleted file mode 100644 index 080e440f373..00000000000 --- a/lib/ast/__testfixtures__/devServer-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, -} diff --git a/lib/ast/__testfixtures__/devServer-1.input.js b/lib/ast/__testfixtures__/devServer-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/devServer-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/devServer-2.input.js b/lib/ast/__testfixtures__/devServer-2.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/devServer-2.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/devServer-3.input.js b/lib/ast/__testfixtures__/devServer-3.input.js deleted file mode 100644 index cff14a3c463..00000000000 --- a/lib/ast/__testfixtures__/devServer-3.input.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devServer: { - contentBase: "edSheeran", - compress: true, - port: 9000 -} -} diff --git a/lib/ast/__testfixtures__/devServer-4.input.js b/lib/ast/__testfixtures__/devServer-4.input.js deleted file mode 100644 index 747b85cabd8..00000000000 --- a/lib/ast/__testfixtures__/devServer-4.input.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devServer: { - empti: "ness" - } -} diff --git a/lib/ast/__testfixtures__/devtool-0.input.js b/lib/ast/__testfixtures__/devtool-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/devtool-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/devtool-1.input.js b/lib/ast/__testfixtures__/devtool-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/devtool-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/devtool-2.input.js b/lib/ast/__testfixtures__/devtool-2.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/devtool-2.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/devtool-3.input.js b/lib/ast/__testfixtures__/devtool-3.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/devtool-3.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/devtool-4.input.js b/lib/ast/__testfixtures__/devtool-4.input.js deleted file mode 100644 index d7fc037f215..00000000000 --- a/lib/ast/__testfixtures__/devtool-4.input.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - devtool: 'eval' -} diff --git a/lib/ast/__testfixtures__/entry-0.input.js b/lib/ast/__testfixtures__/entry-0.input.js deleted file mode 100644 index 4ba52ba2c8d..00000000000 --- a/lib/ast/__testfixtures__/entry-0.input.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/lib/ast/__testfixtures__/entry-1.input.js b/lib/ast/__testfixtures__/entry-1.input.js deleted file mode 100644 index 03616f38a8f..00000000000 --- a/lib/ast/__testfixtures__/entry-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: { - index: 'index.js', - ed: 'sheeran' - } -} diff --git a/lib/ast/__testfixtures__/externals-0.input.js b/lib/ast/__testfixtures__/externals-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/externals-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/externals-1.input.js b/lib/ast/__testfixtures__/externals-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/externals-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/externals-2.input.js b/lib/ast/__testfixtures__/externals-2.input.js deleted file mode 100644 index 1111c6e4831..00000000000 --- a/lib/ast/__testfixtures__/externals-2.input.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - } -} diff --git a/lib/ast/__testfixtures__/fixture-0.input.js b/lib/ast/__testfixtures__/fixture-0.input.js new file mode 100644 index 00000000000..576e3eb4328 --- /dev/null +++ b/lib/ast/__testfixtures__/fixture-0.input.js @@ -0,0 +1,134 @@ +const webpack = require("webpack"); + +module.exports = { + entry: { + ed: 'index.js', + sheeran: "yea, good shit" + }, + output: { + filename: "'bundle'", + path: "'dist/assets'", + pathinfo: true, + publicPath: "'https://google.com'", + sourceMapFilename: "'[name].map'", + sourcePrefix: jscodeshift("'\t'"), + umdNamedDefine: true, + strictModuleExceptionHandling: true + }, + watchOptions: { + aggregateTimeout: 100, + poll: 90, + ignored: "/ok/" + }, + watch: 'me', + context: 'reassign me like one of your french girls', + devServer: { + contentBase: "edSheeran", + compress: true, + port: 9000, + empti: "ness" + }, + devtool: 'eval', + externals: { + highdash: { + commonjs: 'lodash', + amd: 'lodash' + } + }, + performance: { + hints: "'warning'", + maxEntrypointSize: 400000, + maxAssetSize: 100000, + assetFilter: + "function(assetFilename) {" + + "return assetFilename.endsWith('.js');" + + "}" + }, + mode: 'development', + bail: true, + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + amd: { + jQuery: true, + kQuery: false + }, + resolveLoader: { + moduleExtensions: [ '-loader' ] + }, + stats: { + assets: false, + assetsSort: "'gold'", + cached: true, + cachedAssets: true, + children: false, + chunks: true, + }, + target: 'something', + resolve: { + alias: { + inject: "{{#if_eq build 'standalone'}}", + hello: "'world'", + inject_1: "{{/if_eq}}", + world: "hello" + }, + aliasFields: ["'browser'", "wars"], + descriptionFiles: ["'a'", "b", "'c'"], + enforceExtension: false, + enforceModuleExtension: false, + extensions: ["hey", "ho"], + mainFields: ["main", "'story'"], + mainFiles: ["'noMainFileHere'", "iGuess"], + modules: ["one", "'two'"], + unsafeCache: false, + resolveLoader: { + modules: ["'node_modules'", "mode_nodules"], + extensions: ["jsVal", "'.json'"], + mainFields: ["loader", "'main'"], + moduleExtensions: ["'-loader'", "value"] + }, + plugins: ["somePlugin", "'stringVal'"], + symlinks: true + }, + plugins: ['something'], + module: { + rules: [ + { + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["hey", "'Stringy'"], + options: { + formatter: "'someOption'" + } + }, + { + loader: "'vue-loader'", + options: "vueObject" + }, + { + loader: "'babel-loader'", + include: ["resolve('src')", "resolve('test')"] + }, + { + loader: "'url-loader'", + options: { + limit: 10000, + name: "utils.assetsPath('img/[name].[hash:7].[ext]')", + inject: "{{#if_eq build 'standalone'}}" + } + }, + { + loader: "'url-loader'", + inject: "{{#if_eq build 'standalone'}}", + options: { + limit: "10000", + name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" + } + } + ] + }, +} \ No newline at end of file diff --git a/lib/ast/__testfixtures__/mode-1.input.js b/lib/ast/__testfixtures__/mode-1.input.js deleted file mode 100644 index f053ebf7976..00000000000 --- a/lib/ast/__testfixtures__/mode-1.input.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/lib/ast/__testfixtures__/mode-2.input.js b/lib/ast/__testfixtures__/mode-2.input.js deleted file mode 100644 index d4922f86068..00000000000 --- a/lib/ast/__testfixtures__/mode-2.input.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - mode: 'development' -} diff --git a/lib/ast/__testfixtures__/module-0.input.js b/lib/ast/__testfixtures__/module-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/module-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/module-1.input.js b/lib/ast/__testfixtures__/module-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/module-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/module-2.input.js b/lib/ast/__testfixtures__/module-2.input.js deleted file mode 100644 index c8bebc01efd..00000000000 --- a/lib/ast/__testfixtures__/module-2.input.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - module: { - rules: [ - { - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["hey", "'Stringy'"], - options: { - formatter: "'someOption'" - } - }, - { - loader: "'vue-loader'", - options: "vueObject" - }, - { - loader: "'babel-loader'", - include: ["resolve('src')", "resolve('test')"] - }, - { - loader: "'url-loader'", - options: { - limit: 10000, - name: "utils.assetsPath('img/[name].[hash:7].[ext]')", - inject: "{{#if_eq build 'standalone'}}" - } - }, - { - loader: "'url-loader'", - inject: "{{#if_eq build 'standalone'}}", - options: { - limit: "10000", - name: "utils.assetsPath('fonts/[name].[hash:7].[ext]')" - } - } - ] - }, -} diff --git a/lib/ast/__testfixtures__/node-0.input.js b/lib/ast/__testfixtures__/node-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/node-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/other-0.input.js b/lib/ast/__testfixtures__/other-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/other-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/other-1.input.js b/lib/ast/__testfixtures__/other-1.input.js deleted file mode 100644 index 79a6b3eaa4b..00000000000 --- a/lib/ast/__testfixtures__/other-1.input.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - } -}; diff --git a/lib/ast/__testfixtures__/output-0.input.js b/lib/ast/__testfixtures__/output-0.input.js deleted file mode 100644 index a9899df14fa..00000000000 --- a/lib/ast/__testfixtures__/output-0.input.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - entry: 'index.js' -} diff --git a/lib/ast/__testfixtures__/output-1.input.js b/lib/ast/__testfixtures__/output-1.input.js deleted file mode 100644 index c6a9e1b2d38..00000000000 --- a/lib/ast/__testfixtures__/output-1.input.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: "'bundle'", - path: "'dist/assets'", - pathinfo: true, - publicPath: "'https://google.com'", - sourceMapFilename: "'[name].map'", - sourcePrefix: jscodeshift("'\t'"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, -} diff --git a/lib/ast/__testfixtures__/performance-0.input.js b/lib/ast/__testfixtures__/performance-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/performance-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/performance-1.input.js b/lib/ast/__testfixtures__/performance-1.input.js deleted file mode 100644 index 6071e30d46f..00000000000 --- a/lib/ast/__testfixtures__/performance-1.input.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - performance: { - hints: "'warning'", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - "function(assetFilename) {" + - "return assetFilename.endsWith('.js');" + - "}" - } -} diff --git a/lib/ast/__testfixtures__/plugins-0.input.js b/lib/ast/__testfixtures__/plugins-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/plugins-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/plugins-1.input.js b/lib/ast/__testfixtures__/plugins-1.input.js deleted file mode 100644 index 0c571f0d243..00000000000 --- a/lib/ast/__testfixtures__/plugins-1.input.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - plugins: ['something'] -} diff --git a/lib/ast/__testfixtures__/resolve-0.input.js b/lib/ast/__testfixtures__/resolve-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/resolve-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/resolve-1.input.js b/lib/ast/__testfixtures__/resolve-1.input.js deleted file mode 100644 index 932c3e5451e..00000000000 --- a/lib/ast/__testfixtures__/resolve-1.input.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - resolve: { - alias: { - inject: "{{#if_eq build 'standalone'}}", - hello: "'world'", - inject_1: "{{/if_eq}}", - world: "hello" - }, - aliasFields: ["'browser'", "wars"], - descriptionFiles: ["'a'", "b", "'c'"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: ["hey", "ho"], - mainFields: ["main", "'story'"], - mainFiles: ["'noMainFileHere'", "iGuess"], - modules: ["one", "'two'"], - unsafeCache: false, - resolveLoader: { - modules: ["'node_modules'", "mode_nodules"], - extensions: ["jsVal", "'.json'"], - mainFields: ["loader", "'main'"], - moduleExtensions: ["'-loader'", "value"] - }, - plugins: ["somePlugin", "'stringVal'"], - symlinks: true - } -} diff --git a/lib/ast/__testfixtures__/resolveLoader-0.input.js b/lib/ast/__testfixtures__/resolveLoader-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/resolveLoader-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/resolveLoader-1.input.js b/lib/ast/__testfixtures__/resolveLoader-1.input.js deleted file mode 100644 index 78c751511b3..00000000000 --- a/lib/ast/__testfixtures__/resolveLoader-1.input.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - } -} diff --git a/lib/ast/__testfixtures__/stats-0.input.js b/lib/ast/__testfixtures__/stats-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/stats-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/stats-1.input.js b/lib/ast/__testfixtures__/stats-1.input.js deleted file mode 100644 index 6746b50585e..00000000000 --- a/lib/ast/__testfixtures__/stats-1.input.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - stats: { - assets: false, - assetsSort: "'gold'", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - } -} diff --git a/lib/ast/__testfixtures__/target-0.input.js b/lib/ast/__testfixtures__/target-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/target-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/target-1.input.js b/lib/ast/__testfixtures__/target-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/target-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/target-2.input.js b/lib/ast/__testfixtures__/target-2.input.js deleted file mode 100644 index 6387985d19f..00000000000 --- a/lib/ast/__testfixtures__/target-2.input.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - target: 'something' -} diff --git a/lib/ast/__testfixtures__/top-scope-0.input.js b/lib/ast/__testfixtures__/top-scope-0.input.js deleted file mode 100644 index 4ba52ba2c8d..00000000000 --- a/lib/ast/__testfixtures__/top-scope-0.input.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/lib/ast/__testfixtures__/top-scope-1.input.js b/lib/ast/__testfixtures__/top-scope-1.input.js deleted file mode 100644 index 66b65233d07..00000000000 --- a/lib/ast/__testfixtures__/top-scope-1.input.js +++ /dev/null @@ -1,3 +0,0 @@ -const webpack = require("webpack"); - -module.exports = {} diff --git a/lib/ast/__testfixtures__/watch-0.input.js b/lib/ast/__testfixtures__/watch-0.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/watch-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/watch-1.input.js b/lib/ast/__testfixtures__/watch-1.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/watch-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/watch-2.input.js b/lib/ast/__testfixtures__/watch-2.input.js deleted file mode 100644 index ea0822c2484..00000000000 --- a/lib/ast/__testfixtures__/watch-2.input.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - } -} diff --git a/lib/ast/__testfixtures__/watch-3.input.js b/lib/ast/__testfixtures__/watch-3.input.js deleted file mode 100644 index 25500c14aac..00000000000 --- a/lib/ast/__testfixtures__/watch-3.input.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - entry: 'index.js', - output: { - filename: 'bundle.js' - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: "/ok/" - }, - watch: 'me' -} diff --git a/lib/ast/__testfixtures__/watch-4.input.js b/lib/ast/__testfixtures__/watch-4.input.js deleted file mode 100644 index 67ef2d9266b..00000000000 --- a/lib/ast/__testfixtures__/watch-4.input.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - watch: 'someone' -} diff --git a/lib/ast/ast.test.js b/lib/ast/ast.test.js index ed40cf0dbe3..a9affdf2621 100644 --- a/lib/ast/ast.test.js +++ b/lib/ast/ast.test.js @@ -1,7 +1,43 @@ "use strict"; const defineTest = require("../utils/defineTest"); - +const propTypes = require("../utils/prop-types"); + +propTypes.forEach(prop => { + defineTest( + __dirname, + prop, + "fixture-0", + "path.resolve(__dirname, 'app)", + "init" + ); + defineTest(__dirname, prop, "fixture-0", "'string'", "init"); + + defineTest( + __dirname, + prop, + "fixture-0", + { + objects: "are", + super: [ + "yeah", + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" + } + } + ], + nice: "':)'", + man: "() => duper" + }, + "init" + ); +}); +/* defineTest( __dirname, "context", @@ -344,7 +380,6 @@ defineTest( ], "add" ); -*/ defineTest(__dirname, "mode", "mode-1", "'production'", "init"); defineTest(__dirname, "mode", "mode-1", "modeVariable", "init"); @@ -1031,3 +1066,4 @@ defineTest(__dirname, "watch", "watch-0", true, "add"); defineTest(__dirname, "watch", "watch-0", false, "add"); defineTest(__dirname, "watch", "watch-4", false, "add"); defineTest(__dirname, "watch", "watch-4", "somehin", "add"); +*/ diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index c37bbd8b4f1..20964c169cc 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -343,16 +343,19 @@ function pushObjectKeys(j, p, values) { function addProperty(j, p, key, value) { let valForNode; - if(!p) { + if (!p) { return; } if (Array.isArray(value)) { const arr = j.arrayExpression([]); - value.filter(val => val).forEach( val => { + value.filter(val => val).forEach(val => { addProperty(j, arr, null, val); - }) + }); valForNode = arr; - } else if (typeof value === "object" && !(value.__paths || value instanceof RegExp)) { + } else if ( + typeof value === "object" && + !(value.__paths || value instanceof RegExp) + ) { // object -> loop through it let objectExp = j.objectExpression([]); Object.keys(value).forEach(prop => { @@ -364,19 +367,19 @@ function addProperty(j, p, key, value) { } let pushVal; if (key) { - pushVal = j.property("init", j.identifier(key), valForNode); + pushVal = j.property("init", j.identifier(key), valForNode); } else { pushVal = valForNode; } - if(p.properties) { + if (p.properties) { p.properties.push(pushVal); return p; } - if(p.value && p.value.properties) { + if (p.value && p.value.properties) { p.value.properties.push(pushVal); return p; } - if(p.elements) { + if (p.elements) { p.elements.push(pushVal); return p; } diff --git a/lib/utils/defineTest.js b/lib/utils/defineTest.js index c2cbcdeae47..6e388084687 100644 --- a/lib/utils/defineTest.js +++ b/lib/utils/defineTest.js @@ -59,7 +59,13 @@ function runSingleTransform( } const ast = jscodeshift(source); if (initOptions || typeof initOptions === "boolean") { - return transform(jscodeshift, ast, initOptions, action, transformName).toSource({ + return transform( + jscodeshift, + ast, + initOptions, + action, + transformName + ).toSource({ quote: "single" }); } From af8393d940a149e7b9317f1156b9301b6b31acb3 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 19:40:10 +0200 Subject: [PATCH 09/17] chore(tests): remove some unneeded tests --- lib/ast/__snapshots__/ast.test.js.snap | 7674 +----------------------- lib/ast/ast.test.js | 8 - 2 files changed, 116 insertions(+), 7566 deletions(-) diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 5082f44dde7..dbff0dc5f47 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -137,7 +137,7 @@ module.exports = { }" `; -exports[`amd transforms correctly using "fixture-0" data 2`] = ` +exports[`bail transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -274,7 +274,7 @@ module.exports = { }" `; -exports[`amd transforms correctly using "fixture-0" data 3`] = ` +exports[`cache transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -411,7 +411,7 @@ module.exports = { }" `; -exports[`bail transforms correctly using "fixture-0" data 1`] = ` +exports[`context transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -548,7 +548,7 @@ module.exports = { }" `; -exports[`bail transforms correctly using "fixture-0" data 2`] = ` +exports[`devServer transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -685,7 +685,7 @@ module.exports = { }" `; -exports[`bail transforms correctly using "fixture-0" data 3`] = ` +exports[`devtool transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -822,7 +822,7 @@ module.exports = { }" `; -exports[`cache transforms correctly using "fixture-0" data 1`] = ` +exports[`entry transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -959,7 +959,7 @@ module.exports = { }" `; -exports[`cache transforms correctly using "fixture-0" data 2`] = ` +exports[`externals transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -1096,7 +1096,7 @@ module.exports = { }" `; -exports[`cache transforms correctly using "fixture-0" data 3`] = ` +exports[`merge transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -1233,7 +1233,7 @@ module.exports = { }" `; -exports[`context transforms correctly using "fixture-0" data 1`] = ` +exports[`mode transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -1370,7 +1370,7 @@ module.exports = { }" `; -exports[`context transforms correctly using "fixture-0" data 2`] = ` +exports[`module transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -1507,15 +1507,16 @@ module.exports = { }" `; -exports[`context transforms correctly using "fixture-0" data 3`] = ` +exports[`node transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { - entry: { + entry: { ed: 'index.js', sheeran: \\"yea, good shit\\" }, - output: { + + output: { filename: \\"'bundle'\\", path: \\"'dist/assets'\\", pathinfo: true, @@ -1525,26 +1526,32 @@ module.exports = { umdNamedDefine: true, strictModuleExceptionHandling: true }, + watchOptions: { aggregateTimeout: 100, poll: 90, ignored: \\"/ok/\\" }, - watch: 'me', + + watch: 'me', context: 'reassign me like one of your french girls', + devServer: { contentBase: \\"edSheeran\\", compress: true, port: 9000, empti: \\"ness\\" }, + devtool: 'eval', + externals: { highdash: { commonjs: 'lodash', amd: 'lodash' } }, + performance: { hints: \\"'warning'\\", maxEntrypointSize: 400000, @@ -1554,22 +1561,26 @@ module.exports = { \\"return assetFilename.endsWith('.js');\\" + \\"}\\" }, + mode: 'development', bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + + amd: { jQuery: true, kQuery: false }, + resolveLoader: { moduleExtensions: [ '-loader' ] }, + stats: { assets: false, assetsSort: \\"'gold'\\", @@ -1578,7 +1589,9 @@ module.exports = { children: false, chunks: true, }, + target: 'something', + resolve: { alias: { inject: \\"{{#if_eq build 'standalone'}}\\", @@ -1604,8 +1617,10 @@ module.exports = { plugins: [\\"somePlugin\\", \\"'stringVal'\\"], symlinks: true }, + plugins: ['something'], - module: { + + module: { rules: [ { loader: \\"'eslint-loader'\\", @@ -1641,10 +1656,28 @@ module.exports = { } ] }, + + node: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } }" `; -exports[`devServer transforms correctly using "fixture-0" data 1`] = ` +exports[`output transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -1781,7 +1814,7 @@ module.exports = { }" `; -exports[`devServer transforms correctly using "fixture-0" data 2`] = ` +exports[`parallelism transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -1918,7 +1951,7 @@ module.exports = { }" `; -exports[`devServer transforms correctly using "fixture-0" data 3`] = ` +exports[`performance transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2055,7 +2088,7 @@ module.exports = { }" `; -exports[`devtool transforms correctly using "fixture-0" data 1`] = ` +exports[`plugins transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2192,7 +2225,7 @@ module.exports = { }" `; -exports[`devtool transforms correctly using "fixture-0" data 2`] = ` +exports[`profile transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2329,7 +2362,7 @@ module.exports = { }" `; -exports[`devtool transforms correctly using "fixture-0" data 3`] = ` +exports[`recordsInputPath transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2466,7 +2499,7 @@ module.exports = { }" `; -exports[`entry transforms correctly using "fixture-0" data 1`] = ` +exports[`recordsOutputPath transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2603,7 +2636,7 @@ module.exports = { }" `; -exports[`entry transforms correctly using "fixture-0" data 2`] = ` +exports[`recordsPath transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2740,7 +2773,7 @@ module.exports = { }" `; -exports[`entry transforms correctly using "fixture-0" data 3`] = ` +exports[`resolve transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -2877,7 +2910,7 @@ module.exports = { }" `; -exports[`externals transforms correctly using "fixture-0" data 1`] = ` +exports[`resolveLoader transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -3014,7 +3047,7 @@ module.exports = { }" `; -exports[`externals transforms correctly using "fixture-0" data 2`] = ` +exports[`stats transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -3151,7 +3184,7 @@ module.exports = { }" `; -exports[`externals transforms correctly using "fixture-0" data 3`] = ` +exports[`target transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -3288,15 +3321,16 @@ module.exports = { }" `; -exports[`merge transforms correctly using "fixture-0" data 1`] = ` +exports[`topScope transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { - entry: { + entry: { ed: 'index.js', sheeran: \\"yea, good shit\\" }, - output: { + + output: { filename: \\"'bundle'\\", path: \\"'dist/assets'\\", pathinfo: true, @@ -3306,26 +3340,32 @@ module.exports = { umdNamedDefine: true, strictModuleExceptionHandling: true }, + watchOptions: { aggregateTimeout: 100, poll: 90, ignored: \\"/ok/\\" }, - watch: 'me', + + watch: 'me', context: 'reassign me like one of your french girls', + devServer: { contentBase: \\"edSheeran\\", compress: true, port: 9000, empti: \\"ness\\" }, + devtool: 'eval', + externals: { highdash: { commonjs: 'lodash', amd: 'lodash' } }, + performance: { hints: \\"'warning'\\", maxEntrypointSize: 400000, @@ -3335,22 +3375,26 @@ module.exports = { \\"return assetFilename.endsWith('.js');\\" + \\"}\\" }, + mode: 'development', bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { + cache: true, + profile: true, + merge: 'NotMuch', + parallelism: 69, + recordsInputPath: 'something', + recordsOutputPath: 'else', + recordsPath: 'Brooklyn', + + amd: { jQuery: true, kQuery: false }, + resolveLoader: { moduleExtensions: [ '-loader' ] }, + stats: { assets: false, assetsSort: \\"'gold'\\", @@ -3359,7 +3403,9 @@ module.exports = { children: false, chunks: true, }, + target: 'something', + resolve: { alias: { inject: \\"{{#if_eq build 'standalone'}}\\", @@ -3385,8 +3431,10 @@ module.exports = { plugins: [\\"somePlugin\\", \\"'stringVal'\\"], symlinks: true }, + plugins: ['something'], - module: { + + module: { rules: [ { loader: \\"'eslint-loader'\\", @@ -3422,10 +3470,28 @@ module.exports = { } ] }, + + topScope: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } }" `; -exports[`merge transforms correctly using "fixture-0" data 2`] = ` +exports[`watch transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { @@ -3562,7515 +3628,7 @@ module.exports = { }" `; -exports[`merge transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`mode transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`mode transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`mode transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`module transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`module transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`module transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`node transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - node: path.resolve(__dirname, 'app) -}" -`; - -exports[`node transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - node: 'string' -}" -`; - -exports[`node transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - node: { - objects: are, - super: () => duper, - nice: ':)' - } -}" -`; - -exports[`output transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`output transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`output transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`parallelism transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`parallelism transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`parallelism transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`performance transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`performance transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`performance transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`plugins transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`plugins transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`plugins transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`profile transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`profile transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`profile transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsInputPath transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsInputPath transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsInputPath transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsOutputPath transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsOutputPath transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsOutputPath transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsPath transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsPath transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`recordsPath transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`resolve transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`resolve transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`resolve transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`resolveLoader transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`resolveLoader transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`resolveLoader transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`stats transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`stats transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`stats transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`target transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`target transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`target transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`topScope transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - topScope: path.resolve(__dirname, 'app) -}" -`; - -exports[`topScope transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - topScope: 'string' -}" -`; - -exports[`topScope transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - topScope: { - objects: are, - super: () => duper, - nice: ':)' - } -}" -`; - -exports[`watch transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`watch transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`watch transforms correctly using "fixture-0" data 3`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`watchOptions transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`watchOptions transforms correctly using "fixture-0" data 2`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" -`; - -exports[`watchOptions transforms correctly using "fixture-0" data 3`] = ` +exports[`watchOptions transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); module.exports = { diff --git a/lib/ast/ast.test.js b/lib/ast/ast.test.js index a9affdf2621..96e3fc299cb 100644 --- a/lib/ast/ast.test.js +++ b/lib/ast/ast.test.js @@ -4,14 +4,6 @@ const defineTest = require("../utils/defineTest"); const propTypes = require("../utils/prop-types"); propTypes.forEach(prop => { - defineTest( - __dirname, - prop, - "fixture-0", - "path.resolve(__dirname, 'app)", - "init" - ); - defineTest(__dirname, prop, "fixture-0", "'string'", "init"); defineTest( __dirname, From c64ed99556af7dddd7a75e19a7513237c770b0ac Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 19:43:41 +0200 Subject: [PATCH 10/17] chore(pkg): update package.json --- package-lock.json | 6106 ++++++++++++++++++++++----------------------- package.json | 1 - 2 files changed, 3053 insertions(+), 3054 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e43d9ba20c..a1e816be5eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,9 @@ "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", "dev": true, "requires": { - "chalk": "2.3.2", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" } }, "@commitlint/cli": { @@ -30,10 +30,10 @@ "integrity": "sha1-RgbhOLBbQwNNyErxXaGOITkFhTc=", "dev": true, "requires": { - "@commitlint/format": "6.1.3", - "@commitlint/lint": "6.1.3", - "@commitlint/load": "6.1.3", - "@commitlint/read": "6.1.3", + "@commitlint/format": "^6.1.3", + "@commitlint/lint": "^6.1.3", + "@commitlint/load": "^6.1.3", + "@commitlint/read": "^6.1.3", "babel-polyfill": "6.26.0", "chalk": "2.3.1", "get-stdin": "5.0.1", @@ -48,9 +48,9 @@ "integrity": "sha512-QUU4ofkDoMIVO7hcx1iPTISs88wsO8jA92RQIm4JAwZvFGGAV2hSAA1NX7oVj2Ej2Q6NDTcRDjPTFrMCRZoJ6g==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "ansi-styles": "^3.2.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.2.0" } } } @@ -83,8 +83,8 @@ "integrity": "sha1-QUuQSKmvVFh9qWIicXujMjR6veM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "chalk": "2.3.2" + "babel-runtime": "^6.23.0", + "chalk": "^2.0.1" } }, "@commitlint/is-ignored": { @@ -102,10 +102,10 @@ "integrity": "sha1-aneI6uOBrahz90IeMVWecgPKrfM=", "dev": true, "requires": { - "@commitlint/is-ignored": "6.1.3", - "@commitlint/parse": "6.1.3", - "@commitlint/rules": "6.1.3", - "babel-runtime": "6.26.0", + "@commitlint/is-ignored": "^6.1.3", + "@commitlint/parse": "^6.1.3", + "@commitlint/rules": "^6.1.3", + "babel-runtime": "^6.23.0", "lodash.topairs": "4.3.0" } }, @@ -115,10 +115,10 @@ "integrity": "sha1-G+QHETl5WPMWz0BXepyHmhbwClQ=", "dev": true, "requires": { - "@commitlint/execute-rule": "6.1.3", - "@commitlint/resolve-extends": "6.1.3", - "babel-runtime": "6.26.0", - "cosmiconfig": "4.0.0", + "@commitlint/execute-rule": "^6.1.3", + "@commitlint/resolve-extends": "^6.1.3", + "babel-runtime": "^6.23.0", + "cosmiconfig": "^4.0.0", "lodash.merge": "4.6.1", "lodash.mergewith": "4.6.1", "lodash.pick": "4.4.0", @@ -146,8 +146,8 @@ "integrity": "sha1-/x5NksJ81naBK7a512zYhTwNlAc=", "dev": true, "requires": { - "conventional-changelog-angular": "1.6.6", - "conventional-commits-parser": "2.1.5" + "conventional-changelog-angular": "^1.3.3", + "conventional-commits-parser": "^2.1.0" } }, "@commitlint/prompt": { @@ -156,17 +156,17 @@ "integrity": "sha1-yk3uWCocJClyZta7b16w7UWh20Y=", "dev": true, "requires": { - "@commitlint/load": "6.1.3", - "babel-runtime": "6.26.0", - "chalk": "2.3.2", + "@commitlint/load": "^6.1.3", + "babel-runtime": "^6.23.0", + "chalk": "^2.0.0", "lodash.camelcase": "4.3.0", "lodash.kebabcase": "4.1.1", "lodash.snakecase": "4.1.1", "lodash.startcase": "4.4.0", "lodash.topairs": "4.3.0", "lodash.upperfirst": "4.3.1", - "throat": "4.1.0", - "vorpal": "1.12.0" + "throat": "^4.1.0", + "vorpal": "^1.10.0" } }, "@commitlint/prompt-cli": { @@ -175,7 +175,7 @@ "integrity": "sha1-pptfmH2siFZvYQ3sMesn5Ya5xJU=", "dev": true, "requires": { - "@commitlint/prompt": "6.1.3", + "@commitlint/prompt": "^6.1.3", "execa": "0.9.0", "meow": "3.7.0" }, @@ -186,9 +186,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "execa": { @@ -197,13 +197,13 @@ "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" } } } @@ -214,10 +214,10 @@ "integrity": "sha1-n52NtQ+/Z/MACSFlftbvrbjPnxo=", "dev": true, "requires": { - "@commitlint/top-level": "6.1.3", - "@marionebl/sander": "0.6.1", - "babel-runtime": "6.26.0", - "git-raw-commits": "1.3.4" + "@commitlint/top-level": "^6.1.3", + "@marionebl/sander": "^0.6.0", + "babel-runtime": "^6.23.0", + "git-raw-commits": "^1.3.0" } }, "@commitlint/resolve-extends": { @@ -229,9 +229,9 @@ "babel-runtime": "6.26.0", "lodash.merge": "4.6.1", "lodash.omit": "4.5.0", - "require-uncached": "1.0.3", - "resolve-from": "4.0.0", - "resolve-global": "0.1.0" + "require-uncached": "^1.0.3", + "resolve-from": "^4.0.0", + "resolve-global": "^0.1.0" }, "dependencies": { "resolve-from": { @@ -248,10 +248,10 @@ "integrity": "sha1-NOvSYsA3DUgwnlFnmUJNMsM/mEs=", "dev": true, "requires": { - "@commitlint/ensure": "6.1.3", - "@commitlint/message": "6.1.3", - "@commitlint/to-lines": "6.1.3", - "babel-runtime": "6.26.0" + "@commitlint/ensure": "^6.1.3", + "@commitlint/message": "^6.1.3", + "@commitlint/to-lines": "^6.1.3", + "babel-runtime": "^6.23.0" } }, "@commitlint/to-lines": { @@ -266,7 +266,7 @@ "integrity": "sha1-Em3LbeFnY0LGnNQiYUg/RHhUcpk=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "@commitlint/travis-cli": { @@ -275,7 +275,7 @@ "integrity": "sha1-m/F1bZsyo7xFgOpArjypLId3OAA=", "dev": true, "requires": { - "@commitlint/cli": "6.1.3", + "@commitlint/cli": "^6.1.3", "babel-runtime": "6.26.0", "execa": "0.9.0" }, @@ -286,9 +286,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "execa": { @@ -297,13 +297,13 @@ "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" } } } @@ -314,9 +314,9 @@ "integrity": "sha1-GViWWHTyS8Ub5Ih1/rUNZC/EH3s=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" }, "dependencies": { "rimraf": { @@ -325,7 +325,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } @@ -341,8 +341,8 @@ "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", "dev": true, "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, "abab": { @@ -363,7 +363,7 @@ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -379,7 +379,7 @@ "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "dev": true, "requires": { - "acorn": "5.5.3" + "acorn": "^5.0.0" } }, "acorn-globals": { @@ -388,7 +388,7 @@ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, "requires": { - "acorn": "5.5.3" + "acorn": "^5.0.0" } }, "acorn-jsx": { @@ -397,7 +397,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -420,10 +420,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.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" } }, "ajv-keywords": { @@ -438,9 +438,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -470,7 +470,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "any-observable": { @@ -484,8 +484,8 @@ "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": { @@ -500,7 +500,7 @@ "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { - "default-require-extensions": "1.0.0" + "default-require-extensions": "^1.0.0" } }, "aproba": { @@ -515,8 +515,8 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.5" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "argparse": { @@ -525,7 +525,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "argv": { @@ -539,7 +539,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -588,8 +588,8 @@ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.10.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-union": { @@ -597,7 +597,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -627,9 +627,9 @@ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "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": { @@ -711,8 +711,8 @@ "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", "dev": true, "requires": { - "follow-redirects": "1.4.1", - "is-buffer": "1.1.6" + "follow-redirects": "^1.2.5", + "is-buffer": "^1.1.5" } }, "babel-code-frame": { @@ -720,9 +720,9 @@ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "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": { "ansi-regex": { @@ -740,11 +740,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "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": { @@ -752,7 +752,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -767,25 +767,25 @@ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.1", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.1", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" }, "dependencies": { "babylon": { @@ -800,14 +800,14 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "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.5", - "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.7", + "trim-right": "^1.0.1" }, "dependencies": { "jsesc": { @@ -822,9 +822,9 @@ "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -832,9 +832,9 @@ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-call-delegate": { @@ -842,10 +842,10 @@ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-define-map": { @@ -853,10 +853,10 @@ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-explode-assignable-expression": { @@ -864,9 +864,9 @@ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-explode-class": { @@ -874,10 +874,10 @@ "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-function-name": { @@ -885,11 +885,11 @@ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -897,8 +897,8 @@ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -906,8 +906,8 @@ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-optimise-call-expression": { @@ -915,8 +915,8 @@ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-regex": { @@ -924,9 +924,9 @@ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-remap-async-to-generator": { @@ -934,11 +934,11 @@ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-replace-supers": { @@ -946,12 +946,12 @@ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helpers": { @@ -959,8 +959,8 @@ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-jest": { @@ -969,8 +969,8 @@ "integrity": "sha512-rEdN/jevSuX0IQKcUqwqOGa0gDNis4jGY52Rq53aizfDGPwQYNJq+f9NCMT1HUhtUZhYSjvfGUfHQWBRT1/icA==", "dev": true, "requires": { - "babel-plugin-istanbul": "4.1.5", - "babel-preset-jest": "22.4.1" + "babel-plugin-istanbul": "^4.1.5", + "babel-preset-jest": "^22.4.1" } }, "babel-messages": { @@ -978,7 +978,7 @@ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { @@ -986,7 +986,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-istanbul": { @@ -995,9 +995,9 @@ "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", "dev": true, "requires": { - "find-up": "2.1.0", - "istanbul-lib-instrument": "1.10.1", - "test-exclude": "4.2.1" + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.7.5", + "test-exclude": "^4.1.1" } }, "babel-plugin-jest-hoist": { @@ -1066,9 +1066,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-async-to-generator": { @@ -1076,9 +1076,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-class-constructor-call": { @@ -1086,9 +1086,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", "requires": { - "babel-plugin-syntax-class-constructor-call": "6.18.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-class-properties": { @@ -1096,10 +1096,10 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-decorators": { @@ -1107,11 +1107,11 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -1119,7 +1119,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -1127,7 +1127,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -1135,11 +1135,11 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-plugin-transform-es2015-classes": { @@ -1147,15 +1147,15 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -1163,8 +1163,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-destructuring": { @@ -1172,7 +1172,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -1180,8 +1180,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-for-of": { @@ -1189,7 +1189,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -1197,9 +1197,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-literals": { @@ -1207,7 +1207,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-amd": { @@ -1215,9 +1215,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -1225,10 +1225,10 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -1236,9 +1236,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-umd": { @@ -1246,9 +1246,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-object-super": { @@ -1256,8 +1256,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -1265,12 +1265,12 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -1278,8 +1278,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -1287,7 +1287,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -1295,9 +1295,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-template-literals": { @@ -1305,7 +1305,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -1313,7 +1313,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -1321,9 +1321,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -1331,9 +1331,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-export-extensions": { @@ -1341,8 +1341,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", "requires": { - "babel-plugin-syntax-export-extensions": "6.13.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-flow-strip-types": { @@ -1350,8 +1350,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -1359,8 +1359,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, "babel-plugin-transform-regenerator": { @@ -1368,7 +1368,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "requires": { - "regenerator-transform": "0.10.1" + "regenerator-transform": "^0.10.0" } }, "babel-plugin-transform-strict-mode": { @@ -1376,8 +1376,8 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-polyfill": { @@ -1386,9 +1386,9 @@ "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "regenerator-runtime": "0.10.5" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" }, "dependencies": { "regenerator-runtime": { @@ -1404,30 +1404,30 @@ "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" } }, "babel-preset-jest": { @@ -1436,8 +1436,8 @@ "integrity": "sha512-gW3+spyB8fkSAI9fX+41BQMwar5LjR+nyKa2QRvK22snxnI29+jJVAMfId+osucFJzJJvhlvzKWnfwX8Omodvg==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "22.4.1", - "babel-plugin-syntax-object-rest-spread": "6.13.0" + "babel-plugin-jest-hoist": "^22.4.1", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" } }, "babel-preset-stage-1": { @@ -1445,9 +1445,9 @@ "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", "requires": { - "babel-plugin-transform-class-constructor-call": "6.24.1", - "babel-plugin-transform-export-extensions": "6.22.0", - "babel-preset-stage-2": "6.24.1" + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" } }, "babel-preset-stage-2": { @@ -1455,10 +1455,10 @@ "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" } }, "babel-preset-stage-3": { @@ -1466,11 +1466,11 @@ "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" } }, "babel-register": { @@ -1478,13 +1478,13 @@ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" } }, "babel-runtime": { @@ -1492,8 +1492,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -1501,11 +1501,11 @@ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" }, "dependencies": { "babylon": { @@ -1520,15 +1520,15 @@ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.3", - "lodash": "4.17.5" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "babylon": { @@ -1543,10 +1543,10 @@ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -1565,13 +1565,13 @@ "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.1", - "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": { "define-property": { @@ -1580,7 +1580,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "isobject": { @@ -1610,7 +1610,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "big.js": { @@ -1635,7 +1635,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.5" + "readable-stream": "^2.0.5" } }, "block-stream": { @@ -1644,7 +1644,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "bluebird": { @@ -1666,15 +1666,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.2", - "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.16" + "type-is": "~1.6.15" } }, "bonjour": { @@ -1683,12 +1683,12 @@ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "dev": true, "requires": { - "array-flatten": "2.1.1", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.3", - "multicast-dns-service-types": "1.1.0" + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" } }, "boolify": { @@ -1703,7 +1703,7 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "brace-expansion": { @@ -1711,7 +1711,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1720,9 +1720,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "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": { @@ -1737,8 +1737,8 @@ "integrity": "sha1-jBruoBzSLzWbBIlRGFvVOf8Mgp8=", "dev": true, "requires": { - "duplexer": "0.1.1", - "iltorb": "1.3.10" + "duplexer": "^0.1.1", + "iltorb": "^1.0.9" } }, "browser-process-hrtime": { @@ -1770,12 +1770,12 @@ "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "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": { @@ -1784,9 +1784,9 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.1.1", - "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": { @@ -1795,9 +1795,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": { @@ -1806,8 +1806,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -1816,13 +1816,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": { @@ -1831,7 +1831,7 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "1.0.6" + "pako": "~1.0.5" } }, "bser": { @@ -1840,7 +1840,7 @@ "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "dev": true, "requires": { - "node-int64": "0.4.0" + "node-int64": "^0.4.0" } }, "buffer": { @@ -1849,9 +1849,9 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-indexof": { @@ -1883,17 +1883,17 @@ "integrity": "sha512-AABanMBS3QdtNlI0JWhPs8EV5MnHdPfU1OMfB0YJR/qwuHCtR7R7kwcGnWI926qf+JxMYDj22W1Fp/s6Kwv7DQ==", "dev": true, "requires": { - "axios": "0.17.1", + "axios": "^0.17.0", "brotli-size": "0.0.1", - "bytes": "3.0.0", - "ci-env": "1.5.2", - "commander": "2.15.0", - "github-build": "1.2.0", - "glob": "7.1.2", - "gzip-size": "4.1.0", - "opencollective": "1.0.3", - "prettycli": "1.4.3", - "read-pkg-up": "3.0.0" + "bytes": "^3.0.0", + "ci-env": "^1.4.0", + "commander": "^2.11.0", + "github-build": "^1.2.0", + "glob": "^7.1.2", + "gzip-size": "^4.0.0", + "opencollective": "^1.0.3", + "prettycli": "^1.4.3", + "read-pkg-up": "^3.0.0" } }, "bytes": { @@ -1908,19 +1908,19 @@ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.2.4", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" }, "dependencies": { "rimraf": { @@ -1929,7 +1929,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "y18n": { @@ -1946,15 +1946,15 @@ "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": { "isobject": { @@ -1985,7 +1985,7 @@ "integrity": "sha512-i3xIKd9U4ov0hWXYo08oJy0YVz0krZ9dbTZQim41xkg0IiScptkAK0UilZ5M1WE3gnWjXAa9+cMtrJ5dM+THbA==", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.1" } }, "caller-path": { @@ -1994,7 +1994,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -2014,9 +2014,9 @@ "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" } }, "caseless": { @@ -2031,7 +2031,7 @@ "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", "dev": true, "requires": { - "underscore-contrib": "0.3.0" + "underscore-contrib": "~0.3.0" } }, "center-align": { @@ -2041,8 +2041,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -2050,9 +2050,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chardet": { @@ -2066,18 +2066,18 @@ "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", "dev": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.1", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.0.0", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" }, "dependencies": { "anymatch": { @@ -2086,8 +2086,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "3.1.9", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "arr-diff": { @@ -2108,18 +2108,18 @@ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -2128,7 +2128,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -2137,7 +2137,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2148,13 +2148,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -2163,7 +2163,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -2172,7 +2172,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-descriptor": { @@ -2181,9 +2181,9 @@ "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" } }, "kind-of": { @@ -2200,14 +2200,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -2216,7 +2216,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -2225,7 +2225,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2280,7 +2280,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2289,7 +2289,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2300,7 +2300,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2309,7 +2309,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2367,19 +2367,19 @@ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } } } @@ -2414,8 +2414,8 @@ "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": { @@ -2430,10 +2430,10 @@ "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": { @@ -2442,7 +2442,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -2451,7 +2451,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2460,7 +2460,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2471,7 +2471,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2480,7 +2480,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2491,9 +2491,9 @@ "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" } }, "isobject": { @@ -2515,7 +2515,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-spinners": { @@ -2544,7 +2544,7 @@ "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", "requires": { "slice-ansi": "0.0.4", - "string-width": "1.0.2" + "string-width": "^1.0.1" }, "dependencies": { "ansi-regex": { @@ -2557,7 +2557,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -2565,9 +2565,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "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": { @@ -2575,7 +2575,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -2590,9 +2590,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "clone": { @@ -2610,7 +2610,7 @@ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "clone-stats": { @@ -2623,9 +2623,9 @@ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.1.tgz", "integrity": "sha512-DNNEq6JdqBFPzS29TaoqZFPNLn5Xn3XyPFqLIhyBT8Xou4lHQEWzD6FinXoJUfhIfWX3aE1JkRa3cbWCHFbt1g==", "requires": { - "inherits": "2.0.3", - "process-nextick-args": "2.0.0", - "readable-stream": "2.3.5" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, "co": { @@ -2656,8 +2656,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -2678,7 +2678,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -2687,7 +2687,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -2696,9 +2696,9 @@ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -2713,8 +2713,8 @@ "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -2723,10 +2723,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": { @@ -2741,9 +2741,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" } }, "performance-now": { @@ -2764,28 +2764,28 @@ "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "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.18", - "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.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.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" } }, "sntp": { @@ -2794,7 +2794,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } } } @@ -2805,8 +2805,8 @@ "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-convert": { @@ -2814,7 +2814,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -2833,7 +2833,7 @@ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -2848,14 +2848,14 @@ "integrity": "sha1-wNAFNe8mTaf2Nzft/aQiiYP6IpE=", "dev": true, "requires": { - "cachedir": "1.2.0", + "cachedir": "^1.1.0", "chalk": "1.1.3", "cz-conventional-changelog": "1.2.0", "dedent": "0.6.0", "detect-indent": "4.0.0", "find-node-modules": "1.0.4", "find-root": "1.0.0", - "fs-extra": "1.0.0", + "fs-extra": "^1.0.0", "glob": "7.1.1", "inquirer": "1.2.3", "lodash": "4.17.2", @@ -2889,11 +2889,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" } }, "cli-cursor": { @@ -2902,7 +2902,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "external-editor": { @@ -2911,9 +2911,9 @@ "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", "dev": true, "requires": { - "extend": "3.0.1", - "spawn-sync": "1.0.15", - "tmp": "0.0.29" + "extend": "^3.0.0", + "spawn-sync": "^1.0.15", + "tmp": "^0.0.29" } }, "figures": { @@ -2922,8 +2922,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" } }, "glob": { @@ -2932,12 +2932,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "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" } }, "inquirer": { @@ -2946,20 +2946,20 @@ "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "external-editor": "1.1.1", - "figures": "1.7.0", - "lodash": "4.17.2", + "ansi-escapes": "^1.1.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "external-editor": "^1.1.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", "mute-stream": "0.0.6", - "pinkie-promise": "2.0.1", - "run-async": "2.3.0", - "rx": "4.1.0", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "pinkie-promise": "^2.0.0", + "run-async": "^2.2.0", + "rx": "^4.1.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" } }, "is-fullwidth-code-point": { @@ -2968,7 +2968,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "lodash": { @@ -3001,7 +3001,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "restore-cursor": { @@ -3010,8 +3010,8 @@ "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" } }, "shelljs": { @@ -3020,9 +3020,9 @@ "integrity": "sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0=", "dev": true, "requires": { - "glob": "7.1.1", - "interpret": "1.1.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "string-width": { @@ -3031,9 +3031,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" } }, "strip-ansi": { @@ -3042,7 +3042,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -3057,7 +3057,7 @@ "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } } } @@ -3068,7 +3068,7 @@ "integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.26.0" } }, "commondir": { @@ -3082,8 +3082,8 @@ "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", "dev": true, "requires": { - "array-ify": "1.0.0", - "dot-prop": "3.0.0" + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" } }, "compare-versions": { @@ -3104,7 +3104,7 @@ "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", "dev": true, "requires": { - "mime-db": "1.33.0" + "mime-db": ">= 1.33.0 < 2" } }, "compression": { @@ -3113,13 +3113,13 @@ "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "dev": true, "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "bytes": "3.0.0", - "compressible": "2.0.13", + "compressible": "~2.0.13", "debug": "2.6.9", - "on-headers": "1.0.1", + "on-headers": "~1.0.1", "safe-buffer": "5.1.1", - "vary": "1.1.2" + "vary": "~1.1.2" } }, "concat-map": { @@ -3133,9 +3133,9 @@ "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "connect-history-api-fallback": { @@ -3150,7 +3150,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "console-control-strings": { @@ -3189,17 +3189,17 @@ "integrity": "sha512-swf5bqhm7PsY2cw6zxuPy6+rZiiGwEpQnrWki+L+z2oZI53QSYwU4brpljmmWss821AsiwmVL+7V6hP+ER+TBA==", "dev": true, "requires": { - "conventional-changelog-angular": "1.6.6", - "conventional-changelog-atom": "0.2.4", - "conventional-changelog-codemirror": "0.3.4", - "conventional-changelog-core": "2.0.5", - "conventional-changelog-ember": "0.3.6", - "conventional-changelog-eslint": "1.0.5", - "conventional-changelog-express": "0.3.4", - "conventional-changelog-jquery": "0.1.0", - "conventional-changelog-jscs": "0.1.0", - "conventional-changelog-jshint": "0.3.4", - "conventional-changelog-preset-loader": "1.1.6" + "conventional-changelog-angular": "^1.6.6", + "conventional-changelog-atom": "^0.2.4", + "conventional-changelog-codemirror": "^0.3.4", + "conventional-changelog-core": "^2.0.5", + "conventional-changelog-ember": "^0.3.6", + "conventional-changelog-eslint": "^1.0.5", + "conventional-changelog-express": "^0.3.4", + "conventional-changelog-jquery": "^0.1.0", + "conventional-changelog-jscs": "^0.1.0", + "conventional-changelog-jshint": "^0.3.4", + "conventional-changelog-preset-loader": "^1.1.6" } }, "conventional-changelog-angular": { @@ -3208,8 +3208,8 @@ "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", "dev": true, "requires": { - "compare-func": "1.3.2", - "q": "1.5.1" + "compare-func": "^1.3.1", + "q": "^1.5.1" } }, "conventional-changelog-atom": { @@ -3218,7 +3218,7 @@ "integrity": "sha512-4+hmbBwcAwx1XzDZ4aEOxk/ONU0iay10G0u/sld16ksgnRUHN7CxmZollm3FFaptr6VADMq1qxomA+JlpblBlg==", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.5.1" } }, "conventional-changelog-cli": { @@ -3227,11 +3227,11 @@ "integrity": "sha512-zNDG/rNbh29Z+d6zzrHN63dFZ4q9k1Ri0V8lXGw1q2ia6+FaE7AqJKccObbBFRmRISXpFESrqZiXpM4QeA84YA==", "dev": true, "requires": { - "add-stream": "1.0.0", - "conventional-changelog": "1.1.18", - "lodash": "4.17.5", - "meow": "4.0.0", - "tempfile": "1.1.1" + "add-stream": "^1.0.0", + "conventional-changelog": "^1.1.18", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "tempfile": "^1.1.1" }, "dependencies": { "meow": { @@ -3265,7 +3265,7 @@ "integrity": "sha512-8M7pGgQVzRU//vG3rFlLYqqBywOLxu9XM0/lc1/1Ll7RuKA79PgK9TDpuPmQDHFnqGS7D1YiZpC3Z0D9AIYExg==", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.5.1" } }, "conventional-changelog-core": { @@ -3274,19 +3274,19 @@ "integrity": "sha512-lP1s7Z3NyEFcG78bWy7GG7nXsq9OpAJgo2xbyAlVBDweLSL5ghvyEZlkEamnAQpIUVK0CAVhs8nPvCiQuXT/VA==", "dev": true, "requires": { - "conventional-changelog-writer": "3.0.4", - "conventional-commits-parser": "2.1.5", - "dateformat": "3.0.3", - "get-pkg-repo": "1.4.0", - "git-raw-commits": "1.3.4", - "git-remote-origin-url": "2.0.0", - "git-semver-tags": "1.3.4", - "lodash": "4.17.5", - "normalize-package-data": "2.4.0", - "q": "1.5.1", - "read-pkg": "1.1.0", - "read-pkg-up": "1.0.1", - "through2": "2.0.3" + "conventional-changelog-writer": "^3.0.4", + "conventional-commits-parser": "^2.1.5", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "^1.3.4", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^1.3.4", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^1.1.0", + "read-pkg-up": "^1.0.1", + "through2": "^2.0.0" }, "dependencies": { "find-up": { @@ -3376,7 +3376,7 @@ "integrity": "sha512-hBM1xb5IrjNtsjXaGryPF/Wn36cwyjkNeqX/CIDbJv/1kRFBHsWoSPYBiNVEpg8xE5fcK4DbPhGTDN2sVoPeiA==", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.5.1" } }, "conventional-changelog-eslint": { @@ -3385,7 +3385,7 @@ "integrity": "sha512-7NUv+gMOS8Y49uPFRgF7kuLZqpnrKa2bQMZZsc62NzvaJmjUktnV03PYHuXhTDEHt5guvV9gyEFtUpgHCDkojg==", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.5.1" } }, "conventional-changelog-express": { @@ -3394,7 +3394,7 @@ "integrity": "sha512-M+UUb715TXT6l9vyMf4HYvAepnQn0AYTcPi6KHrFsd80E0HErjQnqStBg8i3+Qm7EV9+RyATQEnIhSzHbdQ7+A==", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.5.1" } }, "conventional-changelog-jquery": { @@ -3403,7 +3403,7 @@ "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.4.1" } }, "conventional-changelog-jscs": { @@ -3412,7 +3412,7 @@ "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.4.1" } }, "conventional-changelog-jshint": { @@ -3421,8 +3421,8 @@ "integrity": "sha512-CdrqwDgL56b176FVxHmhuOvnO1dRDQvrMaHyuIVjcFlOXukATz2wVT17g8jQU3LvybVbyXvJRbdD5pboo7/1KQ==", "dev": true, "requires": { - "compare-func": "1.3.2", - "q": "1.5.1" + "compare-func": "^1.3.1", + "q": "^1.5.1" } }, "conventional-changelog-lint-config-cz": { @@ -3431,7 +3431,7 @@ "integrity": "sha1-CC4Fgjpj8GRVHw+N+EbE+NGOr2k=", "dev": true, "requires": { - "app-root-path": "2.0.1" + "app-root-path": "~2.0.1" } }, "conventional-changelog-preset-loader": { @@ -3446,16 +3446,16 @@ "integrity": "sha512-EUf/hWiEj3IOa5Jk8XDzM6oS0WgijlYGkUfLc+mDnLH9RwpZqhYIBwgJHWHzEB4My013wx2FhmUu45P6tQrucw==", "dev": true, "requires": { - "compare-func": "1.3.2", - "conventional-commits-filter": "1.1.5", - "dateformat": "3.0.3", - "handlebars": "4.0.11", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.5", - "meow": "4.0.0", - "semver": "5.5.0", - "split": "1.0.1", - "through2": "2.0.3" + "compare-func": "^1.3.1", + "conventional-commits-filter": "^1.1.5", + "dateformat": "^3.0.0", + "handlebars": "^4.0.2", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "semver": "^5.5.0", + "split": "^1.0.0", + "through2": "^2.0.0" }, "dependencies": { "meow": { @@ -3495,8 +3495,8 @@ "integrity": "sha512-mj3+WLj8UZE72zO9jocZjx8+W4Bwnx/KHoIz1vb4F8XUXj0XSjp8Y3MFkpRyIpsRiCBX+DkDjxGKF/nfeu7BGw==", "dev": true, "requires": { - "is-subset": "0.1.1", - "modify-values": "1.0.0" + "is-subset": "^0.1.1", + "modify-values": "^1.0.0" } }, "conventional-commits-parser": { @@ -3505,13 +3505,13 @@ "integrity": "sha512-jaAP61py+ISMF3/n3yIiIuY5h6mJlucOqawu5mLB1HaQADLvg/y5UB3pT7HSucZJan34lp7+7ylQPfbKEGmxrA==", "dev": true, "requires": { - "JSONStream": "1.3.2", - "is-text-path": "1.0.1", - "lodash": "4.17.5", - "meow": "4.0.0", - "split2": "2.2.0", - "through2": "2.0.3", - "trim-off-newlines": "1.0.1" + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0", + "trim-off-newlines": "^1.0.0" }, "dependencies": { "meow": { @@ -3562,12 +3562,12 @@ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" }, "dependencies": { "rimraf": { @@ -3576,7 +3576,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } @@ -3603,10 +3603,10 @@ "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", "dev": true, "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.11.0", - "parse-json": "4.0.0", - "require-from-string": "2.0.1" + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" } }, "create-ecdh": { @@ -3615,8 +3615,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-hash": { @@ -3625,10 +3625,10 @@ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.10" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -3637,12 +3637,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.10" + "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" } }, "cross-spawn": { @@ -3650,11 +3650,11 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.4", - "path-key": "2.0.1", - "semver": "5.5.0", - "shebang-command": "1.2.0", - "which": "1.3.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { @@ -3663,7 +3663,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -3672,7 +3672,7 @@ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -3683,17 +3683,17 @@ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "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.6", - "randomfill": "1.0.4" + "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", + "randomfill": "^1.0.3" } }, "cssom": { @@ -3708,7 +3708,7 @@ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { - "cssom": "0.3.2" + "cssom": "0.3.x" } }, "currently-unhandled": { @@ -3717,7 +3717,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "cycle": { @@ -3738,12 +3738,12 @@ "integrity": "sha1-K8oElkyJGbI/P9aonvXmAIsxs/g=", "dev": true, "requires": { - "conventional-commit-types": "2.2.0", - "lodash.map": "4.6.0", - "longest": "1.0.1", - "pad-right": "0.2.2", - "right-pad": "1.0.1", - "word-wrap": "1.2.3" + "conventional-commit-types": "^2.0.0", + "lodash.map": "^4.5.1", + "longest": "^1.0.1", + "pad-right": "^0.2.2", + "right-pad": "^1.0.1", + "word-wrap": "^1.0.3" } }, "cz-customizable": { @@ -3784,11 +3784,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" } }, "cli-cursor": { @@ -3797,7 +3797,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "external-editor": { @@ -3806,9 +3806,9 @@ "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", "dev": true, "requires": { - "extend": "3.0.1", - "spawn-sync": "1.0.15", - "tmp": "0.0.29" + "extend": "^3.0.0", + "spawn-sync": "^1.0.15", + "tmp": "^0.0.29" } }, "figures": { @@ -3817,8 +3817,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" } }, "inquirer": { @@ -3827,20 +3827,20 @@ "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "external-editor": "1.1.1", - "figures": "1.7.0", - "lodash": "4.17.5", + "ansi-escapes": "^1.1.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "external-editor": "^1.1.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", "mute-stream": "0.0.6", - "pinkie-promise": "2.0.1", - "run-async": "2.3.0", - "rx": "4.1.0", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "pinkie-promise": "^2.0.0", + "run-async": "^2.2.0", + "rx": "^4.1.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" } }, "is-fullwidth-code-point": { @@ -3849,7 +3849,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "mute-stream": { @@ -3870,8 +3870,8 @@ "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" } }, "string-width": { @@ -3880,9 +3880,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" } }, "strip-ansi": { @@ -3891,7 +3891,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -3906,7 +3906,7 @@ "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } }, "word-wrap": { @@ -3928,7 +3928,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "date-fns": { @@ -3966,8 +3966,8 @@ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "requires": { - "decamelize": "1.2.0", - "map-obj": "1.0.1" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "dependencies": { "map-obj": { @@ -3988,7 +3988,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "dedent": { @@ -4020,7 +4020,7 @@ "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", "dev": true, "requires": { - "strip-bom": "2.0.0" + "strip-bom": "^2.0.0" } }, "define-properties": { @@ -4029,8 +4029,8 @@ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "define-property": { @@ -4039,8 +4039,8 @@ "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": { "isobject": { @@ -4057,13 +4057,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.2.8" + "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" }, "dependencies": { "globby": { @@ -4072,12 +4072,12 @@ "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" } }, "pify": { @@ -4112,8 +4112,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" } }, "destroy": { @@ -4133,7 +4133,7 @@ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, "requires": { - "fs-exists-sync": "0.1.0" + "fs-exists-sync": "^0.1.0" } }, "detect-indent": { @@ -4141,7 +4141,7 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "detect-libc": { @@ -4173,9 +4173,9 @@ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "dlv": { @@ -4196,8 +4196,8 @@ "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "dev": true, "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.1" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, "dns-txt": { @@ -4206,7 +4206,7 @@ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "dev": true, "requires": { - "buffer-indexof": "1.1.1" + "buffer-indexof": "^1.0.0" } }, "doctrine": { @@ -4215,7 +4215,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } }, "domain-browser": { @@ -4230,7 +4230,7 @@ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "4.0.2" + "webidl-conversions": "^4.0.2" } }, "dot-prop": { @@ -4239,7 +4239,7 @@ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "dev": true, "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "duplexer": { @@ -4259,10 +4259,10 @@ "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "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" } }, "ecc-jsbn": { @@ -4272,7 +4272,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "editions": { @@ -4308,13 +4308,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" } }, "emojis-list": { @@ -4334,7 +4334,7 @@ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "end-of-stream": { @@ -4343,7 +4343,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "enhanced-resolve": { @@ -4351,9 +4351,9 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "tapable": "1.0.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, "errno": { @@ -4361,7 +4361,7 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error": { @@ -4369,8 +4369,8 @@ "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", "requires": { - "string-template": "0.2.1", - "xtend": "4.0.1" + "string-template": "~0.2.1", + "xtend": "~4.0.0" } }, "error-ex": { @@ -4378,7 +4378,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -4387,11 +4387,11 @@ "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -4400,9 +4400,9 @@ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "escape-html": { @@ -4422,11 +4422,11 @@ "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", "dev": true, "requires": { - "esprima": "3.1.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.6.1" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" }, "dependencies": { "esprima": { @@ -4450,43 +4450,43 @@ "integrity": "sha512-qy4i3wODqKMYfz9LUI8N2qYDkHkoieTbiHpMrYUI/WbjhXJQr7lI4VngixTgaG+yHX+NBCv7nW4hA0ShbvaNKw==", "dev": true, "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.3.2", - "concat-stream": "1.6.1", - "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.3.0", - "ignore": "3.3.7", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.11.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.5", - "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", - "require-uncached": "1.0.3", - "semver": "5.5.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.2", + "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", + "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": { "cross-spawn": { @@ -4545,10 +4545,10 @@ "integrity": "sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==", "dev": true, "requires": { - "ignore": "3.3.7", - "minimatch": "3.0.4", - "resolve": "1.5.0", - "semver": "5.5.0" + "ignore": "^3.3.6", + "minimatch": "^3.0.4", + "resolve": "^1.3.3", + "semver": "^5.4.1" } }, "eslint-scope": { @@ -4557,8 +4557,8 @@ "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": { @@ -4573,8 +4573,8 @@ "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" } }, "esprima": { @@ -4588,7 +4588,7 @@ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -4597,7 +4597,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -4635,7 +4635,7 @@ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", "dev": true, "requires": { - "original": "1.0.0" + "original": ">=0.0.5" } }, "evp_bytestokey": { @@ -4644,8 +4644,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-sh": { @@ -4654,7 +4654,7 @@ "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", "dev": true, "requires": { - "merge": "1.2.0" + "merge": "^1.1.3" } }, "execa": { @@ -4662,13 +4662,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "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" }, "dependencies": { "cross-spawn": { @@ -4676,9 +4676,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } } } @@ -4699,7 +4699,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -4707,7 +4707,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "expand-template": { @@ -4721,7 +4721,7 @@ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "requires": { - "homedir-polyfill": "1.0.1" + "homedir-polyfill": "^1.0.1" } }, "expect": { @@ -4730,12 +4730,12 @@ "integrity": "sha512-Fiy862jT3qc70hwIHwwCBNISmaqBrfWKKrtqyMJ6iwZr+6KXtcnHojZFtd63TPRvRl8EQTJ+YXYy2lK6/6u+Hw==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "jest-diff": "22.4.0", - "jest-get-type": "22.1.0", - "jest-matcher-utils": "22.4.0", - "jest-message-util": "22.4.0", - "jest-regex-util": "22.1.0" + "ansi-styles": "^3.2.0", + "jest-diff": "^22.4.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-regex-util": "^22.1.0" } }, "express": { @@ -4744,36 +4744,36 @@ "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", "dev": true, "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.1", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "finalhandler": "1.1.0", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", + "proxy-addr": "~2.0.2", "qs": "6.5.1", - "range-parser": "1.2.0", + "range-parser": "~1.2.0", "safe-buffer": "5.1.1", "send": "0.16.1", "serve-static": "1.13.1", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.16", + "statuses": "~1.3.1", + "type-is": "~1.6.15", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "array-flatten": { @@ -4796,8 +4796,8 @@ "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" }, "dependencies": { "is-extendable": { @@ -4806,7 +4806,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -4816,9 +4816,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", "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": { @@ -4826,7 +4826,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extsprintf": { @@ -4865,7 +4865,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": "0.7.0" + "websocket-driver": ">=0.5.1" } }, "fb-watchman": { @@ -4874,7 +4874,7 @@ "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "bser": "2.0.0" + "bser": "^2.0.0" } }, "figures": { @@ -4882,7 +4882,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -4891,8 +4891,8 @@ "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" } }, "filename-regex": { @@ -4906,8 +4906,8 @@ "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { - "glob": "7.1.2", - "minimatch": "3.0.4" + "glob": "^7.0.3", + "minimatch": "^3.0.3" } }, "fill-range": { @@ -4915,11 +4915,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "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": { @@ -4929,12 +4929,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "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" } }, "find-cache-dir": { @@ -4943,9 +4943,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, "find-config": { @@ -4954,7 +4954,7 @@ "integrity": "sha1-xPayrkkbLK48qK9yQB8a2Ez90Nk=", "dev": true, "requires": { - "user-home": "1.1.1" + "user-home": "^1.1.1" } }, "find-node-modules": { @@ -4964,7 +4964,7 @@ "dev": true, "requires": { "findup-sync": "0.4.2", - "merge": "1.2.0" + "merge": "^1.2.0" } }, "find-parent-dir": { @@ -4984,7 +4984,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "findup-sync": { @@ -4993,10 +4993,10 @@ "integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=", "dev": true, "requires": { - "detect-file": "0.1.0", - "is-glob": "2.0.1", - "micromatch": "2.3.11", - "resolve-dir": "0.1.1" + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" }, "dependencies": { "expand-tilde": { @@ -5005,7 +5005,7 @@ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.1" } }, "global-modules": { @@ -5014,8 +5014,8 @@ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" } }, "global-prefix": { @@ -5024,10 +5024,10 @@ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, "requires": { - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "0.2.0", - "which": "1.3.0" + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" } }, "is-windows": { @@ -5042,8 +5042,8 @@ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "1.2.2", - "global-modules": "0.2.3" + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" } } } @@ -5053,7 +5053,7 @@ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", "requires": { - "readable-stream": "2.3.5" + "readable-stream": "^2.0.2" } }, "flat-cache": { @@ -5062,10 +5062,10 @@ "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" } }, "flow-parser": { @@ -5079,8 +5079,8 @@ "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "follow-redirects": { @@ -5089,7 +5089,7 @@ "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "dev": true, "requires": { - "debug": "3.1.0" + "debug": "^3.1.0" }, "dependencies": { "debug": { @@ -5113,7 +5113,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreach": { @@ -5134,9 +5134,9 @@ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "forwarded": { @@ -5151,7 +5151,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -5165,8 +5165,8 @@ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "fs-exists-sync": { @@ -5181,9 +5181,9 @@ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" } }, "fs-write-stream-atomic": { @@ -5192,10 +5192,10 @@ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.5" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, "fs.realpath": { @@ -5210,8 +5210,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.9.2", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "abbrev": { @@ -5226,8 +5226,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": { @@ -5247,8 +5247,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -5292,7 +5292,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -5300,7 +5300,7 @@ "bundled": true, "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -5308,7 +5308,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -5316,7 +5316,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, @@ -5347,7 +5347,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -5370,7 +5370,7 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -5379,7 +5379,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -5428,7 +5428,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -5454,9 +5454,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": { @@ -5469,10 +5469,10 @@ "bundled": true, "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": { @@ -5481,9 +5481,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": { @@ -5492,14 +5492,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "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" } }, "getpass": { @@ -5508,7 +5508,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -5524,12 +5524,12 @@ "bundled": true, "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" } }, "graceful-fs": { @@ -5549,8 +5549,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": { @@ -5564,10 +5564,10 @@ "bundled": true, "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": { @@ -5581,9 +5581,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": { @@ -5591,8 +5591,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -5611,7 +5611,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -5637,7 +5637,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -5658,7 +5658,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -5703,7 +5703,7 @@ "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "~1.27.0" } }, "minimatch": { @@ -5711,7 +5711,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.7" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -5739,17 +5739,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", + "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" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" } }, "nopt": { @@ -5758,8 +5758,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npmlog": { @@ -5768,10 +5768,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": { @@ -5796,7 +5796,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -5817,8 +5817,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": { @@ -5855,10 +5855,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": { @@ -5874,13 +5874,13 @@ "bundled": true, "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": { @@ -5889,28 +5889,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": { @@ -5918,7 +5918,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -5949,7 +5949,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -5958,15 +5958,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": { @@ -5982,9 +5982,9 @@ "bundled": true, "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" } }, "string_decoder": { @@ -5992,7 +5992,7 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "stringstream": { @@ -6006,7 +6006,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -6020,9 +6020,9 @@ "bundled": true, "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": { @@ -6031,14 +6031,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": { @@ -6047,7 +6047,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -6056,7 +6056,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -6097,7 +6097,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -6113,10 +6113,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.2.8" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "function-bind": { @@ -6137,14 +6137,14 @@ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": 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": { "ansi-regex": { @@ -6159,7 +6159,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -6168,9 +6168,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" } }, "strip-ansi": { @@ -6179,7 +6179,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -6201,11 +6201,11 @@ "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "meow": "3.7.0", - "normalize-package-data": "2.4.0", - "parse-github-repo-url": "1.4.1", - "through2": "2.0.3" + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" } }, "get-stdin": { @@ -6231,7 +6231,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "gh-got": { @@ -6239,8 +6239,8 @@ "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", "requires": { - "got": "7.1.0", - "is-plain-obj": "1.1.0" + "got": "^7.0.0", + "is-plain-obj": "^1.1.0" }, "dependencies": { "got": { @@ -6248,20 +6248,20 @@ "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", "requires": { - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" } }, "p-cancelable": { @@ -6274,7 +6274,7 @@ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "prepend-http": { @@ -6287,7 +6287,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } } } @@ -6298,11 +6298,11 @@ "integrity": "sha512-G3O+41xHbscpgL5nA0DUkbFVgaAz5rd57AMSIMew8p7C8SyFwZDyn08MoXHkTl9zcD0LmxsLFPxbqFY4YPbpPA==", "dev": true, "requires": { - "dargs": "4.1.0", - "lodash.template": "4.4.0", - "meow": "4.0.0", - "split2": "2.2.0", - "through2": "2.0.3" + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" }, "dependencies": { "dargs": { @@ -6345,8 +6345,8 @@ "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", "dev": true, "requires": { - "gitconfiglocal": "1.0.0", - "pify": "2.3.0" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" }, "dependencies": { "pify": { @@ -6363,8 +6363,8 @@ "integrity": "sha512-Xe2Z74MwXZfAezuaO6e6cA4nsgeCiARPzaBp23gma325c/OXdt//PhrknptIaynNeUp2yWtmikV7k5RIicgGIQ==", "dev": true, "requires": { - "meow": "4.0.0", - "semver": "5.5.0" + "meow": "^4.0.0", + "semver": "^5.5.0" }, "dependencies": { "meow": { @@ -6398,7 +6398,7 @@ "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.2" } }, "github-build": { @@ -6425,7 +6425,7 @@ "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" } } } @@ -6441,7 +6441,7 @@ "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", "requires": { - "gh-got": "6.0.0" + "gh-got": "^6.0.0" } }, "glob": { @@ -6449,12 +6449,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "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-all": { @@ -6462,8 +6462,8 @@ "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", "requires": { - "glob": "7.1.2", - "yargs": "1.2.6" + "glob": "^7.0.5", + "yargs": "~1.2.6" }, "dependencies": { "yargs": { @@ -6471,7 +6471,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", "requires": { - "minimist": "0.1.0" + "minimist": "^0.1.0" } } } @@ -6481,8 +6481,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -6490,7 +6490,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "global-dirs": { @@ -6499,7 +6499,7 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, "global-modules": { @@ -6507,9 +6507,9 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" } }, "global-prefix": { @@ -6517,11 +6517,11 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.0" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" } }, "globals": { @@ -6534,11 +6534,11 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { @@ -6553,23 +6553,23 @@ "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", "requires": { - "@sindresorhus/is": "0.7.0", - "cacheable-request": "2.1.4", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "into-stream": "3.1.0", - "is-retry-allowed": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "mimic-response": "1.0.0", - "p-cancelable": "0.4.0", - "p-timeout": "2.0.1", - "pify": "3.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "url-parse-lax": "3.0.0", - "url-to-options": "1.0.1" + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" } }, "graceful-fs": { @@ -6582,7 +6582,7 @@ "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.2" } }, "growly": { @@ -6597,8 +6597,8 @@ "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", "dev": true, "requires": { - "duplexer": "0.1.1", - "pify": "3.0.0" + "duplexer": "^0.1.1", + "pify": "^3.0.0" } }, "handle-thing": { @@ -6613,10 +6613,10 @@ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "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": { @@ -6625,7 +6625,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -6642,8 +6642,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has": { @@ -6652,7 +6652,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -6660,7 +6660,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -6690,7 +6690,7 @@ "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "has-symbol-support-x": "1.4.2" + "has-symbol-support-x": "^1.4.1" } }, "has-unicode": { @@ -6705,9 +6705,9 @@ "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": { @@ -6724,8 +6724,8 @@ "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": { @@ -6734,7 +6734,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6743,7 +6743,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6754,7 +6754,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6765,7 +6765,7 @@ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "hash.js": { @@ -6774,8 +6774,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" } }, "hawk": { @@ -6784,10 +6784,10 @@ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "hmac-drbg": { @@ -6796,9 +6796,9 @@ "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": { @@ -6812,8 +6812,8 @@ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "homedir-polyfill": { @@ -6821,7 +6821,7 @@ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "requires": { - "parse-passwd": "1.0.0" + "parse-passwd": "^1.0.0" } }, "hosted-git-info": { @@ -6835,10 +6835,10 @@ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, "requires": { - "inherits": "2.0.3", - "obuf": "1.1.1", - "readable-stream": "2.3.5", - "wbuf": "1.7.2" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, "html-encoding-sniffer": { @@ -6847,7 +6847,7 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "1.0.3" + "whatwg-encoding": "^1.0.1" } }, "html-entities": { @@ -6876,7 +6876,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" }, "dependencies": { "depd": { @@ -6905,8 +6905,8 @@ "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-proxy-middleware": { @@ -6915,10 +6915,10 @@ "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", "dev": true, "requires": { - "http-proxy": "1.16.2", - "is-glob": "3.1.0", - "lodash": "4.17.5", - "micromatch": "2.3.11" + "http-proxy": "^1.16.2", + "is-glob": "^3.1.0", + "lodash": "^4.17.2", + "micromatch": "^2.3.11" }, "dependencies": { "is-extglob": { @@ -6933,7 +6933,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -6944,9 +6944,9 @@ "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" } }, "https-browserify": { @@ -6961,9 +6961,9 @@ "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": { @@ -7003,10 +7003,10 @@ "integrity": "sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==", "dev": true, "requires": { - "detect-libc": "0.2.0", - "nan": "2.9.2", - "node-gyp": "3.6.2", - "prebuild-install": "2.5.1" + "detect-libc": "^0.2.0", + "nan": "^2.6.2", + "node-gyp": "^3.6.2", + "prebuild-install": "^2.3.0" } }, "import-local": { @@ -7015,8 +7015,8 @@ "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", "dev": true, "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" } }, "imurmurhash": { @@ -7035,7 +7035,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "indexof": { @@ -7049,8 +7049,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": { @@ -7068,19 +7068,19 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.17.5", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rxjs": "5.5.6", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" } }, "internal-ip": { @@ -7089,7 +7089,7 @@ "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", "dev": true, "requires": { - "meow": "3.7.0" + "meow": "^3.3.0" } }, "interpret": { @@ -7102,8 +7102,8 @@ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", "requires": { - "from2": "2.3.0", - "p-is-promise": "1.1.0" + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" } }, "invariant": { @@ -7111,7 +7111,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -7137,7 +7137,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { @@ -7159,7 +7159,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -7172,7 +7172,7 @@ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-callable": { @@ -7187,7 +7187,7 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.2" + "ci-info": "^1.0.0" } }, "is-data-descriptor": { @@ -7196,7 +7196,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" }, "dependencies": { "kind-of": { @@ -7219,9 +7219,9 @@ "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" }, "dependencies": { "kind-of": { @@ -7248,7 +7248,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -7266,7 +7266,7 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -7285,7 +7285,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -7293,7 +7293,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-obj": { @@ -7312,7 +7312,7 @@ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", "requires": { - "symbol-observable": "0.2.4" + "symbol-observable": "^0.2.2" }, "dependencies": { "symbol-observable": { @@ -7328,7 +7328,7 @@ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -7351,7 +7351,7 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -7360,7 +7360,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -7374,7 +7374,7 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -7406,7 +7406,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-regexp": { @@ -7431,7 +7431,7 @@ "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", "requires": { - "scoped-regex": "1.0.0" + "scoped-regex": "^1.0.0" } }, "is-stream": { @@ -7457,7 +7457,7 @@ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, "requires": { - "text-extensions": "1.7.0" + "text-extensions": "^1.0.0" } }, "is-typedarray": { @@ -7512,18 +7512,18 @@ "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", "dev": true, "requires": { - "async": "2.6.0", - "compare-versions": "3.1.0", - "fileset": "2.0.3", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-hook": "1.2.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-report": "1.1.4", - "istanbul-lib-source-maps": "1.2.4", - "istanbul-reports": "1.3.0", - "js-yaml": "3.11.0", - "mkdirp": "0.5.1", - "once": "1.4.0" + "async": "^2.1.4", + "compare-versions": "^3.1.0", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-report": "^1.1.4", + "istanbul-lib-source-maps": "^1.2.4", + "istanbul-reports": "^1.3.0", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" }, "dependencies": { "async": { @@ -7532,7 +7532,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "debug": { @@ -7556,11 +7556,11 @@ "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" } }, "rimraf": { @@ -7569,7 +7569,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } @@ -7586,7 +7586,7 @@ "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", "dev": true, "requires": { - "append-transform": "0.4.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-instrument": { @@ -7595,13 +7595,13 @@ "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.5.0" + "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.2.0", + "semver": "^5.3.0" }, "dependencies": { "babylon": { @@ -7624,10 +7624,10 @@ "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", "dev": true, "requires": { - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { "has-flag": { @@ -7648,7 +7648,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -7659,11 +7659,11 @@ "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.2", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" }, "dependencies": { "debug": { @@ -7681,7 +7681,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } @@ -7692,7 +7692,7 @@ "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", "dev": true, "requires": { - "handlebars": "4.0.11" + "handlebars": "^4.0.3" } }, "istextorbinary": { @@ -7700,9 +7700,9 @@ "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", "requires": { - "binaryextensions": "2.1.1", - "editions": "1.3.4", - "textextensions": "2.2.0" + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" } }, "isurl": { @@ -7710,8 +7710,8 @@ "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", "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": { @@ -7720,8 +7720,8 @@ "integrity": "sha512-wD7dXWtfaQAgbNVsjFqzmuhg6nzwGsTRVea3FpSJ7GURhG+J536fw4mdoLB01DgiEozDDeF1ZMR/UlUszTsCrg==", "dev": true, "requires": { - "import-local": "1.0.0", - "jest-cli": "22.4.2" + "import-local": "^1.0.0", + "jest-cli": "^22.4.2" } }, "jest-changed-files": { @@ -7730,7 +7730,7 @@ "integrity": "sha512-SzqOvoPMrXB0NPvDrSPeKETpoUNCtNDOsFbCzAGWxqWVvNyrIMLpUjVExT3u3LfdVrENlrNGCfh5YoFd8+ZeXg==", "dev": true, "requires": { - "throat": "4.1.0" + "throat": "^4.0.0" } }, "jest-cli": { @@ -7739,40 +7739,40 @@ "integrity": "sha512-ebo6ZWK2xDSs7LGnLvM16SZOIJ2dj0B6/oERmGcal32NHkks450nNfGrGTyOSPgJDgH8DFhVdBXgSamN7mtZ0Q==", "dev": true, "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.2", - "exit": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "import-local": "1.0.0", - "is-ci": "1.1.0", - "istanbul-api": "1.3.1", - "istanbul-lib-coverage": "1.1.2", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-source-maps": "1.2.3", - "jest-changed-files": "22.2.0", - "jest-config": "22.4.2", - "jest-environment-jsdom": "22.4.1", - "jest-get-type": "22.1.0", - "jest-haste-map": "22.4.2", - "jest-message-util": "22.4.0", - "jest-regex-util": "22.1.0", - "jest-resolve-dependencies": "22.1.0", - "jest-runner": "22.4.2", - "jest-runtime": "22.4.2", - "jest-snapshot": "22.4.0", - "jest-util": "22.4.1", - "jest-validate": "22.4.2", - "jest-worker": "22.2.2", - "micromatch": "2.3.11", - "node-notifier": "5.2.1", - "realpath-native": "1.0.0", - "rimraf": "2.6.2", - "slash": "1.0.0", - "string-length": "2.0.0", - "strip-ansi": "4.0.0", - "which": "1.3.0", - "yargs": "10.1.2" + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.14", + "istanbul-lib-coverage": "^1.1.1", + "istanbul-lib-instrument": "^1.8.0", + "istanbul-lib-source-maps": "^1.2.1", + "jest-changed-files": "^22.2.0", + "jest-config": "^22.4.2", + "jest-environment-jsdom": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^22.4.2", + "jest-message-util": "^22.4.0", + "jest-regex-util": "^22.1.0", + "jest-resolve-dependencies": "^22.1.0", + "jest-runner": "^22.4.2", + "jest-runtime": "^22.4.2", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.2", + "jest-worker": "^22.2.2", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^10.0.3" }, "dependencies": { "rimraf": { @@ -7821,17 +7821,17 @@ "integrity": "sha512-oG31qYO73/3vj/Q8aM2RgzmHndTkz9nRk8ISybfuJqqbf0RW7OUjHVOZPLOUiwLWtz52Yq2HkjIblsyhbA7vrg==", "dev": true, "requires": { - "chalk": "2.3.2", - "glob": "7.1.2", - "jest-environment-jsdom": "22.4.1", - "jest-environment-node": "22.4.1", - "jest-get-type": "22.1.0", - "jest-jasmine2": "22.4.2", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.4.2", - "jest-util": "22.4.1", - "jest-validate": "22.4.2", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^22.4.1", + "jest-environment-node": "^22.4.1", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^22.4.2", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.2", + "pretty-format": "^22.4.0" } }, "jest-diff": { @@ -7840,10 +7840,10 @@ "integrity": "sha512-+/t20WmnkOkB8MOaGaPziI8zWKxquMvYw4Ub+wOzi7AUhmpFXz43buWSxVoZo4J5RnCozpGbX3/FssjJ5KV9Nw==", "dev": true, "requires": { - "chalk": "2.3.2", - "diff": "3.5.0", - "jest-get-type": "22.1.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^22.4.0" } }, "jest-docblock": { @@ -7852,7 +7852,7 @@ "integrity": "sha512-lDY7GZ+/CJb02oULYLBDj7Hs5shBhVpDYpIm8LUyqw9X2J22QRsM19gmGQwIFqGSJmpc/LRrSYudeSrG510xlQ==", "dev": true, "requires": { - "detect-newline": "2.1.0" + "detect-newline": "^2.1.0" } }, "jest-environment-jsdom": { @@ -7861,9 +7861,9 @@ "integrity": "sha512-x/JzAoH+dWPBnIMv5OQKiIR0TYf6UvbRjsIuDZ11yDFXkHKGJZg6jNnLAsokAm3cq9kUa2hH5BPUC9XU4n1ELQ==", "dev": true, "requires": { - "jest-mock": "22.2.0", - "jest-util": "22.4.1", - "jsdom": "11.6.2" + "jest-mock": "^22.2.0", + "jest-util": "^22.4.1", + "jsdom": "^11.5.1" } }, "jest-environment-node": { @@ -7872,8 +7872,8 @@ "integrity": "sha512-wj9+zzfRgnUbm5VwFOCGgG1QmbucUyrjPKBKUJdLW8K5Ss5zrNc1k+v6feZhFg6sS3ZGnjgtIyklaxEARxu+LQ==", "dev": true, "requires": { - "jest-mock": "22.2.0", - "jest-util": "22.4.1" + "jest-mock": "^22.2.0", + "jest-util": "^22.4.1" } }, "jest-get-type": { @@ -7888,13 +7888,13 @@ "integrity": "sha512-EdQADHGXRqHJYAr7q9B9YYHZnrlcMwhx1+DnIgc9uN05nCW3RvGCxJ91MqWXcC1AzatLoSv7SNd0qXMp2jKBDA==", "dev": true, "requires": { - "fb-watchman": "2.0.0", - "graceful-fs": "4.1.11", - "jest-docblock": "22.4.0", - "jest-serializer": "22.4.0", - "jest-worker": "22.2.2", - "micromatch": "2.3.11", - "sane": "2.4.1" + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-docblock": "^22.4.0", + "jest-serializer": "^22.4.0", + "jest-worker": "^22.2.2", + "micromatch": "^2.3.11", + "sane": "^2.0.0" } }, "jest-jasmine2": { @@ -7903,17 +7903,17 @@ "integrity": "sha512-KZaIHpXQ0AIlvQJFCU0uoXxtz5GG47X14r9upMe7VXE55UazoMZBFnQb9TX2HoYX2/AxJYnjHuvwKVCFqOrEtw==", "dev": true, "requires": { - "chalk": "2.3.2", - "co": "4.6.0", - "expect": "22.4.0", - "graceful-fs": "4.1.11", - "is-generator-fn": "1.0.0", - "jest-diff": "22.4.0", - "jest-matcher-utils": "22.4.0", - "jest-message-util": "22.4.0", - "jest-snapshot": "22.4.0", - "jest-util": "22.4.1", - "source-map-support": "0.5.3" + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^22.4.0", + "graceful-fs": "^4.1.11", + "is-generator-fn": "^1.0.0", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-snapshot": "^22.4.0", + "jest-util": "^22.4.1", + "source-map-support": "^0.5.0" }, "dependencies": { "source-map": { @@ -7928,7 +7928,7 @@ "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" } } } @@ -7939,7 +7939,7 @@ "integrity": "sha512-r3NEIVNh4X3fEeJtUIrKXWKhNokwUM2ILp5LD8w1KrEanPsFtZmYjmyZYjDTX2dXYr33TW65OvbRE3hWFAyq6g==", "dev": true, "requires": { - "pretty-format": "22.4.0" + "pretty-format": "^22.4.0" } }, "jest-matcher-utils": { @@ -7948,9 +7948,9 @@ "integrity": "sha512-03m3issxUXpWMwDYTfmL8hRNewUB0yCRTeXPm+eq058rZxLHD9f5NtSSO98CWHqe4UyISIxd9Ao9iDVjHWd2qg==", "dev": true, "requires": { - "chalk": "2.3.2", - "jest-get-type": "22.1.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^22.4.0" } }, "jest-message-util": { @@ -7959,11 +7959,11 @@ "integrity": "sha512-eyCJB0T3hrlpFF2FqQoIB093OulP+1qvATQmD3IOgJgMGqPL6eYw8TbC5P/VCWPqKhGL51xvjIIhow5eZ2wHFw==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.40", - "chalk": "2.3.2", - "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": { @@ -7984,8 +7984,8 @@ "integrity": "sha512-P1hSfcc2HJYT5t+WPu/11OfFMa7m8pBb2Gf2vm6W9OVs7YTXQ5RCC3nDqaYZQaTqxEM1ZZaTcQGcE6U2xMOsqQ==", "dev": true, "requires": { - "browser-resolve": "1.11.2", - "chalk": "2.3.2" + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1" } }, "jest-resolve-dependencies": { @@ -7994,7 +7994,7 @@ "integrity": "sha512-76Ll61bD/Sus8wK8d+lw891EtiBJGJkWG8OuVDTEX0z3z2+jPujvQqSB2eQ+kCHyCsRwJ2PSjhn3UHqae/oEtA==", "dev": true, "requires": { - "jest-regex-util": "22.1.0" + "jest-regex-util": "^22.1.0" } }, "jest-runner": { @@ -8003,17 +8003,17 @@ "integrity": "sha512-W4vwgiVQS0NyXt8hgpw7i0YUtsfoChiQcoHWBJeq2ocV4VF2osEZx8HYgpH5HfNe1Cb5LZeZWxX8Dr3hesbGFg==", "dev": true, "requires": { - "exit": "0.1.2", - "jest-config": "22.4.2", - "jest-docblock": "22.4.0", - "jest-haste-map": "22.4.2", - "jest-jasmine2": "22.4.2", - "jest-leak-detector": "22.4.0", - "jest-message-util": "22.4.0", - "jest-runtime": "22.4.2", - "jest-util": "22.4.1", - "jest-worker": "22.2.2", - "throat": "4.1.0" + "exit": "^0.1.2", + "jest-config": "^22.4.2", + "jest-docblock": "^22.4.0", + "jest-haste-map": "^22.4.2", + "jest-jasmine2": "^22.4.2", + "jest-leak-detector": "^22.4.0", + "jest-message-util": "^22.4.0", + "jest-runtime": "^22.4.2", + "jest-util": "^22.4.1", + "jest-worker": "^22.2.2", + "throat": "^4.0.0" } }, "jest-runtime": { @@ -8022,26 +8022,26 @@ "integrity": "sha512-9/Fxbj99cqxI7o2nTNzevnI38eDBstkwve8ZeaAD/Kz0fbU3i3eRv2QPEmzbmyCyBvUWxCT7BzNLTzTqH1+pyA==", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-jest": "22.4.1", - "babel-plugin-istanbul": "4.1.5", - "chalk": "2.3.2", - "convert-source-map": "1.5.1", - "exit": "0.1.2", - "graceful-fs": "4.1.11", - "jest-config": "22.4.2", - "jest-haste-map": "22.4.2", - "jest-regex-util": "22.1.0", - "jest-resolve": "22.4.2", - "jest-util": "22.4.1", - "jest-validate": "22.4.2", - "json-stable-stringify": "1.0.1", - "micromatch": "2.3.11", - "realpath-native": "1.0.0", - "slash": "1.0.0", + "babel-core": "^6.0.0", + "babel-jest": "^22.4.1", + "babel-plugin-istanbul": "^4.1.5", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^22.4.2", + "jest-haste-map": "^22.4.2", + "jest-regex-util": "^22.1.0", + "jest-resolve": "^22.4.2", + "jest-util": "^22.4.1", + "jest-validate": "^22.4.2", + "json-stable-stringify": "^1.0.1", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", "strip-bom": "3.0.0", - "write-file-atomic": "2.3.0", - "yargs": "10.1.2" + "write-file-atomic": "^2.1.0", + "yargs": "^10.0.3" }, "dependencies": { "strip-bom": { @@ -8104,12 +8104,12 @@ "integrity": "sha512-6Zz4F9G1Nbr93kfm5h3A2+OkE+WGpgJlskYE4iSNN2uYfoTL5b9W6aB9Orpx+ueReHyqmy7HET7Z3EmYlL3hKw==", "dev": true, "requires": { - "chalk": "2.3.2", - "jest-diff": "22.4.0", - "jest-matcher-utils": "22.4.0", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "jest-diff": "^22.4.0", + "jest-matcher-utils": "^22.4.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^22.4.0" } }, "jest-util": { @@ -8118,13 +8118,13 @@ "integrity": "sha512-9ySBdJY2qVWpg0OvZbGcFXE2NgwccpZVj384E9bx7brKFc7l5anpqah15mseWcz7FLDk7/N+LyYgqFme7Rez2Q==", "dev": true, "requires": { - "callsites": "2.0.0", - "chalk": "2.3.2", - "graceful-fs": "4.1.11", - "is-ci": "1.1.0", - "jest-message-util": "22.4.0", - "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.0", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { @@ -8147,11 +8147,11 @@ "integrity": "sha512-TLOgc/EULFBjMCAqZp5OdVvjxV16DZpfthd/UyPzM6lRmgWluohNVemAdnL3JvugU1s2Q2npcIqtbOtiPjaZ0A==", "dev": true, "requires": { - "chalk": "2.3.2", - "jest-config": "22.4.2", - "jest-get-type": "22.1.0", - "leven": "2.1.0", - "pretty-format": "22.4.0" + "chalk": "^2.0.1", + "jest-config": "^22.4.2", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^22.4.0" } }, "jest-worker": { @@ -8160,7 +8160,7 @@ "integrity": "sha512-ZylDXjrFNt/OP6cUxwJFWwDgazP7hRjtCQbocFHyiwov+04Wm1x5PYzMGNJT53s4nwr0oo9ocYTImS09xOlUnw==", "dev": true, "requires": { - "merge-stream": "1.0.1" + "merge-stream": "^1.0.1" } }, "js-tokens": { @@ -8174,8 +8174,8 @@ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "js2xmlparser": { @@ -8184,7 +8184,7 @@ "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", "dev": true, "requires": { - "xmlcreate": "1.0.2" + "xmlcreate": "^1.0.1" } }, "jsbn": { @@ -8199,21 +8199,21 @@ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz", "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==", "requires": { - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-stage-1": "6.24.1", - "babel-register": "6.26.0", - "babylon": "7.0.0-beta.40", - "colors": "1.1.2", - "flow-parser": "0.67.1", - "lodash": "4.17.5", - "micromatch": "2.3.11", - "neo-async": "2.5.0", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^7.0.0-beta.30", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "neo-async": "^2.5.0", "node-dir": "0.1.8", - "nomnom": "1.8.1", - "recast": "0.14.5", - "temp": "0.8.3", - "write-file-atomic": "1.3.4" + "nomnom": "^1.8.1", + "recast": "^0.14.1", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" } }, "jsdoc": { @@ -8223,17 +8223,17 @@ "dev": true, "requires": { "babylon": "7.0.0-beta.19", - "bluebird": "3.5.1", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "js2xmlparser": "3.0.0", - "klaw": "2.0.0", - "marked": "0.3.17", - "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": { @@ -8248,7 +8248,7 @@ "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "underscore": { @@ -8265,32 +8265,32 @@ "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", "dev": true, "requires": { - "abab": "1.0.4", - "acorn": "5.5.3", - "acorn-globals": "4.1.0", - "array-equal": "1.0.0", - "browser-process-hrtime": "0.1.2", - "content-type-parser": "1.0.2", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "domexception": "1.0.1", - "escodegen": "1.9.1", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.2.0", - "nwmatcher": "1.4.3", + "abab": "^1.0.4", + "acorn": "^5.3.0", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "browser-process-hrtime": "^0.1.2", + "content-type-parser": "^1.0.2", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": ">= 0.2.37 < 0.3.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.4", - "w3c-hr-time": "1.0.1", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.3", - "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-url": "^6.4.0", + "ws": "^4.0.0", + "xml-name-validator": "^3.0.0" } }, "jsesc": { @@ -8326,7 +8326,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -8358,7 +8358,7 @@ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -8404,7 +8404,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "klaw": { @@ -8413,7 +8413,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "lazy-cache": { @@ -8428,7 +8428,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "left-pad": { @@ -8449,8 +8449,8 @@ "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" } }, "lint-staged": { @@ -8459,27 +8459,27 @@ "integrity": "sha512-6Z89we28Qy1Ez7ZxO8yYfPKqzdxkSjnURq1d3RS2gKkZrA135xN+ptF3EWHrcHyBMmgA20vA7dGCQGj+OMS22g==", "dev": true, "requires": { - "app-root-path": "2.0.1", - "chalk": "2.3.2", - "commander": "2.15.0", - "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.2", - "listr": "0.13.0", - "lodash": "4.17.5", - "log-symbols": "2.2.0", - "micromatch": "3.1.9", - "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.0", - "stringify-object": "3.2.2" + "stringify-object": "^3.2.2" }, "dependencies": { "arr-diff": { @@ -8500,18 +8500,18 @@ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -8520,7 +8520,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -8701,7 +8701,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8710,7 +8710,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8721,7 +8721,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8730,7 +8730,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8788,19 +8788,19 @@ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } } } @@ -8810,23 +8810,23 @@ "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", "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.6", - "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": { "ansi-regex": { @@ -8844,11 +8844,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "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": { @@ -8856,8 +8856,8 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "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": { @@ -8865,7 +8865,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "requires": { - "chalk": "1.1.3" + "chalk": "^1.0.0" } }, "strip-ansi": { @@ -8873,7 +8873,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -8893,14 +8893,14 @@ "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", "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": { "ansi-regex": { @@ -8918,11 +8918,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "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": { @@ -8930,8 +8930,8 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "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": { @@ -8944,7 +8944,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "requires": { - "chalk": "1.1.3" + "chalk": "^1.0.0" } }, "strip-ansi": { @@ -8952,7 +8952,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -8967,10 +8967,10 @@ "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", "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": { "ansi-regex": { @@ -8988,11 +8988,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "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": { @@ -9000,7 +9000,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "figures": { @@ -9008,8 +9008,8 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "onetime": { @@ -9022,8 +9022,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "strip-ansi": { @@ -9031,7 +9031,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -9046,10 +9046,10 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { "strip-bom": { @@ -9070,9 +9070,9 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" } }, "locate-path": { @@ -9080,8 +9080,8 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -9167,8 +9167,8 @@ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { @@ -9177,7 +9177,7 @@ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0" + "lodash._reinterpolate": "~3.0.0" } }, "lodash.topairs": { @@ -9203,7 +9203,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "requires": { - "chalk": "2.3.2" + "chalk": "^2.0.1" } }, "log-update": { @@ -9211,8 +9211,8 @@ "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", "requires": { - "ansi-escapes": "1.4.0", - "cli-cursor": "1.0.2" + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" }, "dependencies": { "ansi-escapes": { @@ -9225,7 +9225,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "onetime": { @@ -9238,8 +9238,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } } } @@ -9256,8 +9256,8 @@ "integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=", "dev": true, "requires": { - "chalk": "1.1.3", - "loglevel": "1.6.1" + "chalk": "^1.1.3", + "loglevel": "^1.4.1" }, "dependencies": { "ansi-regex": { @@ -9278,11 +9278,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": { @@ -9291,7 +9291,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -9319,7 +9319,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "loud-rejection": { @@ -9328,8 +9328,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" } }, "lowercase-keys": { @@ -9342,8 +9342,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -9351,7 +9351,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "make-plural": { @@ -9360,7 +9360,7 @@ "integrity": "sha512-triaMVDDYiB+OU1Mz6ht74+z0Bb/bzNESeMwRboSprI3GRWbOvfxEnpWI0eDixQtMPrC2C0revd4wmuck5GcoQ==", "dev": true, "requires": { - "minimist": "1.2.0" + "minimist": "^1.2.0" }, "dependencies": { "minimist": { @@ -9378,7 +9378,7 @@ "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { - "tmpl": "1.0.4" + "tmpl": "1.0.x" } }, "map-cache": { @@ -9399,7 +9399,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "marked": { @@ -9414,8 +9414,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": { @@ -9424,8 +9424,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" } } } @@ -9441,7 +9441,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "mem-fs": { @@ -9449,9 +9449,9 @@ "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", "requires": { - "through2": "2.0.3", - "vinyl": "1.2.0", - "vinyl-file": "2.0.0" + "through2": "^2.0.0", + "vinyl": "^1.1.0", + "vinyl-file": "^2.0.0" } }, "mem-fs-editor": { @@ -9459,16 +9459,16 @@ "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz", "integrity": "sha1-3Qpuryu4prN3QAZ6pUnrUwEFr58=", "requires": { - "commondir": "1.0.1", - "deep-extend": "0.4.2", - "ejs": "2.5.7", - "glob": "7.1.2", - "globby": "6.1.0", - "mkdirp": "0.5.1", - "multimatch": "2.1.0", - "rimraf": "2.2.8", - "through2": "2.0.3", - "vinyl": "2.1.0" + "commondir": "^1.0.1", + "deep-extend": "^0.4.0", + "ejs": "^2.3.1", + "glob": "^7.0.3", + "globby": "^6.1.0", + "mkdirp": "^0.5.0", + "multimatch": "^2.0.0", + "rimraf": "^2.2.8", + "through2": "^2.0.0", + "vinyl": "^2.0.1" }, "dependencies": { "clone": { @@ -9491,12 +9491,12 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.1.1", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -9506,8 +9506,8 @@ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.5" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "meow": { @@ -9516,16 +9516,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": { "camelcase": { @@ -9540,8 +9540,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" } }, "find-up": { @@ -9550,8 +9550,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" } }, "get-stdin": { @@ -9566,11 +9566,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" } }, "map-obj": { @@ -9591,7 +9591,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -9600,7 +9600,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -9609,9 +9609,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" } }, "pify": { @@ -9626,9 +9626,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": { @@ -9637,8 +9637,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" } }, "redent": { @@ -9647,8 +9647,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" } }, "strip-indent": { @@ -9657,7 +9657,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "trim-newlines": { @@ -9686,7 +9686,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.5" + "readable-stream": "^2.0.1" } }, "messageformat": { @@ -9695,11 +9695,11 @@ "integrity": "sha512-Q0uXcDtF5pEZsVSyhzDOGgZZK6ykN79VY9CwU3Nv0gsqx62BjdJW0MT+63UkHQ4exe3HE33ZlxR2/YwoJarRTg==", "dev": true, "requires": { - "glob": "7.0.6", - "make-plural": "4.1.1", - "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": { @@ -9708,12 +9708,12 @@ "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" } } } @@ -9735,19 +9735,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "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": { @@ -9756,8 +9756,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": { @@ -9778,7 +9778,7 @@ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "mimic-fn": { @@ -9808,7 +9808,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -9822,8 +9822,8 @@ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { - "arrify": "1.0.1", - "is-plain-obj": "1.1.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" } }, "mississippi": { @@ -9832,16 +9832,16 @@ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", "dev": true, "requires": { - "concat-stream": "1.6.1", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.2", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" } }, "mixin-deep": { @@ -9850,8 +9850,8 @@ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "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": { @@ -9860,7 +9860,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -9892,12 +9892,12 @@ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" }, "dependencies": { "rimraf": { @@ -9906,7 +9906,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } @@ -9922,8 +9922,8 @@ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, "requires": { - "dns-packet": "1.3.1", - "thunky": "1.0.2" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" } }, "multicast-dns-service-types": { @@ -9937,10 +9937,10 @@ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" } }, "mute-stream": { @@ -9960,18 +9960,18 @@ "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.1", - "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": { @@ -10022,7 +10022,7 @@ "integrity": "sha512-zwm6vU3SsVgw3e9fu48JBaRBCJGIvAgysDsqtf5+vEexFE71bEOtaMWb5zr/zODZNzTPtQlqUUpC79k68Hspow==", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.4.1" } }, "node-dir": { @@ -10036,8 +10036,8 @@ "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", "dev": true, "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-forge": { @@ -10052,19 +10052,19 @@ "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", "dev": true, "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.83.0", - "rimraf": "2.2.8", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "2", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" }, "dependencies": { "semver": { @@ -10087,28 +10087,28 @@ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.5", - "stream-browserify": "2.0.1", - "stream-http": "2.8.0", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.6", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" } }, @@ -10124,10 +10124,10 @@ "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "dev": true, "requires": { - "growly": "1.3.0", - "semver": "5.5.0", - "shellwords": "0.1.1", - "which": "1.3.0" + "growly": "^1.3.0", + "semver": "^5.4.1", + "shellwords": "^0.1.1", + "which": "^1.3.0" } }, "nomnom": { @@ -10135,8 +10135,8 @@ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" + "chalk": "~0.4.0", + "underscore": "~1.6.0" }, "dependencies": { "ansi-styles": { @@ -10149,9 +10149,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" } }, "strip-ansi": { @@ -10173,7 +10173,7 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -10181,10 +10181,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "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": { @@ -10192,7 +10192,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "normalize-url": { @@ -10200,9 +10200,9 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", "requires": { - "prepend-http": "2.0.0", - "query-string": "5.1.0", - "sort-keys": "2.0.0" + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" } }, "npm-path": { @@ -10211,7 +10211,7 @@ "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", "dev": true, "requires": { - "which": "1.3.0" + "which": "^1.2.10" } }, "npm-run-path": { @@ -10219,7 +10219,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npm-which": { @@ -10228,9 +10228,9 @@ "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", "dev": true, "requires": { - "commander": "2.15.0", - "npm-path": "2.0.4", - "which": "1.3.0" + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" } }, "npmlog": { @@ -10239,10 +10239,10 @@ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": 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": { @@ -10262,33 +10262,33 @@ "integrity": "sha512-5eCZpvaksFVjP2rt1r60cfXmt3MUtsQDw8bAzNqNEr4WLvUMLgiVENMf/B9bE9YAX0mGVvaGA3v9IS9ekNqB1Q==", "dev": true, "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "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.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", - "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.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.1.1", - "yargs": "10.0.3", - "yargs-parser": "8.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.1.0", + "istanbul-lib-instrument": "^1.9.1", + "istanbul-lib-report": "^1.1.2", + "istanbul-lib-source-maps": "^1.2.2", + "istanbul-reports": "^1.1.3", + "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.4.2", + "test-exclude": "^4.1.1", + "yargs": "^10.0.3", + "yargs-parser": "^8.0.0" }, "dependencies": { "align-text": { @@ -10296,9 +10296,9 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -10321,7 +10321,7 @@ "bundled": true, "dev": true, "requires": { - "default-require-extensions": "1.0.0" + "default-require-extensions": "^1.0.0" } }, "archy": { @@ -10334,7 +10334,7 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -10362,9 +10362,9 @@ "bundled": true, "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" } }, "babel-generator": { @@ -10372,14 +10372,14 @@ "bundled": true, "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": { @@ -10387,7 +10387,7 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-runtime": { @@ -10395,8 +10395,8 @@ "bundled": true, "dev": true, "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -10404,11 +10404,11 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -10416,15 +10416,15 @@ "bundled": true, "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -10432,10 +10432,10 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -10453,7 +10453,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -10462,9 +10462,9 @@ "bundled": true, "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": { @@ -10477,9 +10477,9 @@ "bundled": true, "dev": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" } }, "camelcase": { @@ -10494,8 +10494,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -10503,11 +10503,11 @@ "bundled": true, "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" } }, "cliui": { @@ -10516,8 +10516,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -10559,8 +10559,8 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.1", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "debug": { @@ -10586,7 +10586,7 @@ "bundled": true, "dev": true, "requires": { - "strip-bom": "2.0.0" + "strip-bom": "^2.0.0" } }, "detect-indent": { @@ -10594,7 +10594,7 @@ "bundled": true, "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "error-ex": { @@ -10602,7 +10602,7 @@ "bundled": true, "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "escape-string-regexp": { @@ -10620,13 +10620,13 @@ "bundled": true, "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" }, "dependencies": { "cross-spawn": { @@ -10634,9 +10634,9 @@ "bundled": true, "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" } } } @@ -10646,7 +10646,7 @@ "bundled": true, "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -10654,7 +10654,7 @@ "bundled": true, "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extglob": { @@ -10662,7 +10662,7 @@ "bundled": true, "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "filename-regex": { @@ -10675,11 +10675,11 @@ "bundled": true, "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": { @@ -10687,9 +10687,9 @@ "bundled": true, "dev": true, "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" } }, "find-up": { @@ -10697,7 +10697,7 @@ "bundled": true, "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "for-in": { @@ -10710,7 +10710,7 @@ "bundled": true, "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreground-child": { @@ -10718,8 +10718,8 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" } }, "fs.realpath": { @@ -10742,12 +10742,12 @@ "bundled": true, "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": { @@ -10755,8 +10755,8 @@ "bundled": true, "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": { @@ -10764,7 +10764,7 @@ "bundled": true, "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "globals": { @@ -10782,10 +10782,10 @@ "bundled": true, "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": { @@ -10793,7 +10793,7 @@ "bundled": true, "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -10803,7 +10803,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -10826,8 +10826,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -10840,7 +10840,7 @@ "bundled": true, "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -10863,7 +10863,7 @@ "bundled": true, "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-dotfile": { @@ -10876,7 +10876,7 @@ "bundled": true, "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -10894,7 +10894,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -10902,7 +10902,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -10910,7 +10910,7 @@ "bundled": true, "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -10918,7 +10918,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-posix-bracket": { @@ -10969,7 +10969,7 @@ "bundled": true, "dev": true, "requires": { - "append-transform": "0.4.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-instrument": { @@ -10977,13 +10977,13 @@ "bundled": true, "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": { @@ -10991,10 +10991,10 @@ "bundled": true, "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": { @@ -11002,7 +11002,7 @@ "bundled": true, "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -11012,11 +11012,11 @@ "bundled": true, "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" }, "dependencies": { "debug": { @@ -11034,7 +11034,7 @@ "bundled": true, "dev": true, "requires": { - "handlebars": "4.0.11" + "handlebars": "^4.0.3" } }, "js-tokens": { @@ -11052,7 +11052,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -11066,7 +11066,7 @@ "bundled": true, "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -11074,11 +11074,11 @@ "bundled": true, "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" } }, "locate-path": { @@ -11086,8 +11086,8 @@ "bundled": true, "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": { @@ -11112,7 +11112,7 @@ "bundled": true, "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lru-cache": { @@ -11120,8 +11120,8 @@ "bundled": true, "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "md5-hex": { @@ -11129,7 +11129,7 @@ "bundled": true, "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { @@ -11142,7 +11142,7 @@ "bundled": true, "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "merge-source-map": { @@ -11150,7 +11150,7 @@ "bundled": true, "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } }, "micromatch": { @@ -11158,19 +11158,19 @@ "bundled": true, "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": { @@ -11183,7 +11183,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -11209,10 +11209,10 @@ "bundled": true, "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": { @@ -11220,7 +11220,7 @@ "bundled": true, "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -11228,7 +11228,7 @@ "bundled": true, "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -11246,8 +11246,8 @@ "bundled": true, "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { @@ -11255,7 +11255,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "optimist": { @@ -11263,8 +11263,8 @@ "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "os-homedir": { @@ -11277,9 +11277,9 @@ "bundled": true, "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": { @@ -11297,7 +11297,7 @@ "bundled": true, "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "^1.1.0" } }, "parse-glob": { @@ -11305,10 +11305,10 @@ "bundled": true, "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": { @@ -11316,7 +11316,7 @@ "bundled": true, "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -11324,7 +11324,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -11347,9 +11347,9 @@ "bundled": true, "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" } }, "pify": { @@ -11367,7 +11367,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -11375,7 +11375,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" }, "dependencies": { "find-up": { @@ -11383,8 +11383,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -11404,8 +11404,8 @@ "bundled": true, "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": { @@ -11413,7 +11413,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -11421,7 +11421,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11431,7 +11431,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11441,9 +11441,9 @@ "bundled": true, "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": { @@ -11451,8 +11451,8 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { @@ -11460,8 +11460,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -11476,7 +11476,7 @@ "bundled": true, "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -11499,7 +11499,7 @@ "bundled": true, "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "require-directory": { @@ -11523,7 +11523,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -11531,7 +11531,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "semver": { @@ -11549,7 +11549,7 @@ "bundled": true, "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -11577,12 +11577,12 @@ "bundled": true, "dev": true, "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "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.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" } }, "spdx-correct": { @@ -11590,7 +11590,7 @@ "bundled": true, "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { @@ -11608,8 +11608,8 @@ "bundled": true, "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": { @@ -11627,7 +11627,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -11637,7 +11637,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -11645,7 +11645,7 @@ "bundled": true, "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-eof": { @@ -11663,11 +11663,11 @@ "bundled": true, "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": { @@ -11686,9 +11686,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "yargs": { @@ -11697,9 +11697,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -11716,8 +11716,8 @@ "bundled": true, "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": { @@ -11725,7 +11725,7 @@ "bundled": true, "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -11749,8 +11749,8 @@ "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -11758,9 +11758,9 @@ "bundled": true, "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" } } } @@ -11775,9 +11775,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "y18n": { @@ -11795,18 +11795,18 @@ "bundled": true, "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.0.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" }, "dependencies": { "cliui": { @@ -11814,9 +11814,9 @@ "bundled": true, "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": { @@ -11824,9 +11824,9 @@ "bundled": true, "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" } } } @@ -11838,7 +11838,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -11867,9 +11867,9 @@ "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": { @@ -11878,7 +11878,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -11887,7 +11887,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-data-descriptor": { @@ -11896,7 +11896,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -11905,9 +11905,9 @@ "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": { @@ -11932,7 +11932,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -11949,8 +11949,8 @@ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.10.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, "object.omit": { @@ -11958,8 +11958,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -11968,7 +11968,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -12005,7 +12005,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -12013,7 +12013,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "opencollective": { @@ -12054,9 +12054,9 @@ "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.3", - "regenerator-runtime": "0.10.5" + "babel-runtime": "^6.22.0", + "core-js": "^2.4.0", + "regenerator-runtime": "^0.10.0" } }, "chalk": { @@ -12065,11 +12065,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" } }, "inquirer": { @@ -12078,19 +12078,19 @@ "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.1.0", - "figures": "2.0.0", - "lodash": "4.17.5", + "ansi-escapes": "^1.1.0", + "chalk": "^1.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.1", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx": "4.1.0", - "string-width": "2.1.1", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "run-async": "^2.2.0", + "rx": "^4.1.0", + "string-width": "^2.0.0", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" } }, "minimist": { @@ -12111,7 +12111,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12128,8 +12128,8 @@ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "optimist": { @@ -12138,8 +12138,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -12156,12 +12156,12 @@ "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" }, "dependencies": { "wordwrap": { @@ -12177,10 +12177,10 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", "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": { "ansi-regex": { @@ -12198,11 +12198,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "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": { @@ -12210,7 +12210,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "onetime": { @@ -12223,8 +12223,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "strip-ansi": { @@ -12232,7 +12232,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12248,7 +12248,7 @@ "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, "requires": { - "url-parse": "1.0.5" + "url-parse": "1.0.x" }, "dependencies": { "url-parse": { @@ -12257,8 +12257,8 @@ "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", "dev": true, "requires": { - "querystringify": "0.0.4", - "requires-port": "1.0.0" + "querystringify": "0.0.x", + "requires-port": "1.0.x" } } } @@ -12279,9 +12279,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "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": { @@ -12301,8 +12301,8 @@ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "p-cancelable": { @@ -12315,7 +12315,7 @@ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "requires": { - "p-reduce": "1.0.0" + "p-reduce": "^1.0.0" } }, "p-finally": { @@ -12338,7 +12338,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -12346,7 +12346,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -12364,7 +12364,7 @@ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "requires": { - "p-finally": "1.0.0" + "p-finally": "^1.0.0" } }, "p-try": { @@ -12378,7 +12378,7 @@ "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", "dev": true, "requires": { - "repeat-string": "1.6.1" + "repeat-string": "^1.5.2" } }, "pako": { @@ -12393,9 +12393,9 @@ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, "parse-asn1": { @@ -12404,11 +12404,11 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.1.1", - "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-github-repo-url": { @@ -12422,10 +12422,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "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": { @@ -12433,8 +12433,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "parse-passwd": { @@ -12509,7 +12509,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "pbkdf2": { @@ -12518,11 +12518,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.10" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "performance-now": { @@ -12546,7 +12546,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -12555,7 +12555,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "pkginfo": { @@ -12588,9 +12588,9 @@ "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", "dev": true, "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.1" + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" } }, "posix-character-classes": { @@ -12605,21 +12605,21 @@ "integrity": "sha512-3DX9L6pzwc1m1ksMkW3Ky2WLgPQUBiySOfXVl3WZyAeJSyJb4wtoH9OmeRGcubAWsMlLiL8BTHbwfm/jPQE9Ag==", "dev": true, "requires": { - "detect-libc": "1.0.3", - "expand-template": "1.1.0", + "detect-libc": "^1.0.3", + "expand-template": "^1.0.2", "github-from-package": "0.0.0", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "node-abi": "2.3.0", - "noop-logger": "0.1.1", - "npmlog": "4.1.2", - "os-homedir": "1.0.2", - "pump": "2.0.1", - "rc": "1.2.5", - "simple-get": "2.7.0", - "tar-fs": "1.16.0", - "tunnel-agent": "0.6.0", - "which-pm-runs": "1.0.0" + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "node-abi": "^2.2.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.1.6", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" }, "dependencies": { "detect-libc": { @@ -12663,18 +12663,18 @@ "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.18.2", - "indent-string": "3.2.0", - "lodash.merge": "4.6.1", - "loglevel-colored-level-prefix": "1.0.0", - "prettier": "1.11.1", - "pretty-format": "22.4.0", - "require-relative": "0.8.7", - "typescript": "2.7.2", - "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": { @@ -12691,23 +12691,23 @@ "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.18.2", - "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.6", + "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": { @@ -12723,9 +12723,9 @@ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "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" } }, "cliui": { @@ -12734,9 +12734,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": { @@ -12745,9 +12745,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" } } } @@ -12770,7 +12770,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "strip-ansi": { @@ -12779,7 +12779,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -12788,7 +12788,7 @@ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } }, "yargs": { @@ -12797,18 +12797,18 @@ "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": { @@ -12817,7 +12817,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -12833,8 +12833,8 @@ "integrity": "sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==", "dev": true, "requires": { - "ansi-regex": "3.0.0", - "ansi-styles": "3.2.1" + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" } }, "prettycli": { @@ -12852,9 +12852,9 @@ "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "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" } }, "has-flag": { @@ -12869,7 +12869,7 @@ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -12908,7 +12908,7 @@ "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", "dev": true, "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.6.0" } }, @@ -12928,11 +12928,11 @@ "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.6" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "pump": { @@ -12941,8 +12941,8 @@ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -12951,9 +12951,9 @@ "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", "dev": true, "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "punycode": { @@ -12979,9 +12979,9 @@ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "querystring": { @@ -13013,8 +13013,8 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -13022,7 +13022,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -13030,7 +13030,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -13040,7 +13040,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -13051,7 +13051,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "randomfill": { @@ -13060,8 +13060,8 @@ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "range-parser": { @@ -13088,10 +13088,10 @@ "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", "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": { @@ -13107,8 +13107,8 @@ "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", "requires": { - "pify": "3.0.0", - "safe-buffer": "5.1.1" + "pify": "^3.0.0", + "safe-buffer": "^5.1.1" } }, "read-pkg": { @@ -13116,9 +13116,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, "read-pkg-up": { @@ -13126,8 +13126,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "requires": { - "find-up": "2.1.0", - "read-pkg": "3.0.0" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" } }, "readable-stream": { @@ -13135,13 +13135,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "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": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -13150,10 +13150,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.5", - "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" } }, "readline2": { @@ -13162,8 +13162,8 @@ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", "mute-stream": "0.0.5" }, "dependencies": { @@ -13173,7 +13173,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "mute-stream": { @@ -13190,7 +13190,7 @@ "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", "dev": true, "requires": { - "util.promisify": "1.0.0" + "util.promisify": "^1.0.0" } }, "recast": { @@ -13199,9 +13199,9 @@ "integrity": "sha512-GNFQGQrqW1R8w9XhhgYIN8H7ePPp088D+svHlb7DdP5DCqNDqTwH7lt378EouM+L18kCwkmqpAz1unLqpPhHmw==", "requires": { "ast-types": "0.11.3", - "esprima": "4.0.0", - "private": "0.1.8", - "source-map": "0.6.1" + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -13216,7 +13216,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "requires": { - "resolve": "1.5.0" + "resolve": "^1.1.6" } }, "redent": { @@ -13225,8 +13225,8 @@ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", "dev": true, "requires": { - "indent-string": "3.2.0", - "strip-indent": "2.0.0" + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" }, "dependencies": { "indent-string": { @@ -13252,9 +13252,9 @@ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.8" + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" } }, "regex-cache": { @@ -13262,7 +13262,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -13271,8 +13271,8 @@ "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" } }, "regexpu-core": { @@ -13280,9 +13280,9 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "regjsgen": { @@ -13295,7 +13295,7 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" } }, "remove-trailing-separator": { @@ -13318,7 +13318,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "replace-ext": { @@ -13332,28 +13332,28 @@ "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.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "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.18", - "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.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "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": { @@ -13362,7 +13362,7 @@ "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.13.1" } }, "request-promise-native": { @@ -13372,8 +13372,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.1", - "stealthy-require": "1.1.1", - "tough-cookie": "2.3.4" + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" } }, "require-directory": { @@ -13404,8 +13404,8 @@ "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" }, "dependencies": { "resolve-from": { @@ -13428,7 +13428,7 @@ "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", "dev": true, "requires": { - "underscore": "1.6.0" + "underscore": "~1.6.0" } }, "reserved-words": { @@ -13442,7 +13442,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-cwd": { @@ -13450,7 +13450,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "resolve-dir": { @@ -13458,8 +13458,8 @@ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" } }, "resolve-from": { @@ -13473,7 +13473,7 @@ "integrity": "sha1-j7As/Vt9sgEY6IYxHxWvlb0V+9k=", "dev": true, "requires": { - "global-dirs": "0.1.1" + "global-dirs": "^0.1.0" } }, "resolve-url": { @@ -13487,7 +13487,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "lowercase-keys": "1.0.0" + "lowercase-keys": "^1.0.0" } }, "restore-cursor": { @@ -13495,8 +13495,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -13512,7 +13512,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "right-pad": { @@ -13532,8 +13532,8 @@ "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": { @@ -13541,7 +13541,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "run-queue": { @@ -13550,7 +13550,7 @@ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "aproba": "1.2.0" + "aproba": "^1.1.1" } }, "rx": { @@ -13569,7 +13569,7 @@ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "rxjs": { @@ -13591,7 +13591,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "sane": { @@ -13600,14 +13600,14 @@ "integrity": "sha512-fW9svvNd81XzHDZyis9/tEY1bZikDGryy8Hi1BErPyNPYv47CdLseUN+tI5FBHWXEENRtj1SWtX/jBnggLaP0w==", "dev": true, "requires": { - "anymatch": "1.3.2", - "exec-sh": "0.2.1", - "fb-watchman": "2.0.0", - "fsevents": "1.1.3", - "minimatch": "3.0.4", - "minimist": "1.2.0", - "walker": "1.0.7", - "watch": "0.18.0" + "anymatch": "^1.3.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.1.1", + "minimatch": "^3.0.2", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" }, "dependencies": { "minimist": { @@ -13630,8 +13630,8 @@ "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", "dev": true, "requires": { - "ajv": "6.2.1", - "ajv-keywords": "3.1.0" + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" }, "dependencies": { "ajv": { @@ -13640,9 +13640,9 @@ "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -13685,18 +13685,18 @@ "dev": true, "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.1", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" } }, "serialize-javascript": { @@ -13711,13 +13711,13 @@ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.18", - "parseurl": "1.3.2" + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" } }, "serve-static": { @@ -13726,9 +13726,9 @@ "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "dev": true, "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.1" } }, @@ -13743,7 +13743,7 @@ "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", "dev": true, "requires": { - "to-object-path": "0.3.0" + "to-object-path": "^0.3.0" } }, "set-immediate-shim": { @@ -13758,10 +13758,10 @@ "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" }, "dependencies": { "extend-shallow": { @@ -13770,7 +13770,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -13793,8 +13793,8 @@ "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "shebang-command": { @@ -13802,7 +13802,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -13815,9 +13815,9 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "shellwords": { @@ -13843,9 +13843,9 @@ "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==", "dev": true, "requires": { - "decompress-response": "3.3.0", - "once": "1.4.0", - "simple-concat": "1.0.0" + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, "slash": { @@ -13869,14 +13869,14 @@ "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", "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": "2.0.2" + "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": "^2.0.0" }, "dependencies": { "define-property": { @@ -13903,7 +13903,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -13912,7 +13912,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -13923,7 +13923,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -13932,7 +13932,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -13943,9 +13943,9 @@ "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" } }, "kind-of": { @@ -13962,9 +13962,9 @@ "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": { @@ -13973,7 +13973,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "isobject": { @@ -13990,7 +13990,7 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "sntp": { @@ -13999,7 +13999,7 @@ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "sockjs": { @@ -14008,8 +14008,8 @@ "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", "dev": true, "requires": { - "faye-websocket": "0.10.0", - "uuid": "3.2.1" + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" } }, "sockjs-client": { @@ -14018,12 +14018,12 @@ "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", "dev": true, "requires": { - "debug": "2.6.9", + "debug": "^2.6.6", "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.2.0" + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" }, "dependencies": { "faye-websocket": { @@ -14032,7 +14032,7 @@ "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "dev": true, "requires": { - "websocket-driver": "0.7.0" + "websocket-driver": ">=0.5.1" } } } @@ -14042,7 +14042,7 @@ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "source-list-map": { @@ -14062,11 +14062,11 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.0.3", - "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": { @@ -14074,7 +14074,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } }, "source-map-url": { @@ -14089,8 +14089,8 @@ "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", "dev": true, "requires": { - "concat-stream": "1.6.1", - "os-shim": "0.1.3" + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" } }, "spdx-correct": { @@ -14098,8 +14098,8 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -14112,8 +14112,8 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -14127,12 +14127,12 @@ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", "dev": true, "requires": { - "debug": "2.6.9", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.1.1", - "select-hose": "2.0.0", - "spdy-transport": "2.0.20" + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" } }, "spdy-transport": { @@ -14141,13 +14141,13 @@ "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", "dev": true, "requires": { - "debug": "2.6.9", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.1", - "readable-stream": "2.3.5", - "safe-buffer": "5.1.1", - "wbuf": "1.7.2" + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" } }, "split": { @@ -14156,7 +14156,7 @@ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { @@ -14165,7 +14165,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "split2": { @@ -14174,7 +14174,7 @@ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", "dev": true, "requires": { - "through2": "2.0.3" + "through2": "^2.0.2" } }, "sprintf-js": { @@ -14189,14 +14189,14 @@ "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" } }, "ssri": { @@ -14205,7 +14205,7 @@ "integrity": "sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.1" } }, "stack-trace": { @@ -14232,8 +14232,8 @@ "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": { @@ -14242,7 +14242,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -14251,7 +14251,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -14260,7 +14260,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -14271,7 +14271,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -14280,7 +14280,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -14291,9 +14291,9 @@ "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" } }, "kind-of": { @@ -14322,8 +14322,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-each": { @@ -14332,8 +14332,8 @@ "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, "stream-http": { @@ -14342,11 +14342,11 @@ "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, "stream-shift": { @@ -14360,7 +14360,7 @@ "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", "requires": { - "any-observable": "0.2.0" + "any-observable": "^0.2.0" } }, "strict-uri-encode": { @@ -14374,8 +14374,8 @@ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "1.0.0", - "strip-ansi": "4.0.0" + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" } }, "string-template": { @@ -14388,8 +14388,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "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_decoder": { @@ -14397,7 +14397,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "stringify-object": { @@ -14406,9 +14406,9 @@ "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": { @@ -14422,7 +14422,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "strip-bom": { @@ -14430,7 +14430,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-bom-stream": { @@ -14438,8 +14438,8 @@ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", "requires": { - "first-chunk-stream": "2.0.0", - "strip-bom": "2.0.0" + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" } }, "strip-eof": { @@ -14464,7 +14464,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "symbol-observable": { @@ -14484,12 +14484,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "chalk": "2.3.2", - "lodash": "4.17.5", + "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" }, "dependencies": { "slice-ansi": { @@ -14498,7 +14498,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "is-fullwidth-code-point": "^2.0.0" } } } @@ -14520,9 +14520,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-fs": { @@ -14531,10 +14531,10 @@ "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", "dev": true, "requires": { - "chownr": "1.0.1", - "mkdirp": "0.5.1", - "pump": "1.0.3", - "tar-stream": "1.5.5" + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" }, "dependencies": { "pump": { @@ -14543,8 +14543,8 @@ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } @@ -14555,10 +14555,10 @@ "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.1", - "readable-stream": "2.3.5", - "xtend": "4.0.1" + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" } }, "temp": { @@ -14566,8 +14566,8 @@ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", "requires": { - "os-tmpdir": "1.0.2", - "rimraf": "2.2.8" + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" } }, "tempfile": { @@ -14576,8 +14576,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": { @@ -14594,11 +14594,11 @@ "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "3.1.9", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" }, "dependencies": { "arr-diff": { @@ -14619,18 +14619,18 @@ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -14639,7 +14639,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -14659,13 +14659,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -14674,7 +14674,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -14683,7 +14683,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-descriptor": { @@ -14692,9 +14692,9 @@ "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" } }, "kind-of": { @@ -14711,14 +14711,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -14727,7 +14727,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -14736,7 +14736,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -14747,10 +14747,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -14759,7 +14759,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -14770,8 +14770,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" } }, "is-accessor-descriptor": { @@ -14780,7 +14780,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -14789,7 +14789,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -14800,7 +14800,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -14809,7 +14809,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -14820,7 +14820,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -14829,7 +14829,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -14852,11 +14852,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" } }, "micromatch": { @@ -14865,19 +14865,19 @@ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, "parse-json": { @@ -14886,7 +14886,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -14895,7 +14895,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -14904,9 +14904,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" } }, "pify": { @@ -14921,9 +14921,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": { @@ -14932,8 +14932,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" } } } @@ -14970,8 +14970,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.5", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "thunky": { @@ -14991,7 +14991,7 @@ "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "dev": true, "requires": { - "setimmediate": "1.0.5" + "setimmediate": "^1.0.4" } }, "tmp": { @@ -14999,7 +14999,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "tmpl": { @@ -15025,7 +15025,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -15034,10 +15034,10 @@ "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" } }, "to-regex-range": { @@ -15046,8 +15046,8 @@ "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": { @@ -15056,7 +15056,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } } } @@ -15067,7 +15067,7 @@ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "dev": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tr46": { @@ -15076,7 +15076,7 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" }, "dependencies": { "punycode": { @@ -15116,7 +15116,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -15132,7 +15132,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-is": { @@ -15142,7 +15142,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.18" + "mime-types": "~2.1.18" } }, "typedarray": { @@ -15182,9 +15182,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "camelcase": { @@ -15201,8 +15201,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -15220,9 +15220,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -15241,14 +15241,14 @@ "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==", "dev": true, "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "schema-utils": "0.4.5", - "serialize-javascript": "1.4.0", - "source-map": "0.6.1", - "uglify-es": "3.3.9", - "webpack-sources": "1.1.0", - "worker-farm": "1.6.0" + "cacache": "^10.0.1", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.2", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" }, "dependencies": { "commander": { @@ -15295,10 +15295,10 @@ "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": { "extend-shallow": { @@ -15307,7 +15307,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -15316,10 +15316,10 @@ "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" } } } @@ -15330,7 +15330,7 @@ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", "dev": true, "requires": { - "unique-slug": "2.0.0" + "unique-slug": "^2.0.0" } }, "unique-slug": { @@ -15339,7 +15339,7 @@ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "dev": true, "requires": { - "imurmurhash": "0.1.4" + "imurmurhash": "^0.1.4" } }, "unpipe": { @@ -15354,8 +15354,8 @@ "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": { @@ -15364,9 +15364,9 @@ "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": { @@ -15441,8 +15441,8 @@ "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", "dev": true, "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" + "querystringify": "~1.0.0", + "requires-port": "~1.0.0" }, "dependencies": { "querystringify": { @@ -15458,7 +15458,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "prepend-http": "2.0.0" + "prepend-http": "^2.0.0" } }, "url-to-options": { @@ -15478,9 +15478,9 @@ "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", "dev": true, "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "lazy-cache": "^2.0.2" }, "dependencies": { "define-property": { @@ -15489,7 +15489,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -15498,7 +15498,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -15507,7 +15507,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -15518,7 +15518,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -15527,7 +15527,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -15538,9 +15538,9 @@ "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" } }, "isobject": { @@ -15561,7 +15561,7 @@ "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", "dev": true, "requires": { - "set-getter": "0.1.0" + "set-getter": "^0.1.0" } } } @@ -15600,8 +15600,8 @@ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { - "define-properties": "1.1.2", - "object.getownpropertydescriptors": "2.0.3" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, "utils-merge": { @@ -15626,8 +15626,8 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vary": { @@ -15642,9 +15642,9 @@ "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" } }, "vinyl": { @@ -15652,8 +15652,8 @@ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "requires": { - "clone": "1.0.3", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } }, @@ -15662,12 +15662,12 @@ "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0", - "strip-bom-stream": "2.0.0", - "vinyl": "1.2.0" + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" }, "dependencies": { "pify": { @@ -15692,16 +15692,16 @@ "integrity": "sha1-S+eypOSPj8/JzzZIxBnTEcUiFZ0=", "dev": true, "requires": { - "babel-polyfill": "6.26.0", - "chalk": "1.1.3", - "in-publish": "2.0.0", + "babel-polyfill": "^6.3.14", + "chalk": "^1.1.0", + "in-publish": "^2.0.0", "inquirer": "0.11.0", - "lodash": "4.17.5", - "log-update": "1.0.2", - "minimist": "1.2.0", - "node-localstorage": "0.6.0", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "lodash": "^4.5.1", + "log-update": "^1.0.2", + "minimist": "^1.2.0", + "node-localstorage": "^0.6.0", + "strip-ansi": "^3.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-escapes": { @@ -15728,11 +15728,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" } }, "cli-cursor": { @@ -15741,7 +15741,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "cli-width": { @@ -15756,8 +15756,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" } }, "inquirer": { @@ -15766,18 +15766,18 @@ "integrity": "sha1-dEi/qSQJKvMR1HFzu6uZDK4rsCc=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "1.1.1", - "figures": "1.7.0", - "lodash": "3.10.1", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^1.0.1", + "figures": "^1.3.5", + "lodash": "^3.3.1", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" }, "dependencies": { "lodash": { @@ -15806,8 +15806,8 @@ "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" } }, "run-async": { @@ -15816,7 +15816,7 @@ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.3.0" } }, "rx-lite": { @@ -15831,7 +15831,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -15848,7 +15848,7 @@ "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { - "browser-process-hrtime": "0.1.2" + "browser-process-hrtime": "^0.1.2" } }, "walker": { @@ -15857,7 +15857,7 @@ "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { - "makeerror": "1.0.11" + "makeerror": "1.0.x" } }, "watch": { @@ -15866,8 +15866,8 @@ "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "dev": true, "requires": { - "exec-sh": "0.2.1", - "minimist": "1.2.0" + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" }, "dependencies": { "minimist": { @@ -15884,9 +15884,9 @@ "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "chokidar": "2.0.2", - "graceful-fs": "4.1.11", - "neo-async": "2.5.0" + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" } }, "wbuf": { @@ -15895,7 +15895,7 @@ "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", "dev": true, "requires": { - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "^1.0.0" } }, "webidl-conversions": { @@ -15910,25 +15910,25 @@ "integrity": "sha512-PwxKH81yLjbPyBSZvPj/Ji9pT99XOGFA0t6zipoOKOMNRZ+09N39J5Uzcx3rYKnsHgKwDnfGkvzac4MF2Taknw==", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "3.0.0", - "ajv": "6.2.1", - "ajv-keywords": "3.1.0", - "chrome-trace-event": "0.1.2", - "enhanced-resolve": "4.0.0", - "eslint-scope": "3.7.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "micromatch": "3.1.9", - "mkdirp": "0.5.1", - "neo-async": "2.5.0", - "node-libs-browser": "2.1.0", - "schema-utils": "0.4.5", - "tapable": "1.0.0", - "uglifyjs-webpack-plugin": "1.2.2", - "watchpack": "1.5.0", - "webpack-sources": "1.1.0" + "acorn": "^5.0.0", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^0.1.1", + "enhanced-resolve": "^4.0.0", + "eslint-scope": "^3.7.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.2", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.1.1", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" }, "dependencies": { "ajv": { @@ -15937,9 +15937,9 @@ "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -15966,18 +15966,18 @@ "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.1", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -15986,7 +15986,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -16117,7 +16117,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -16126,7 +16126,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -16137,7 +16137,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -16146,7 +16146,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -16189,19 +16189,19 @@ "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.1", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } } } @@ -16211,7 +16211,7 @@ "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", "requires": { - "jscodeshift": "0.4.1" + "jscodeshift": "^0.4.0" }, "dependencies": { "ast-types": { @@ -16229,21 +16229,21 @@ "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", "requires": { - "async": "1.5.2", - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-stage-1": "6.24.1", - "babel-register": "6.26.0", - "babylon": "6.18.0", - "colors": "1.1.2", - "flow-parser": "0.67.1", - "lodash": "4.17.5", - "micromatch": "2.3.11", + "async": "^1.5.0", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^6.17.3", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", "node-dir": "0.1.8", - "nomnom": "1.8.1", - "recast": "0.12.9", - "temp": "0.8.3", - "write-file-atomic": "1.3.4" + "nomnom": "^1.8.1", + "recast": "^0.12.5", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" } }, "recast": { @@ -16252,10 +16252,10 @@ "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", "requires": { "ast-types": "0.10.1", - "core-js": "2.5.3", - "esprima": "4.0.0", - "private": "0.1.8", - "source-map": "0.6.1" + "core-js": "^2.4.1", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" } }, "source-map": { @@ -16271,13 +16271,13 @@ "integrity": "sha512-JCturcEZNGA0KHEpOJVRTC/VVazTcPfpR9c1Au6NO9a+jxCRchMi87Qe7y3JeOzc0v5eMMKpuGBnPdN52NA+CQ==", "dev": true, "requires": { - "loud-rejection": "1.6.0", - "memory-fs": "0.4.1", - "mime": "2.2.0", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "url-join": "4.0.0", - "webpack-log": "1.1.2" + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.1.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^1.0.1" }, "dependencies": { "mime": { @@ -16295,32 +16295,32 @@ "dev": true, "requires": { "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", - "chokidar": "2.0.2", - "compression": "1.7.2", - "connect-history-api-fallback": "1.5.0", - "debug": "3.1.0", - "del": "3.0.0", - "express": "4.16.2", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.17.4", - "import-local": "1.0.0", + "array-includes": "^3.0.3", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.17.4", + "import-local": "^1.0.0", "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.1", - "opn": "5.2.0", - "portfinder": "1.0.13", - "selfsigned": "1.10.2", - "serve-index": "1.9.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", "sockjs": "0.3.19", "sockjs-client": "1.1.4", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "5.3.0", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", "webpack-dev-middleware": "3.0.1", - "webpack-log": "1.1.2", + "webpack-log": "^1.1.2", "yargs": "9.0.1" }, "dependencies": { @@ -16336,9 +16336,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": { @@ -16347,9 +16347,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" } } } @@ -16383,7 +16383,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "load-json-file": { @@ -16392,10 +16392,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" }, "dependencies": { "pify": { @@ -16412,7 +16412,7 @@ "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", "dev": true, "requires": { - "is-wsl": "1.1.0" + "is-wsl": "^1.1.0" } }, "parse-json": { @@ -16421,7 +16421,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-type": { @@ -16430,7 +16430,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" }, "dependencies": { "pify": { @@ -16447,9 +16447,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": { @@ -16458,8 +16458,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-ansi": { @@ -16483,19 +16483,19 @@ "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", "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" } }, "yargs-parser": { @@ -16504,7 +16504,7 @@ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -16515,10 +16515,10 @@ "integrity": "sha512-B53SD4N4BHpZdUwZcj4st2QT7gVfqZtqHDruC1N+K2sciq0Rt/3F1Dx6RlylVkcrToMLTaiaeT48k9Lq4iDVDA==", "dev": true, "requires": { - "chalk": "2.3.2", - "log-symbols": "2.2.0", - "loglevelnext": "1.0.3", - "uuid": "3.2.1" + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" } }, "webpack-sources": { @@ -16527,8 +16527,8 @@ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -16545,8 +16545,8 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.11", - "websocket-extensions": "0.1.3" + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { @@ -16570,9 +16570,9 @@ "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" } }, "which": { @@ -16580,7 +16580,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -16600,7 +16600,7 @@ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" }, "dependencies": { "ansi-regex": { @@ -16615,7 +16615,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -16624,9 +16624,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" } }, "strip-ansi": { @@ -16635,7 +16635,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -16653,13 +16653,13 @@ "integrity": "sha1-NGiCFcyNu3hIOLmqYm5zruRP5LY=", "dev": true, "requires": { - "async": "1.0.0", - "colors": "1.0.3", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "pkginfo": "0.3.1", - "stack-trace": "0.0.10" + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "pkginfo": "0.3.x", + "stack-trace": "0.0.x" }, "dependencies": { "async": { @@ -16694,7 +16694,7 @@ "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", "dev": true, "requires": { - "errno": "0.1.7" + "errno": "~0.1.7" } }, "wrap-ansi": { @@ -16702,8 +16702,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -16716,7 +16716,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -16724,9 +16724,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "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": { @@ -16734,7 +16734,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -16750,7 +16750,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -16758,9 +16758,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "ws": { @@ -16769,8 +16769,8 @@ "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": { @@ -16805,18 +16805,18 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "requires": { - "cliui": "4.0.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": "9.0.2" + "cliui": "^4.0.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": "^9.0.2" } }, "yargs-parser": { @@ -16824,7 +16824,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } }, "yeoman-environment": { @@ -16832,19 +16832,19 @@ "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.5.tgz", "integrity": "sha512-6/W7/B54OPHJXob0n0+pmkwFsirC8cokuQkPSmT/D0lCcSxkKtg/BA6ZnjUBIwjuGqmw3DTrT4en++htaUju5g==", "requires": { - "chalk": "2.3.2", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "globby": "6.1.0", - "grouped-queue": "0.3.3", - "inquirer": "3.3.0", - "is-scoped": "1.0.0", - "lodash": "4.17.5", - "log-symbols": "2.2.0", - "mem-fs": "1.1.3", - "text-table": "0.2.0", - "untildify": "3.0.2" + "chalk": "^2.1.0", + "debug": "^3.1.0", + "diff": "^3.3.1", + "escape-string-regexp": "^1.0.2", + "globby": "^6.1.0", + "grouped-queue": "^0.3.3", + "inquirer": "^3.3.0", + "is-scoped": "^1.0.0", + "lodash": "^4.17.4", + "log-symbols": "^2.1.0", + "mem-fs": "^1.1.0", + "text-table": "^0.2.0", + "untildify": "^3.0.2" }, "dependencies": { "debug": { @@ -16883,31 +16883,31 @@ "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.3.tgz", "integrity": "sha512-mODmrZ26a94djmGZZuIiomSGlN4wULdou29ZwcySupb2e9FdvoCl7Ps2FqHFjEHio3kOl/iBeaNqrnx3C3NwWg==", "requires": { - "async": "2.6.0", - "chalk": "2.3.2", - "cli-table": "0.3.1", - "cross-spawn": "5.1.0", - "dargs": "5.1.0", - "dateformat": "3.0.3", - "debug": "3.1.0", - "detect-conflict": "1.0.1", - "error": "7.0.2", - "find-up": "2.1.0", - "github-username": "4.1.0", - "istextorbinary": "2.2.1", - "lodash": "4.17.5", - "make-dir": "1.2.0", - "mem-fs-editor": "3.0.2", - "minimist": "1.2.0", - "pretty-bytes": "4.0.2", - "read-chunk": "2.1.0", - "read-pkg-up": "3.0.0", - "rimraf": "2.6.2", - "run-async": "2.3.0", - "shelljs": "0.8.1", - "text-table": "0.2.0", - "through2": "2.0.3", - "yeoman-environment": "2.0.5" + "async": "^2.6.0", + "chalk": "^2.3.0", + "cli-table": "^0.3.1", + "cross-spawn": "^5.1.0", + "dargs": "^5.1.0", + "dateformat": "^3.0.2", + "debug": "^3.1.0", + "detect-conflict": "^1.0.0", + "error": "^7.0.2", + "find-up": "^2.1.0", + "github-username": "^4.0.0", + "istextorbinary": "^2.1.0", + "lodash": "^4.17.4", + "make-dir": "^1.1.0", + "mem-fs-editor": "^3.0.2", + "minimist": "^1.2.0", + "pretty-bytes": "^4.0.2", + "read-chunk": "^2.1.0", + "read-pkg-up": "^3.0.0", + "rimraf": "^2.6.2", + "run-async": "^2.0.0", + "shelljs": "^0.8.0", + "text-table": "^0.2.0", + "through2": "^2.0.0", + "yeoman-environment": "^2.0.5" }, "dependencies": { "async": { @@ -16915,7 +16915,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "cross-spawn": { @@ -16923,9 +16923,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "debug": { @@ -16946,7 +16946,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } } } diff --git a/package.json b/package.json index 4b303aa48ff..cad6234b2b1 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,6 @@ "p-each-series": "^1.0.0", "p-lazy": "^1.0.0", "prettier": "^1.5.3", - "recast": "^0.14.5", "resolve-cwd": "^2.0.0", "supports-color": "^5.3.0", "v8-compile-cache": "^1.1.2", From ea024122d782c9635dc790d2cbb7c56ccade5ea8 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 19:55:09 +0200 Subject: [PATCH 11/17] chore(project): clear up project structure --- docs/AddGenerator.html | 201 - docs/InitGenerator.html | 201 - docs/LoaderGenerator.html | 181 - docs/PluginGenerator.html | 181 - docs/commands_add.js.html | 67 - docs/commands_init.js.html | 73 - docs/commands_make.js.html | 63 - docs/commands_migrate.js.html | 203 - docs/commands_remove.js.html | 67 - docs/commands_serve.js.html | 224 - docs/commands_update.js.html | 67 - docs/fonts/OpenSans-Bold-webfont.eot | Bin 19544 -> 0 bytes docs/fonts/OpenSans-Bold-webfont.svg | 1830 ---- docs/fonts/OpenSans-Bold-webfont.woff | Bin 22432 -> 0 bytes docs/fonts/OpenSans-BoldItalic-webfont.eot | Bin 20133 -> 0 bytes docs/fonts/OpenSans-BoldItalic-webfont.svg | 1830 ---- docs/fonts/OpenSans-BoldItalic-webfont.woff | Bin 23048 -> 0 bytes docs/fonts/OpenSans-Italic-webfont.eot | Bin 20265 -> 0 bytes docs/fonts/OpenSans-Italic-webfont.svg | 1830 ---- docs/fonts/OpenSans-Italic-webfont.woff | Bin 23188 -> 0 bytes docs/fonts/OpenSans-Light-webfont.eot | Bin 19514 -> 0 bytes docs/fonts/OpenSans-Light-webfont.svg | 1831 ---- docs/fonts/OpenSans-Light-webfont.woff | Bin 22248 -> 0 bytes docs/fonts/OpenSans-LightItalic-webfont.eot | Bin 20535 -> 0 bytes docs/fonts/OpenSans-LightItalic-webfont.svg | 1835 ---- docs/fonts/OpenSans-LightItalic-webfont.woff | Bin 23400 -> 0 bytes docs/fonts/OpenSans-Regular-webfont.eot | Bin 19836 -> 0 bytes docs/fonts/OpenSans-Regular-webfont.svg | 1831 ---- docs/fonts/OpenSans-Regular-webfont.woff | Bin 22660 -> 0 bytes docs/generate-loader_index.js.html | 68 - docs/generate-plugin_index.js.html | 68 - docs/generators_add-generator.js.html | 501 - docs/generators_init-generator.js.html | 468 - docs/generators_loader-generator.js.html | 109 - docs/generators_plugin-generator.js.html | 90 - docs/generators_utils_entry.js.html | 141 - docs/generators_utils_module.js.html | 70 - docs/generators_utils_plugins.js.html | 65 - docs/generators_utils_tooltip.js.html | 107 - docs/generators_utils_validate.js.html | 68 - docs/generators_webpack-generator.js.html | 128 - docs/global.html | 8341 ----------------- docs/index.html | 65 - docs/index.js.html | 111 - docs/init_index.js.html | 224 - ...it_transformations_context_context.js.html | 106 - ...ransformations_devServer_devServer.js.html | 140 - ...it_transformations_devtool_devtool.js.html | 105 - docs/init_transformations_entry_entry.js.html | 136 - ...ransformations_externals_externals.js.html | 160 - docs/init_transformations_index.js.html | 204 - docs/init_transformations_mode_mode.js.html | 106 - ...init_transformations_module_module.js.html | 124 - docs/init_transformations_node_node.js.html | 95 - docs/init_transformations_other_amd.js.html | 135 - docs/init_transformations_other_bail.js.html | 106 - docs/init_transformations_other_cache.js.html | 139 - docs/init_transformations_other_merge.js.html | 98 - ..._transformations_other_parallelism.js.html | 111 - ...init_transformations_other_profile.js.html | 139 - ...sformations_other_recordsInputPath.js.html | 151 - ...formations_other_recordsOutputPath.js.html | 151 - ..._transformations_other_recordsPath.js.html | 140 - ...init_transformations_output_output.js.html | 135 - ...formations_performance_performance.js.html | 143 - ...it_transformations_plugins_plugins.js.html | 107 - ...ations_resolveLoader_resolveLoader.js.html | 136 - ...it_transformations_resolve_resolve.js.html | 124 - docs/init_transformations_stats_stats.js.html | 135 - ...init_transformations_target_target.js.html | 106 - ...ransformations_top-scope_top-scope.js.html | 80 - docs/init_transformations_watch_watch.js.html | 136 - ...transformations_watch_watchOptions.js.html | 151 - .../migrate_bannerPlugin_bannerPlugin.js.html | 84 - ...xtractTextPlugin_extractTextPlugin.js.html | 109 - docs/migrate_index.js.html | 130 - ...rOptionsPlugin_loaderOptionsPlugin.js.html | 98 - docs/migrate_loaders_loaders.js.html | 430 - docs/migrate_outputPath_outputPath.js.html | 125 - ...tedPlugins_removeDeprecatedPlugins.js.html | 95 - ..._removeJsonLoader_removeJsonLoader.js.html | 120 - docs/migrate_resolve_resolve.js.html | 123 - ...rate_uglifyJsPlugin_uglifyJsPlugin.js.html | 84 - docs/scripts/linenumber.js | 25 - docs/scripts/prettify/Apache-License-2.0.txt | 202 - docs/scripts/prettify/lang-css.js | 2 - docs/scripts/prettify/prettify.js | 28 - docs/styles/jsdoc-default.css | 358 - docs/styles/prettify-jsdoc.css | 111 - docs/styles/prettify-tomorrow.css | 132 - docs/utils_ast-utils.js.html | 727 -- docs/utils_copy-utils.js.html | 108 - docs/utils_defineTest.js.html | 156 - docs/utils_hashtable.js.html | 71 - docs/utils_is-local-path.js.html | 70 - docs/utils_modify-config-helper.js.html | 126 - docs/utils_npm-exists.js.html | 74 - docs/utils_npm-packages-exists.js.html | 114 - docs/utils_package-manager.js.html | 156 - docs/utils_prop-types.js.html | 86 - docs/utils_resolve-packages.js.html | 149 - docs/utils_run-prettier.js.html | 95 - lib/ast/ast.test.js | 1 - .../__snapshots__/ast-utils.test.js.snap | 12 - lib/utils/ast-utils.js | 68 +- lib/utils/ast-utils.test.js | 45 - 106 files changed, 2 insertions(+), 31050 deletions(-) delete mode 100644 docs/AddGenerator.html delete mode 100644 docs/InitGenerator.html delete mode 100644 docs/LoaderGenerator.html delete mode 100644 docs/PluginGenerator.html delete mode 100644 docs/commands_add.js.html delete mode 100644 docs/commands_init.js.html delete mode 100644 docs/commands_make.js.html delete mode 100644 docs/commands_migrate.js.html delete mode 100644 docs/commands_remove.js.html delete mode 100644 docs/commands_serve.js.html delete mode 100644 docs/commands_update.js.html delete mode 100644 docs/fonts/OpenSans-Bold-webfont.eot delete mode 100644 docs/fonts/OpenSans-Bold-webfont.svg delete mode 100644 docs/fonts/OpenSans-Bold-webfont.woff delete mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.eot delete mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.svg delete mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.woff delete mode 100644 docs/fonts/OpenSans-Italic-webfont.eot delete mode 100644 docs/fonts/OpenSans-Italic-webfont.svg delete mode 100644 docs/fonts/OpenSans-Italic-webfont.woff delete mode 100644 docs/fonts/OpenSans-Light-webfont.eot delete mode 100644 docs/fonts/OpenSans-Light-webfont.svg delete mode 100644 docs/fonts/OpenSans-Light-webfont.woff delete mode 100644 docs/fonts/OpenSans-LightItalic-webfont.eot delete mode 100644 docs/fonts/OpenSans-LightItalic-webfont.svg delete mode 100644 docs/fonts/OpenSans-LightItalic-webfont.woff delete mode 100644 docs/fonts/OpenSans-Regular-webfont.eot delete mode 100644 docs/fonts/OpenSans-Regular-webfont.svg delete mode 100644 docs/fonts/OpenSans-Regular-webfont.woff delete mode 100644 docs/generate-loader_index.js.html delete mode 100644 docs/generate-plugin_index.js.html delete mode 100644 docs/generators_add-generator.js.html delete mode 100644 docs/generators_init-generator.js.html delete mode 100644 docs/generators_loader-generator.js.html delete mode 100644 docs/generators_plugin-generator.js.html delete mode 100644 docs/generators_utils_entry.js.html delete mode 100644 docs/generators_utils_module.js.html delete mode 100644 docs/generators_utils_plugins.js.html delete mode 100644 docs/generators_utils_tooltip.js.html delete mode 100644 docs/generators_utils_validate.js.html delete mode 100644 docs/generators_webpack-generator.js.html delete mode 100644 docs/global.html delete mode 100644 docs/index.html delete mode 100644 docs/index.js.html delete mode 100644 docs/init_index.js.html delete mode 100644 docs/init_transformations_context_context.js.html delete mode 100644 docs/init_transformations_devServer_devServer.js.html delete mode 100644 docs/init_transformations_devtool_devtool.js.html delete mode 100644 docs/init_transformations_entry_entry.js.html delete mode 100644 docs/init_transformations_externals_externals.js.html delete mode 100644 docs/init_transformations_index.js.html delete mode 100644 docs/init_transformations_mode_mode.js.html delete mode 100644 docs/init_transformations_module_module.js.html delete mode 100644 docs/init_transformations_node_node.js.html delete mode 100644 docs/init_transformations_other_amd.js.html delete mode 100644 docs/init_transformations_other_bail.js.html delete mode 100644 docs/init_transformations_other_cache.js.html delete mode 100644 docs/init_transformations_other_merge.js.html delete mode 100644 docs/init_transformations_other_parallelism.js.html delete mode 100644 docs/init_transformations_other_profile.js.html delete mode 100644 docs/init_transformations_other_recordsInputPath.js.html delete mode 100644 docs/init_transformations_other_recordsOutputPath.js.html delete mode 100644 docs/init_transformations_other_recordsPath.js.html delete mode 100644 docs/init_transformations_output_output.js.html delete mode 100644 docs/init_transformations_performance_performance.js.html delete mode 100644 docs/init_transformations_plugins_plugins.js.html delete mode 100644 docs/init_transformations_resolveLoader_resolveLoader.js.html delete mode 100644 docs/init_transformations_resolve_resolve.js.html delete mode 100644 docs/init_transformations_stats_stats.js.html delete mode 100644 docs/init_transformations_target_target.js.html delete mode 100644 docs/init_transformations_top-scope_top-scope.js.html delete mode 100644 docs/init_transformations_watch_watch.js.html delete mode 100644 docs/init_transformations_watch_watchOptions.js.html delete mode 100644 docs/migrate_bannerPlugin_bannerPlugin.js.html delete mode 100644 docs/migrate_extractTextPlugin_extractTextPlugin.js.html delete mode 100644 docs/migrate_index.js.html delete mode 100644 docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html delete mode 100644 docs/migrate_loaders_loaders.js.html delete mode 100644 docs/migrate_outputPath_outputPath.js.html delete mode 100644 docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html delete mode 100644 docs/migrate_removeJsonLoader_removeJsonLoader.js.html delete mode 100644 docs/migrate_resolve_resolve.js.html delete mode 100644 docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html delete mode 100644 docs/scripts/linenumber.js delete mode 100644 docs/scripts/prettify/Apache-License-2.0.txt delete mode 100644 docs/scripts/prettify/lang-css.js delete mode 100644 docs/scripts/prettify/prettify.js delete mode 100644 docs/styles/jsdoc-default.css delete mode 100644 docs/styles/prettify-jsdoc.css delete mode 100644 docs/styles/prettify-tomorrow.css delete mode 100644 docs/utils_ast-utils.js.html delete mode 100644 docs/utils_copy-utils.js.html delete mode 100644 docs/utils_defineTest.js.html delete mode 100644 docs/utils_hashtable.js.html delete mode 100644 docs/utils_is-local-path.js.html delete mode 100644 docs/utils_modify-config-helper.js.html delete mode 100644 docs/utils_npm-exists.js.html delete mode 100644 docs/utils_npm-packages-exists.js.html delete mode 100644 docs/utils_package-manager.js.html delete mode 100644 docs/utils_prop-types.js.html delete mode 100644 docs/utils_resolve-packages.js.html delete mode 100644 docs/utils_run-prettier.js.html diff --git a/docs/AddGenerator.html b/docs/AddGenerator.html deleted file mode 100644 index c58570f84f7..00000000000 --- a/docs/AddGenerator.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - JSDoc: Class: AddGenerator - - - - - - - - - - -
- -

Class: AddGenerator

- - - - - - -
- -
- -

AddGenerator() → {Void}

- - -
- -
-
- - - - - - -

new AddGenerator() → {Void}

- - - - - - -
- Generator for adding properties -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- After execution, transforms are triggered -
- - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - -
- - -

Extends

- - - - -
    -
  • Generator
  • -
- - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - \ No newline at end of file diff --git a/docs/InitGenerator.html b/docs/InitGenerator.html deleted file mode 100644 index a8ee7127249..00000000000 --- a/docs/InitGenerator.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - JSDoc: Class: InitGenerator - - - - - - - - - - -
- -

Class: InitGenerator

- - - - - - -
- -
- -

InitGenerator() → {Void}

- - -
- -
-
- - - - - - -

new InitGenerator() → {Void}

- - - - - - -
- Generator for initializing a webpack config -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- After execution, transforms are triggered -
- - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - -
- - -

Extends

- - - - -
    -
  • Generator
  • -
- - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - \ No newline at end of file diff --git a/docs/LoaderGenerator.html b/docs/LoaderGenerator.html deleted file mode 100644 index 4a075e52b67..00000000000 --- a/docs/LoaderGenerator.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - JSDoc: Class: LoaderGenerator - - - - - - - - - - -
- -

Class: LoaderGenerator

- - - - - - -
- -
- -

LoaderGenerator()

- - -
- -
-
- - - - - - -

new LoaderGenerator()

- - - - - - -
- A yeoman generator class for creating a webpack -loader project. It adds some starter loader code -and runs `webpack-defaults`. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - -
    -
  • Generator
  • -
- - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - \ No newline at end of file diff --git a/docs/PluginGenerator.html b/docs/PluginGenerator.html deleted file mode 100644 index 1ecf1ba6206..00000000000 --- a/docs/PluginGenerator.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - JSDoc: Class: PluginGenerator - - - - - - - - - - -
- -

Class: PluginGenerator

- - - - - - -
- -
- -

PluginGenerator()

- - -
- -
-
- - - - - - -

new PluginGenerator()

- - - - - - -
- A yeoman generator class for creating a webpack -plugin project. It adds some starter plugin code -and runs `webpack-defaults`. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- - -

Extends

- - - - -
    -
  • Generator
  • -
- - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - \ No newline at end of file diff --git a/docs/commands_add.js.html b/docs/commands_add.js.html deleted file mode 100644 index 17204927106..00000000000 --- a/docs/commands_add.js.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - JSDoc: Source: commands/add.js - - - - - - - - - - -
- -

Source: commands/add.js

- - - - - - -
-
-
"use strict";
-
-const defaultGenerator = require("../generators/add-generator");
-const modifyHelper = require("../utils/modify-config-helper");
-
-/**
- * Is called and returns a scaffolding instance, adding properties
- *
- * @returns {Function} modifyHelper - A helper function that uses the action
- * 	we're given on a generator
- *
- */
-
-module.exports = function add() {
-	return modifyHelper("add", defaultGenerator);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/commands_init.js.html b/docs/commands_init.js.html deleted file mode 100644 index 01c45585644..00000000000 --- a/docs/commands_init.js.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - JSDoc: Source: commands/init.js - - - - - - - - - - -
- -

Source: commands/init.js

- - - - - - -
-
-
"use strict";
-
-const npmPackagesExists = require("../utils/npm-packages-exists");
-const defaultGenerator = require("../generators/init-generator");
-const modifyHelper = require("../utils/modify-config-helper");
-
-/**
- *
- * First function to be called after running the init flag. This is a check,
- * if we are running the init command with no arguments or if we got dependencies
- *
- * @param {Object} pkg - packages included when running the init command
- * @returns {Function} creator/npmPackagesExists - returns an installation of the package,
- * followed up with a yeoman instance of that if there's packages. If not, it creates a defaultGenerator
- */
-
-module.exports = function initializeInquirer(pkg) {
-	if (pkg.length === 0) {
-		return modifyHelper("init", defaultGenerator);
-	}
-	return npmPackagesExists(pkg);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/commands_make.js.html b/docs/commands_make.js.html deleted file mode 100644 index d7d26082b55..00000000000 --- a/docs/commands_make.js.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - JSDoc: Source: commands/make.js - - - - - - - - - - -
- -

Source: commands/make.js

- - - - - - -
-
-
"use strict";
-
-/**
- * Is called and returns a scaffolding instance, adding properties
- *
- * @returns {Function} TBD
- *
- */
-
-module.exports = function make() {
-	return console.log("make me");
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/commands_migrate.js.html b/docs/commands_migrate.js.html deleted file mode 100644 index 1744aa068a4..00000000000 --- a/docs/commands_migrate.js.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - JSDoc: Source: commands/migrate.js - - - - - - - - - - -
- -

Source: commands/migrate.js

- - - - - - -
-
-
"use strict";
-
-const fs = require("fs");
-const chalk = require("chalk");
-const diff = require("diff");
-const inquirer = require("inquirer");
-const PLazy = require("p-lazy");
-const Listr = require("listr");
-
-const validate = require("webpack").validate;
-const WebpackOptionsValidationError = require("webpack")
-	.WebpackOptionsValidationError;
-
-const runPrettier = require("../utils/run-prettier");
-
-/**
-*
-* Runs migration on a given configuration using AST's and promises
-* to sequentially transform a configuration file.
-*
-* @param {String} currentConfigPath - Location of the configuration to be migrated
-* @param {String} outputConfigPath - Location to where the configuration should be written
-* @param {Object} options - Any additional options regarding code style of the written configuration
-
-* @returns {Promise} Runs the migration using a promise that will throw any errors during each transform
-* or output if the user decides to abort the migration
-*/
-
-module.exports = function migrate(
-	currentConfigPath,
-	outputConfigPath,
-	options
-) {
-	const recastOptions = Object.assign(
-		{
-			quote: "single"
-		},
-		options
-	);
-	const tasks = new Listr([
-		{
-			title: "Reading webpack config",
-			task: ctx =>
-				new PLazy((resolve, reject) => {
-					fs.readFile(currentConfigPath, "utf8", (err, content) => {
-						if (err) {
-							reject(err);
-						}
-						try {
-							const jscodeshift = require("jscodeshift");
-							ctx.source = content;
-							ctx.ast = jscodeshift(content);
-							resolve();
-						} catch (err) {
-							reject("Error generating AST", err);
-						}
-					});
-				})
-		},
-		{
-			title: "Migrating config from v1 to v2",
-			task: ctx => {
-				const transformations = require("../migrate").transformations;
-				return new Listr(
-					Object.keys(transformations).map(key => {
-						const transform = transformations[key];
-						return {
-							title: key,
-							task: _ => transform(ctx.ast, ctx.source)
-						};
-					})
-				);
-			}
-		}
-	]);
-
-	tasks
-		.run()
-		.then(ctx => {
-			const result = ctx.ast.toSource(recastOptions);
-			const diffOutput = diff.diffLines(ctx.source, result);
-			diffOutput.forEach(diffLine => {
-				if (diffLine.added) {
-					process.stdout.write(chalk.green(`+ ${diffLine.value}`));
-				} else if (diffLine.removed) {
-					process.stdout.write(chalk.red(`- ${diffLine.value}`));
-				}
-			});
-			return inquirer
-				.prompt([
-					{
-						type: "confirm",
-						name: "confirmMigration",
-						message: "Are you sure these changes are fine?",
-						default: "Y"
-					}
-				])
-				.then(answers => {
-					if (answers["confirmMigration"]) {
-						return inquirer.prompt([
-							{
-								type: "confirm",
-								name: "confirmValidation",
-								message:
-									"Do you want to validate your configuration? " +
-									"(If you're using webpack merge, validation isn't useful)",
-								default: "Y"
-							}
-						]);
-					} else {
-						console.log(chalk.red("✖ Migration aborted"));
-					}
-				})
-				.then(answer => {
-					if (!answer) return;
-
-					runPrettier(outputConfigPath, result, err => {
-						if (err) {
-							throw err;
-						}
-					});
-
-					if (answer["confirmValidation"]) {
-						const webpackOptionsValidationErrors = validate(
-							require(outputConfigPath)
-						);
-						if (webpackOptionsValidationErrors.length) {
-							console.log(
-								chalk.red(
-									"\n✖ Your configuration validation wasn't successful \n"
-								)
-							);
-							console.error(
-								new WebpackOptionsValidationError(
-									webpackOptionsValidationErrors
-								).message
-							);
-						}
-					}
-					console.log(
-						chalk.green(
-							`\n ✔︎ New webpack v2 config file is at ${outputConfigPath}`
-						)
-					);
-				});
-		})
-		.catch(err => {
-			console.log(chalk.red("✖ ︎Migration aborted due to some errors"));
-			console.error(err);
-			process.exitCode = 1;
-		});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/commands_remove.js.html b/docs/commands_remove.js.html deleted file mode 100644 index bf4d453c90e..00000000000 --- a/docs/commands_remove.js.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - JSDoc: Source: commands/remove.js - - - - - - - - - - -
- -

Source: commands/remove.js

- - - - - - -
-
-
"use strict";
-
-const defaultGenerator = require("../generators/remove-generator");
-const modifyHelper = require("../utils/modify-config-helper");
-
-/**
- * Is called and returns a scaffolding instance, removing properties
- *
- * @returns {Function} modifyHelper - A helper function that uses the action
- * 	we're given on a generator
- *
- */
-
-module.exports = function() {
-	return modifyHelper("remove", defaultGenerator);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/commands_serve.js.html b/docs/commands_serve.js.html deleted file mode 100644 index b7046395c17..00000000000 --- a/docs/commands_serve.js.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - JSDoc: Source: commands/serve.js - - - - - - - - - - -
- -

Source: commands/serve.js

- - - - - - -
-
-
"use strict";
-
-const inquirer = require("inquirer");
-const path = require("path");
-const chalk = require("chalk");
-const spawn = require("cross-spawn");
-const List = require("webpack-addons").List;
-const processPromise = require("../utils/resolve-packages").processPromise;
-
-/**
- *
- * Installs WDS using NPM with --save --dev etc
- *
- * @param {Object} cmd - arg to spawn with
- * @returns {Void}
- */
-
-const spawnNPMWithArg = cmd =>
-	spawn.sync("npm", ["install", "webpack-dev-server", cmd], {
-		stdio: "inherit"
-	});
-
-/**
- *
- * Installs WDS using Yarn with add etc
- *
- * @param {Object} cmd - arg to spawn with
- * @returns {Void}
- */
-
-const spawnYarnWithArg = cmd =>
-	spawn.sync("yarn", ["add", "webpack-dev-server", cmd], {
-		stdio: "inherit"
-	});
-
-/**
- *
- * Find the path of a given module
- *
- * @param {Object} dep - dependency to find
- * @returns {String} string with given path
- */
-
-const getRootPathModule = dep => path.resolve(process.cwd(), dep);
-
-/**
- *
- * Prompts for installing the devServer and running it
- *
- * @param {Object} args - args processed from the CLI
- * @returns {Function} invokes the devServer API
- */
-
-function serve() {
-	let packageJSONPath = getRootPathModule("package.json");
-	if (!packageJSONPath) {
-		console.log(
-			"\n",
-			chalk.red("✖ Could not find your package.json file"),
-			"\n"
-		);
-		process.exit(1);
-	}
-	let packageJSON = require(packageJSONPath);
-	/*
-	 * We gotta do this, cause some configs might not have devdep,
-	 * dep or optional dep, so we'd need sanity checks for each
-	*/
-	let hasDevServerDep = packageJSON
-		? Object.keys(packageJSON).filter(p => packageJSON[p]["webpack-dev-server"])
-		: [];
-
-	if (hasDevServerDep.length) {
-		let WDSPath = getRootPathModule(
-			"node_modules/webpack-dev-server/bin/webpack-dev-server.js"
-		);
-		if (!WDSPath) {
-			console.log(
-				"\n",
-				chalk.red(
-					"✖ Could not find the webpack-dev-server dependency in node_modules root path"
-				)
-			);
-			console.log(
-				chalk.bold.green(" ✔︎"),
-				"Try this command:",
-				chalk.bold.green("rm -rf node_modules && npm install")
-			);
-			process.exit(1);
-		}
-		return require(WDSPath);
-	} else {
-		process.stdout.write(
-			"\n" +
-				chalk.bold(
-					"✖ We didn't find any webpack-dev-server dependency in your project,"
-				) +
-				"\n" +
-				chalk.bold.green("  'webpack serve'") +
-				" " +
-				chalk.bold("requires you to have it installed ") +
-				"\n\n"
-		);
-		return inquirer
-			.prompt([
-				{
-					type: "confirm",
-					name: "confirmDevserver",
-					message: "Do you want to install it? (default: Y)",
-					default: "Y"
-				}
-			])
-			.then(answer => {
-				if (answer["confirmDevserver"]) {
-					return inquirer
-						.prompt(
-							List(
-								"confirmDepType",
-								"What kind of dependency do you want it to be under? (default: devDependency)",
-								["devDependency", "optionalDependency", "dependency"]
-							)
-						)
-						.then(depTypeAns => {
-							const packager = getRootPathModule("package-lock.json")
-								? "npm"
-								: "yarn";
-							let spawnAction;
-							if (depTypeAns["confirmDepType"] === "devDependency") {
-								if (packager === "yarn") {
-									spawnAction = _ => spawnYarnWithArg("--dev");
-								} else {
-									spawnAction = _ => spawnNPMWithArg("--save-dev");
-								}
-							}
-							if (depTypeAns["confirmDepType"] === "dependency") {
-								if (packager === "yarn") {
-									spawnAction = _ => spawnYarnWithArg(" ");
-								} else {
-									spawnAction = _ => spawnNPMWithArg("--save");
-								}
-							}
-							if (depTypeAns["confirmDepType"] === "optionalDependency") {
-								if (packager === "yarn") {
-									spawnAction = _ => spawnYarnWithArg("--optional");
-								} else {
-									spawnAction = _ => spawnNPMWithArg("--save-optional");
-								}
-							}
-							return processPromise(spawnAction()).then(_ => {
-								// Recursion doesn't work well with require call being cached
-								delete require.cache[require.resolve(packageJSONPath)];
-								return serve();
-							});
-						});
-				} else {
-					console.log(chalk.bold.red("✖ Serve aborted due cancelling"));
-					process.exitCode = 1;
-				}
-			})
-			.catch(err => {
-				console.log(chalk.red("✖ Serve aborted due to some errors"));
-				console.error(err);
-				process.exitCode = 1;
-			});
-	}
-}
-
-module.exports = {
-	serve,
-	getRootPathModule,
-	spawnNPMWithArg,
-	spawnYarnWithArg
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/commands_update.js.html b/docs/commands_update.js.html deleted file mode 100644 index b9feea298c6..00000000000 --- a/docs/commands_update.js.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - JSDoc: Source: commands/update.js - - - - - - - - - - -
- -

Source: commands/update.js

- - - - - - -
-
-
"use strict";
-
-const defaultGenerator = require("../generators/update-generator");
-const modifyHelper = require("../utils/modify-config-helper");
-
-/**
- * Is called and returns a scaffolding instance, updating properties
- *
- * @returns {Function} modifyHelper - A helper function that uses the action
- * 	we're given on a generator
- *
- */
-
-module.exports = function() {
-	return modifyHelper("update", defaultGenerator);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/fonts/OpenSans-Bold-webfont.eot b/docs/fonts/OpenSans-Bold-webfont.eot deleted file mode 100644 index 5d20d916338a5890a033952e2e07ba7380f5a7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19544 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 diff --git a/docs/fonts/OpenSans-Bold-webfont.svg b/docs/fonts/OpenSans-Bold-webfont.svg deleted file mode 100644 index 3ed7be4bc5b..00000000000 --- a/docs/fonts/OpenSans-Bold-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Bold-webfont.woff b/docs/fonts/OpenSans-Bold-webfont.woff deleted file mode 100644 index 1205787b0ed50db71ebd4f8a7f85d106721ff258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22432 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 ig3W - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-BoldItalic-webfont.woff b/docs/fonts/OpenSans-BoldItalic-webfont.woff deleted file mode 100644 index ed760c0628b6a0026041f5b8bba466a0471fd2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23048 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Italic-webfont.woff b/docs/fonts/OpenSans-Italic-webfont.woff deleted file mode 100644 index ff652e64356b538c001423b6aedefcf1ee66cd17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23188 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 diff --git a/docs/fonts/OpenSans-Light-webfont.svg b/docs/fonts/OpenSans-Light-webfont.svg deleted file mode 100644 index 11a472ca8a5..00000000000 --- a/docs/fonts/OpenSans-Light-webfont.svg +++ /dev/null @@ -1,1831 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Light-webfont.woff b/docs/fonts/OpenSans-Light-webfont.woff deleted file mode 100644 index e786074813a27d0a7a249047832988d5bf0fe756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22248 zcmZsh1B_-}@aEgLZQHi(Y1_7KW7@WDOqPg|;+~g#c zTn|MF2_RsgpQU~Rg!-RNT>BsYzy1HaBqY@2fq;N3epI~wFj1RzkQ5V__|b-ce1ac{ zfboIAB$X6Zf3!m&Ah2Q}Am}`LXG{@E)n6h&KoF5XF+o366qrO7DylNF00BY5{rLJn z7#4V@A(_}2IsRz2Klw#KKp-%vH*Cr#?yf{Xb&!5yn10}+rURcbceJqk(S&|_y#3h3 z7+7y%3nQ1GTm-(K7^wdZl7+38`HvGnn`na|ZCO>gXKYf5#e%Pm@MS-(3 z^8E2tq<-><{sR;j#M$1+&g@6C{E0dHIb*DcNj9~kgNrK=keb?$_WDx~4Q1c$gXgoLPPM$A|b23vuQ89}D~g&=h~s?0Y}FgUqqZGapfmNBxwIuVFm(k ze2_5J1XP7GNR!Ub>HZ>jTD#<+>v|6A@Ps=rubqHZd2a9KgyVR&^O181UPYR$*uv^8jHMb|3VJelk8s&^2FN|ruFH*b0P-=Pxx z)n&d4)334G1?Ye~Q~-z$@yO0)EPiZm>;@5h&oDPs1QBS&9@GP>1JDlZFdytO5p0Mf z0mF?w6vH4nRycA8NUE&3+j`oFx2aVo;#l_bC3x_^QC zOIwCIWC%j+h!TDPjSlof`zj7nbHRVUC^89-V-ah|_Am14(ubnMne6_`PxvYvvpOVTMneb_yNnzE-NHsp$uk~E4o=th_|)1p<|5PC5H40YZHHZK-0b~`fdbVqJ0;h^LkIPchf2cz+yFG$aT z@DGbUJX0g2nIZ6P_yO?_upuT84MViLL9EyzcI!?A&RvR4?ajT7?&c*9@UShNC>D%g zbkUyp_`i6o+|@2C0Lra`zc3u!ksLzWwU(G7!V%!{ad_BVPb}tVi}J+a_!{n}qp>W~|28eomjC7^3R6XCBh(RU@wByCnk>!cCyG+VX=Bte zYU%#}!v9H8K*;?#<#4raxn*02CxZ3@H1hlPE*zzH|+~{B8@12|ap3}yg zAn`i=x1~J2YI*7A(S3-RGo}N{t(H0vi%hWoWf7SK=H3~n^NR^NGyzFG!35uS?VmGs z#O~2+m3{oxh>~A|GwHKj@^xCC#?&r*Wd@ku3Sl}MJ}=oDv{v)e=O*)`catXcw6a6> zIjNhA|EiRtXtcUS98TojtJQHI(4JQ*w%MFEdJ5Egiqjt%+9a|YTLDGxJw*yNDujmh z)?FRVkId@D`hL}`kNE24COmcC*q>vkgmXm55o|RadVe`=#EQN1zdKBpc;j2o)BKNC zG0P(>k~Ou}`%wH4-VYVy!*$z!?x_E{!;B-1#|#afobI8Ge#_L+O&BRjGs;Yx&rM3x zjhi$W8Uj}ty?hf&8Ja*dF}=RMQ!zn-y}pA;H&BhK{mq$r5Q9KKf{oSc_r?k$iG}kv z%mTM;MhZa-0U6?jFo#ft2ncUC1Vrq?gQEU^#*umh`o+TH2?A7PfrI^Xm;QGK^F+fX zBSSMoqudeess4T{#KKHQmJ;UPJwxMtb8{1OGb3YTum1jr?I2;|te_xa&`4}J{E*xr zv}*^9ww3@ZI5<3Mxi1*F*n44Tx~H0rz!VTrRv|@MiU!hiGAPzM z)@~MdW*``9Cx{_ZV?$G;i=(sC{mtDiEEEiMOk{MFtdxxOx>gk zSUl#;Xsk>n=^=XQszVLN8Ya#Jk-0kWM3t3pZ+oPx4x4{`?pGATLnQP00v=u-aleR#fDQRn(B-T3VH;M z;RhWOM2;`%!_}Jo3IIKf_y_>qW9?{w0RiIlM#A+3eqSd>6Z?Iw#)o+F0^cf)3N zDwrP&rN?5jq8V`~*29CU1=A~`bN$Cl_^#D=MBQ@yKq^@K9G@PVmbb`3DS17UUEQwR zgB@ccR;mc<6vv}>=S-BkJgRak5QW>h_pdQ&fXIGKeV^J2wKZ96+?JC!MOJslJ+%h4 zCi&JGsk)qImX-WbIA^f9LxU1P1d!@slSWa*6O?Y@3VETD2BF3d<4QFTN2!`8N~=OJ zlZntTPK?ZkP~pINtQaclB&4~*o9!%Zg)l5}P9@cC)VDk8a^ksZf|Ra7y|CktZQN^o zQ?3%CktiemUZdt##(_{7QHjuwDjt&a-;!jhtN~{+L!+f}Lma-mD&J^}JS|+jbyKcp zQ(c~RlbE+nh?m3{^BUt&p!`=h(-y(FDyLlQJ~G_~n#t@)P0l*+hXU-HA(dMVskz(; zQ)0hFh;EUe07{m$PW8(R=2F>#sM*|tk)dqs(p3B?;o)BBXllm3``+>70q2HM^Shfm z=g*0S5?lWK%5)*cruPOap=EkReE%|C$%xU3v;k>9XWUn2!*+MJfb^*l(zc5oy z6I@_r`Z&~4Tf+{b#lG-R8a3V(Nqk<7ito0vLKA@Yy&T1eH&z;zch#h;i|S#u)poOY z>Ta;5&3YDI`fv9%% zVtRy)z*h_1cGTi))g8RZm+i%`Idzga1P(TF&jWxVtp< z>@d>ppQ%o3ICIHhOwl>5v{!ta`vE5TFZJ!11?yK|lsnT^M^Vek6@EDPP-=Ov$cR-n zY8k}Vl;R7dh;}qH0>_CESncrP4g@zuYn$QILT@ZwSmN-)mL8-ADQZ3Rot6oYTY_pE zz=`L6^o=VicT}XJQ|c#`XH|8vzbmAjezSe0kxc5@slb8i#d({bnmSJ9!Nmyu@&NmE zr-Z`D1L|v*<`yo3_OlQoI-&fW)URpgPUZ=$I5YXz>_CRU6AoCl+O~ZW@0H0d(Z4*9 zll@%w33A-q4b1w|TqeglzX1j9ak{rIWJm4dK>^1?7il%Y-WDuKCcxaVI74fLhX_M% zaE#|S0dfl8eekd`hgz4GIn%0yb&0VweNJdNY=3F5=j zu<(A@2HXV1`td-Me{ zI_AYB-$W}FhJ_e0o+R# zu}kX=W$X-v;%pDfM-j0L%?)OdEP4}{SdE(5_fLc)u($byLdm)uB8CGaGtmb1NdPm= z&k%V%0wdAe^zbe8Ed^HgbDKmZpdoUJFm5wLDPVt4C7>;G$$*aJG4r<6o$O!gfXnv$ zK>n3c?ayTMGm!v)e*+pClbdwnc_Zj&Vg zoqc~>63J~>*HxdNRfQ|5NI>OM#gTz1OQjzNxn4HwAftZeK6lgk0W8{uZguXu`vub0 zM!V3t8%t;H4fEga2(o8Q?o;N`=-~+#vPu#$^XO3(k-((eba@~@OM9R=W63ISU$A3| zfc8p5RSJ`!f@P^>zE-L zfs7xqH~Z2or}b&!Iu+CtIK))LB}?KHDN-QdG6fuPQ%5%{$W(C!W7UTx!(hIY0t_5~ z@h_cuY-{_B9iEM98GWtOJ-8UJ=+LT-J8*U*? zPW3>S2*!yhD!19sO8Pbt12uIj7NXJgrtWZ$oeCsTN-gCq(US=63_AmvDpE=XqrMDD zm~3!vG7lMyC76D--aUT^(U+Tpw2ygfPpP#Tzw z$44<#KlWvtc(CKqnhU8!Kna3>pZoOI8Ev)%p5Jiu*{f={`DVB8URD1WH|MMY(0e*R zzTcHjRw^4eJ)$ZWGT3HGr~#MFqJI0k*4>Cj*zD{E^_r1-<~8TP5;k~ir=keIo_ zn*v6uM`V~7DIrg?eTm#<%o{PXIL>s71X;`WAb4ceXzPrYj9giy3Q4pxd7@dmZd!8k zB7J!_DLp+qJ^gex4o32&qs05Y?bc#XWz%6wPvxmpz91vc%jgP1e%1gi;ZhtgpV37J z4_A-91eII|nU6)&Y zz3!wb8hAq=^6Bqi*yzu3fe`?SUQ)32Fu4Qk7L z`x|N+oVB~%rT(Z-tVPTYz`^y`5S^q(QQHW-7GvHhD3wOvxOo9Cpaow*D_}?Nr0q6n z9WLW3d*$596R1}xR%_cJ+&xJusal(KaEQ(vRhtUg!wig?pqtjob6Q_4 ztpUCx!jHArozN&Cu0&a?VwRpeg=x(31!fLw`guS*o#Q!Oy#7k-qquDj*oMWloTJss zD!lDeyF*&XonFn1&MvsM<4Vq1_#v8i{_br_Z4+J%hXzDgb{r1p3~muE>gm9Ia)N^m zK%c!D{xoq^-fYyau3rcrp@-fg{*CH>?#r;~4=(tcH%2BLCmsqcL-k&a9l%4-XG+4W zBq6}*JgyIfy%$3HfPeP7UHW-RYbj@?{}c={8{Q^%yQMmw13nqi}YfxaMbnU?~=&EhEX}?q2+W?;Jp6n<-Xgu z@j_{Q*Vp@f_U$UGI2ZIsrgrc-OTsvo|`gfwB; z(H3*?K|#_0Ki}}1YuQdkEXXOdrI5fx+?!ut=Q&vFH%q@_JA0^Psb&5{=&xntl`ME= zXahZ1EuPQj`BCO~EK#0H?0MupDabeZAQsOSlqlh7SI}9auAa;(Tnk|VH09pMRJbiA zC2(B=W!p@I$+k`X7Qffta_<|~=dmuvn)$EyvNo}$ zRl*owvJQWW)8Z$wGAPT;xp&Fkvpp)iMzB&L;etoFX&E&+`_W*$r&6zlg{I&y3TR!0 z`Q!;b1${&@M%=qchdD87Z1ESXmYad*=PN+HU%4JvbL-jXeEIk7NI5R&C4cL|)v1s9 zzxa>6vUWlA(QP*(h4}6Jxv1t;RG#CWo8c_@19!fLo3BCP(pB}|3Df*IzHC~2k*^Ku zJispq5|Jnp)kKz9=na8Q8|QQsU^62lqbH`WMf1^GQxV-BU(!OI2OrxN5JnsgC;Q2@ zz|=hLxgxtbHf~BtZNs`Yl%uq0XIU`Ya0W_WM2IBpK6TQ*8mf0N=UQzHL=Y#f-+Jbz z=}IW@AP?fUO1@$hl61q!W9$S9;O!tt7^z&BiF?svC`7`-v`LgC8*?q~w{cO+10bmc zY)|<}g?>K%Z@A=(dA(Py4uS!nZ9Z=gMfKnuN47}j{{9yiVHZ>5;Oo~Hp8G-)5Pq(@ z1?0*JBWWag`kREzWVtC7BPvCVXwf9+QWUU0YXQ!n7xU~l(2 zh05vNlM~OPAR#bGCjTh48Q(fmF2b~Aax`U*>eLRbErBV-U2DTlbAe!+STzdY?bt^U zK`*4wRhm2&!8@1*k|Gu8Q;h=8=oBtPy#+a(o}HJCMTjh6OeA5hvcH{C z*@3Ky#>A)x1_H~Cg~&nztYY>Te2aeZ3$jfPpAnup*axUM;zY=pSZeV>qI( z&tG1HkEf%afc$DNPJ+!pUJEYCqkQCW3j&K6_>tA|vBAZpdOekT8Jx&7 zY;1=fr-OS4!h~3%8{*R|Jq3}vB6Ythd`)G}RX}JG*;%GyXK4_|Z({f_z(vk^=2HKR z4JTD#`7vM7jEb(Xd21UW`*CZ|r4yP@ynws~%ROkm?y`iO*kO}gSb51(0m0hRgeKH4 zmRTp@u!JraX?Uv6o~oJ8!>uYJw-(X?;|5JghxwOFjVQvCr zY6&H$eFT(Pa`P(pkqFD{!Kr+e|5xc3hX6OtKXUOp7 znuXKkkO%7CI?k`HtsSnFEU_uNM+eW0B@f0m5;%G?+pXsQro`Z*=BPdo1n=vLd&v4l8CF9 zV0W^2#C>wZ6LuwgC4;gdzJnEW$w%`Cx|<*ziZIA8oL^|;)u$eS9zgDb{-waB@(FktCfk<#uJ+(_hdS1{njaOdGRm-aTahyQpxjENsLmov z8xaM?hwMx5znb589ckN`8NvohPx0`+TpSG(fs@XHtkS=dv2_;+>}jRSG_W{vk%;@0 zZ@}K>Awd?g8X)UPJAF&&uHLY;p{f^t+g(bhfH+ z_to=UD666OD1w&l3PQn+_eu*;j~ci&o%e5p2ghlI?uqR6@VLB68l70_yXkLYiR=;i z;)XLh7SH-S-FYan(WMBQ7o*#t6iHALZm?1bR>vjEv@qM^ShrJ6ZuKBfqn~j38Q-2M zFaj2lNhGIAq(pveA?)v_3Pnug#qAYw0!Ds|p?z|sReA|mK;un~S>-|224H>S&#n9ujyxHe#H=^^v^jer7uF@a{Km!Ia7QwgLbiD;&-aii0 z;>vEqC5*al^N7~_a#vZvFkg*k&G&#d?&U@~Kh`(XJYBcsi3@jRaa-su)fB9Cc6m-9 zyp%i|VT^?!P&>5lO7)g{i^^{^D;qH4hOjh?B36W2TnVyH0giZZbB+4Q|Ci&p+ZBKxR=M`+o{4tR) z8>ydcce|0jjAmg45(Y@w+?a4`i0XErsxhoRtZfE97rI6TzY`e{=u)40AD=!QJP_Cx zM%WbvzLrG2b0VBJydG4o$RsZhC3vw&i(`zVl9W)4-vLGb4sGeQa6D6Jy?Z_lzw^>@ z;BhU<7^T&?>OWm2-n}0GeqX*8eE*FQ^ugG@eAa)s-0FO7-S*(Sy?8QeFx=Vk=1ddt zlKl73c_nI~+4axVYx=iad%R`U#j?*4O?*E1Yf6x>ie_AB7((|0w(*6V>Hv&310p_) z)_qh|7GiUoQ)dr%s88VjJBPWX7Po?68k9;%-$vy0`Hf6$xx&6Q`BdO3aJqaEpqxtM zGG_eyW8>YRI4iZ?(m;gd57~t+_4ls9P7V@66T9YAb7O1#&_XB*MO%RaX*`IC1#>)M z(H1|$aDv*7gN0`W zqt=Ie7n&3_m#o8Q_?|o(=wso8=5krCytVyFx|PF(=63~Gx_lIM9}}+c*GVLuR3;rq zZ4Lh8>qx-CK05zs0$!RIW=H5N{au|EC`U}L+ZQun;t!#a559R)onif@dlv&3>+ZKd zE9>e%m)1Q%;JTy2xetFhyiJ)+&uNz-wau8 zz_;-n8KNyGB0nj;Cp4*U^n^6dVm}sk&-2OK8qyMfZqSW0RFfto(H4%!RuO0z%Fv=v z9efGU$11^3VT}E}9Lukj=TQolt?+Q(B^+2FTLir%%CXYR7UXS8C4#EEe7do&8%>D0 z8X2kXO@bZ$qF`l|cS-D{ixA~c>d=STOi(mKND5uy$CKlq##-w&fVfszIjH3pA0`H^ZV+2KFE_@sup#w2(AG zf%xAkB^@mDEe4{uNOazu+hItOCzP4O5@RP`K|%q+rw!O z!H)IkK^I28db11P^EnMk42OIc>&dK9cj>#pN8IYFY6Lv^!-s(T*UGX6@OHMDqqYFX zBM4DbN&q3Em)#8mt#b)&B9r!Ss-ik5SGs+?@ka7gio@1yD+e)Z*$HhjEWX-~i^>NF$HDN;aItgzp zID3c$M{M0Yn<4La`%Z5-VrJTuq!uG;^>2*~$xJ3c=M3cqxKrxhJ?{L@4)xAk#HkvLzEZ9KtnL5ZRQp8LA_wJ)d2*IUIa4 z={O(a*y-P%E}oBPuKa;1u6Mp-HGgfn-h*`9x4Y;d8g8N@IL%dF4L)mc@62pyD?q-I z`6e_u7ah|m$Jk-Xues6EA=5~;r~{Kmu#i!lqr|uu#>F~~NRCR1hcb_I4_H|z=kO!* zbrxMi|s7(SJ zfm%O~{cinj(qFx6cJC1!aedCf>mK&yw7Sky3KZWpO3w5B@;$$*+69r&eaO>v+JoMH zuS>tT>VR=nW0WDlG)doLWM6;x0p6qhw)I1Ps zB=qy(NR&bP@s|5OU^|g8D=7QRDRYEp7H`Ox1eL#rxK&AP5xV5vP45GlGfrW5%hoxK zp&q|{?FO%)QPH^Maa-(z*q7S1bm(|>{8toCUxexQDSyM^moj0>yI$&iOxGp-1Wkd;DP4S#1s#_hlBOW@K@Ua7=rSx$edN?TXaqc7g7 zMR3wls5#UKe>%B5I^jy{aA@hePO4^8wDNTsiG<0{tn(ln7G!)6=4^GH>LhHne_I+- ze?s6n_@j7g)9LdTJ>6tPMJN=RV|yoX0Yq(321Mf!XcF?*qP9%BbhEd<2=X}e>YT@> zk(SFQI}SPY65R+_QCDFpnG0J%Jl?f~W-HJOy2@XtI8dQlVfdMUX@B0r3(fjVFtpn8 zcUsKOb3R{ii|_-yE|*{mW&^>SS`b@c^Yyx4*4GUJj2e*uox~js_qC$S!Y7A9MgY)^ zwTZZzs_nClP2#+Tk(;LZrb+xfu=$`xi$CEB>4fEXZ zhwS{X>qenS7P%$3pdk!6~*{&ra9AUEj!OPDNhKTSn=rtb?3sA+uRSLLo@GdFv zx_^8`QpKtLq-vtOXWZ=(Rckrz@n%>dXh8xdB zrUkb@U()D(2m`FwMHM&oy^X)?;(FyL)9o}H&cAqNh`)LzWy{s&YHKr=i=W3TMKQNk zRWwvo1)3VU0uI^olJ$5bF{M78MvPk(v2IucqH%MXTEq&qM7kyuwu)u6QWo5=;;qrp zu?M_@fy+=*FAvDQU2{)vV+LkXg)P`}a5e(^*L>0izdZ8@qg#jA%~tl96ZoVNA1Ao$ zKh^QEdNl>}x5MA#qelk(W?n?HUjD}Ki|lUn(0FQMbj}iMmd=rKx6Km!j%2Mqv#YKD zGmov(h#CQQn*?wwEM~<-tlEYAdeF2{V6+`&AJX(7Z>H<8L~Zs`E+sK!8!v+RFv=J* zO1@Yp&{w&6HZ;>*D~huZU9&+stg(%>Taq|HiF#(+VUNh`@yr-f_)BGqI~Y&-#~O2q zdu4ErtT7%K7{@G;1=d_e`%;}R%43%?duX7l5`+R-xql`E&sRL+i;~tl@^+_d(Ntq5 z0Un?;%?pd~eEl+erU2hCQ3k9-X-znf2w6+eLh(E9rRL>0HUOa%5u)tNM#>Jt|!C?p`|_6TxQks9@<`VO4#wXVqq-rM!Hx zZmH@qupLwoY&)X9#WSQlEBT%+{PYj}a~gWHih6)ytIzx{!~NbbZ`~t#7cNcU(IbyF zcoZ!Ig4Gui?YWo76tF*wZU&szjXe>H_zTSe^(p~gPG(#S?aJ?Ed+KT{^O$xCa_4(h zZSL6*QIwjX$Y)3q)k{J}{_PMXORXO=>ELbih@khU6UKX|S^H@?xosksM0(VhBWr(} zv(PbRwMIdC7s+dKBlv+Xl#+Q%9V@4fhQBYcz-2q+^=u7XXU7c%eAX}_(iclkHuin!lv@BTG$Wi!8$U#XoKf*| zl4TS&*yF-ok0=ieojDGkIIZt%s?BN}Ff&MeXC=<&@D?kYgLz^5De3e2`(Db^dJtsv z?w(U7)Mx`?bJ9Cy<+RgW255s^{HqGd&%p%@LU~es{b+kQJC@DGtyA=7VmpV$~YN61m@T45ibeRM8 z2d$Fr34ErPihf3i?VB-@H$9{4M%I1aXBxH9e^sClSnkzrcn}4NM$9$(Rw8^7ZQ2%U z>imHtmnU{MmM;xVPQ9wvW(5xVzIs{4YzjcHKz3iyr}#_hjaBrz66~&$M9C&l=-_E) zZvV6}+S^@SnerEAZON#E$$M_$In!Ogg2{>hjBb22)c+VxTGImVD4@%u2 z6>_+gkpDbvAM#T4eaz_iq;0bw%-=+dO8E3wD^CW1|eRuKhFXko2*ZB(PG620YiH01S!m;&$I zNOQYn>t9z8XRi2lzlY(+H^qp?5Qd{*>OUBw55r*fl*FXW#V(zpxMP(asc=W}sj(na zNU$t0o3U9S?I`dAYYC|%GfTA>J-&ZCBg*SedYTaW447Z%A63&1o&hPm`rIuS@uKx} zhy*!JRkQpie>WE`e%*JzTR`;XSH9}&`LCYW@3^hnL}H#BXGXp!TL@*m1EpjD%T0wf z-~sxOOGI4R8=SwZnGH&|5p9O(sLe*?2=wN zqtrZL7Ua;g;kEOc0dfmaB z-)z6s#Tgqwig}yp+hZ&TW}zbpfh<>$F9BjhC|q7fH9*fWInarN6kzY3wu(x)p>DwD za)8UmGawASc|51*Fy+LprKpQT?+6eN(9hyu8z$ZKo;|R+uFhIq`?%x%=3)xSsxSOE zbHMau_w?A=_R2`vIxYE^4{^)=I=rqce_5fsLzefC4xNwLM$pzeJGa62Cu5&m{nR|c zVZCMcjzE>&=cIH6Z<~%!0H==)rR(~4_Y=dJ`k&oGvxV%AbUxEg94k?`CXfx4q^YGU z)T&<~N%XQr#eTo$Y^5xzWB=e&E;7^yZ^W^SvbFL{^6>qt*4AR@7rh>$xxy+8u)&6%W?^H~>bCA^;k(h^y+f}OTS70Tk#)8=idqwdbE1TS$3m;CGJ>b;{}Esk_4!pG`X`&NmCqh0m{ zZ}R>JEUw8Ar2<-2c35iR*mDkg8KpUMw&eyHvlQiVxisa~WpU9j1HYr2IxWNYbCVC3 z%vJ29ZQY0m*Y*{(r$o|XnG-)3_&fsPmZBwy>bCwS7Ylqo$=T)#070;5`qB2#&Qf}$MB z*3uCS(m)9kR>T^O)??H6J|3TQ=SgmBPSUxH zDYz*oY9L)>(@LKFI}>^ZF4)S|Fh!msu|o!NIYC{-7+4@$L>QXJm_EHun$a1!0gssr zY*5_Jyhx(+?v#iJ^VTETbs3jHLTBS4u6V?-T_EL85BA%i~VK#{Txp?m4cO!+RTZQZ6ue{V_?mHA_^9o@mT8L|y!L8aqkVfZHx3Mz?0S9f9a& z0k(3iahK-pGxn*c<_GcF7W6-UWz!ofT5?9onsS(;#=14z$7Yvbmv?slG8qGtvPfO~ z`uyiJyaFDB&V6i!di(sYa>BFo|7r?`kJ(x<8b#cbs8~M4;b>kHsc4PP`#uN7k+kv&&R)!UP$$3y+cjQ#;vTtCJ5#PD+K?l#wUB~rR8_4&Mg?_T2A#Lr zgWMNzf{?cJ}&>|#YYuvTCd+(Pt z;7qb_jsCsPIbXbQCdMkm-?eyks@kwk@-h$_tI@F0wm8=(qQz!%cNO*A9Isp0PJ^uQ z7{tE{6MgKc5`628J9!_Rt2=8WVS|&<8Q}ZXuwpv(BE7Q9N3_*p^>`-9QS;|mIj;Bn zYxs1LGTMbO!03H3+v9Sx=o6-_R5p#M1NbDO8~^h+HVd8zu+$r2u!c_rH_6y4!P2%- zJk(uf&Gc-zc}7+(eWb&?db+H`18Z|h&(zZc#fq!*VgQtO0izW&i#oBvB5RPJX{fe6 zGi|U43NRXGBt;?Fl$<;kj%u>zXr`I4#sG+^cp)iS&oDA3CI&`2O8Ov$b}oYY1WXKE zOl;%&AZqhtD|1kq{lY53flc4UYIy!DfD?+P&aYPc?@F4qFCI9wC=9p>74~N`UEC3E zwum~%U#p?P1wU!%#;X*^ssY3s-B^hN#pZra-Lekvlf_7r=Ig=E$VUGA}D%w zVXm+SCbh^qLzwiAb(m2&Zkph5oqn>2?6Wxps_xVFVq#iyBcnSg^@ObR+A=#aB)s)$l6GV1(yF=YvQKl@}3G3W(B6psOU1Km(^4?Xt zsC?N@=kS-6)O6TOxPW|JK^R7XMC9)e{N|z%+U7$8{g}tWG?} zriZRAO5+?Got7Rb4e*qhs(r&UY-KHls+8Tc@4Xua((PODW3A%S6Vwb=7FK(e=uCI=kb3)ghd-C7bF}DqdFA z7YCY(bd$eE?=qME{OmfteSwrm<{tP;Ax)9MgfEtX(lBja)I<%HIP0ZOg9L(ET!7RO zsxOkv_&MPtk6$8m84p})n{=q{o>P-iumUG>4!P56D%SA0L@-rZi>1;;VK)F<8wa?^ z(0OCuUG+7XDya@V4T`A5@r+aG^`yPX8}oUJ+qRQAt(V%UJ&AZe(6{(HQdiL9DYqw1 zMIP;1*2H`}vSh8Z1IA|YlMWU`O*Dk|Go^VOgG&n>V^V-V%}+Pe9(g;K4Kc&cj$~j> z=9d<-e=C->`9&EP>#FE1lCwyF9R9Q@zg5PihtXY*^_aZplXQ@6by0DwJcuPLwoy@2 zz=ftITno80y<_91Oc-`(4KmG7aaG6j>YrV8fw@p-TMTIK1mr8 zgUTd$4%pZ4E?f2hjefX2C~f2FvXSqh=0w?-hv&LA48yCsRI6u z#;+KXQqZ=I?L&tBPuwY@dXsG~kWqGz9gOK>nY#;7gMy8HE_k8N=)%^3)9?O86Hp&G zeze(Qe*48_-64`$@d=2E&)}YGBSQ+9aE!-cW0>+L!#$Hye8Api+Z0?rCpWVI0|j7Z zd^@Urbc00Yfq&9x8=m`|gFrio;GCQV!U{FT>6+uql&6rooH4BkyFBF!cf!UHqz$kberT==L9GjtR-~Q0?{F zp}0v>6yQC%(rrq}a>jl>9lv-sJJ#&=T$&OWE2*U$y_~#k6B|m9HuchL=ck+`?S`n( zwg@6sKGBsW%G3Y$pN7MX`NEa&kI-ZJOfc?37~MAG&JR-o;J{sh_%>y2g57#rsI^@b zHLK-MsY8cEFY4v_*MG6S;PS1(KGz6bJ0kGw@*VxL6tv4QB&YmSe5p(^E(RW!OPQhx ztcERhi>@qtoq~-QF*mv8n-h`V32p-+_P%Z!h`UyhAb{g^)p#cC2DvWP-=19tpYeJ& zl^WDxM!BZcKSD}-iaEJ$o&CGx_V2cA{E#gNTElLk0Al{qipaGE9g z2X5fUKmPM@d%XRRp1*T@dEUdRyH^E6&N?Pt!~%h9SmmG>hR-|;X#6X^IGbLFkofko z#UTU+(DowTyl=Au{1Pifn|am=!b?9x>Xl>^#Ytwif`2fVTtkb3| z|G*YC^;Fj`xPlBZi7U6Hga=psiQsOT|@+=^|uK&P}dJV3^kE8x%#Un-hk??^x?bh?CYhug4t!^h4sz}>3;shar^q&uKP zPJv=ey4BhVLHET2^1}zh6AN z*OhE}<4fdO9_U{w*FZMHE9|*Xho{e7& z=lRlxLy_xsVt_QM!?}!yso14GDQ5t+EY03?C7q4EXXD{$A}mC5OLNP@xIXW|CoZ$Y zczguK={i2d#E@C5s$(~n~+>${Awf;*MGVz#*F@YiO5m+seK^5aj zoO8C~a8sx2%afg9W=#-&jr1gQdEHy&E@8ZO|47HBJm~*@3(#iY%1_S(ChPOj59$LN zD&L&aRdiM%39nMnQR@)Lkmf0o6gQKl4pxSN;U|zaIzFq}+B%zm=Mo85AQHcERm2pW z7qF(|{hABE#MIvIw0Z?icyqr1lFs$A|Aq|m#p1tfJ1xGp(Yl*DXAE$5ENqZ^XNii} zzXof%D5JdgGi@Kol78Jyd0NyMYQ19ScGH4(t8Jzp)VKRP&{z0zY@_hM0s$8O={9r0 zkMklxvtdZdiR~L0z zeh1fiy*aL!mnib(xFVv6ZV=a6-J=jLe^^LYo)5mEbFJ0?EIkJG({>e7O^y%#olw-{cW<7B#=y!t!A=Yv0P4e zuwen!=pSpn3Iqk3;qxS?rHVG=GB^EtB6k7JkTBQFD2V2no?YqQ+Dq0$O#b!k-!2CJ zKJBr7qIyF6G56={**W)5I-C3UBM(n`ecMZWUfKD=%e1R@PJ183Z@vVfq?khFD~}Gn zuc+sUenXa5EqG9y_RW1yzV+^bljn6k<-PqFbFiFdFQ?4ZnD)!7W?quT{>r`r!iyXkN2}RSVbmejUye_Xhu4_ zsM-4cUF^2dtAN%kGCp3B5y(uiie7OY?+10Wx&YCyaH=Qh2HAX1EiyskhtTYdO_Z)> z*AuY#M$s>qQjE)`T93EduG^X^>?G3qP>YR{Lr9dFk+nX^I*hu<^KQn!HDs~Ri3R? zZ2)nxXcvNZz|8Hy)o`2F$Z(5w@&kvC!AB4`=FWcyw~%9sKgKOFA;$eDaXS`C$gTU5 z;+#Soav{M+D0b$nVb?C$Fy1g<4Lt{dCnX_11VKwMH{&?sKI@2MbELkTgP=oV3(J+4 z0bo%@0;UG7tArWnifoo3#0QVoCG;5~v(+dxn6hLC5p0+c1w*fNB1=S)d5a#OH{izm zvY~@`)oYy461n-RqY2D{#jyDV{iN2I(c&|hDP*ZJ$ZP^hp$Z=(XK9o^c^*7baEDCV zmj;)<{FN&{ZJa}LJY3N(LgHgxDbXoxUeo5ZrFksQZ0HfZd$o1K%celcXcxrJ(LVj= zr@!h0UK13!{;7T1mcu)q71kXJ&UEQhUM8X~_@!khoA3JTZ+14{736hD6&nkUxzCR_xCeC<_Z%mzroa0)I>C>!j^vFqzuQLwUj1h}qnBSJ&^pRLg#;_GlL>S8{YRKYC2_ zSi{`eSs({5@p88wbW3>!HsfwDd3PXu$V7e(&=|-opF;l?m`$4k57E^vqo?;RnxS3L zzJ^#U+zZ!1J*=|n2jG!*@kgunymnkWs_iuV+c_l}O#!>h+|OpbtzcFX1q_Cg_$)dx zqmMO}l%KG+mU31_o}>}HtO zNzG`t-P3-QK6G@`r;pW38#kOT=zZ*AeTehH<2`49=e2(XWO{TrAF;pi#nC-G_a4~3 z=ZLs@{mv-5YK!yErMIjIj&|O?65MR+{_C&#)IH7r?Bf5v{_MA3e*4SoZ2F$G*4|wm zYVXaL{-U38>ScF+p(=(e#F(=Wmd{z}Z@1g^zzPFi@grfj>_G+0-Di>Y>tl3#7|z>l zTRR3Vykn3}Adj!z<8(M!V;bujjCQ-c?9xFmWEZW>YAD;;f8m5_v-^wRmF_OR@iptD z<~d{7k?i&2CxTC2%6m>dYEp1=g7=dRBdv22!K<`FyU9XWEck95KmJDcrEMHsR5ZA} zchO*J*Z3Q57(aIIyfGz%2bZXWhj6;$alKR0TO^iogrG~LXlO?9YwcN1!@zVjw|$gOD<_nGmzhY>SNGl(Byn zBS@Ji_zg6Mr#5sdNh*ob%0sBV5hCjwv=18F$ZlIxAy&4g8K{mTqucnWIH1gALN;1W z)`)P<0lAF>9=F_q6|g%Zts#@G-NqE>E!z1}4Up5Q+XmzhogKoT)0{tITL9 zByPOf44~7?c_kbD)!(27#tWO+UcJ1FH7%9e+I5D1Gh*Pt5fuXlRM2y^^<%3?jvLGS zVlSPO++>&D7fV=IqK$VY+Tc5Gt!%;v2s2J~i~O#}O7`!E@cZfcFIJggvzUwFDDMk3 z&a@pJh7v+Y5!g&3K7Szed83CE4qT~al`!Z-w6f{cj)IFL2`Y?GwYhYV){U24UP>Bb^|f$QZRQ6G&JVipGu+jRRy! zEU}<4_4zIn2#P-66^>#Kt0eqnMUsO5h6j-Jv{X+@azZ?7$+PjXfA$Y8kWSDkLZ5|1 zpRKr@%zZN(sLw+Z!JF?-&o98=?c5tG>4JCXmsxOLqoN3hwSGze+W)}H5i76#Qv0sc zp6#NzeSZd|d|Y$i;Eda)xflOa(G=4+y5ggs`i@PFW%u7yqz`Va04wCBW>yc-&w(xU zE6L6GObp8fto%NCGZ@V+`sH;PzOm!rFpEhN*#(pO-wAFdQ;aFb9gS?Zv!*+1cnojo zMziJx!Ruy0ZanXKF7OJ_v-%@y`GnS-mc@$2r$1XJtqTC=yRsqL@#amQ+5<{be5I3-v3r878>y?4{nXVNZd*`jE%&?i$~ZO?wdq} zvRY1N`!|v8nt^<`454g$-=x|j!6Zb1S;RcRjOn{18qPYS?ZO?xPOu0&z|ybRQTTN> za`1K$ewnP9O@jX3bG2$jS}O0__Zb~!25w6(!)+MHZOhIf%tgcay;MNkk;9a<7^cpDb-bM^v^XeB23N;e5%OdNay15`_p2)(ZrX^_sh zrva_fKt==OGym6^9#o^#B59=Hi=t6t5~3cJsL(cE=UDhZ8Dr+Slc=c3N)j3AEH%kg zU`RxSQHDmi61+q_3}v|1ggKTRQg~ zNQ5Z(lA=taBytLvJou*(?LReS;?)U@FjGcZ5W_HNM~)6V&BE==u=Wq}H(^8@={}uw zCZYCEl8A`5=TJ(nD^MKC`xy28WBgKfOCa?dSC&i2{{!xrcAR+HV_;-pU|^J-B{kuW zXFR{nR|a_w1`s%VRs0By{sUCK86W2MHC!a}%qo-Ek$2(yg&&^6|@0Z-78KPY*-)JKHh z-Z8%q(a{{MlOQQ}Z3-Q~$F(DB7$vC=m2tAfeQ#reIUl49gl=I*(yViyY_pD6sM<4A zXZZj7CKU{%tTrW%6=|Vv+9*I+)fmy}*j}-VvFow7aTsx=actxG$7#Zu zz}d!mjq@Lu7?%@Q9#;?739cX9cHBkW$9TASqIjx!*6>{6mE!f_&EuWLyNCA%?+-pX zJ`27Sz9alm{Br~h1eye{2u2C661*fNB9tQ3B6LldPuNR%iSR!WE0H#lQ=%-QMxu41 z>qI|@$%rM1wTPV(=K(?!@d@G&Btj%+Nt}@klB|*ZC6y-CC$&N9jI@VzlJqp`L(>0b z0%U4r4#{%JD#?b(R>-cBy&@+h=Os5o?t{FHyoY>={0jL?^8XYZ6lN%#Q23#!p%|uE zr?^bJ$pIZDTrJ}Ijx`zRMEUr}LD(NT#~X;E3D@n?Wb~%! z9n!m@f6TziAj4pe!4*Rh98k&7z|hVx%CO9Ej^P2rJ4Rwg0Y*heQ;fC&;W?uh#w0003r z0cQXN00DT~om0y$1VI!%Jw4u!AR-nby|kEVJtGpa^NL3%BnTEZt!IoG^N^kv;S;QU zft3Y+!q!Jv`3R?O-@!0Qq*B$VZryw8o_nhS4C5I#tYi;>kTb>>Cb^4o0)x0wY-0_# zij#2hqPPR&)~Mo6Ojs$!UAVK>6nA6FdR5$qxkS^yABTyY;sN4&#e>+jlZuBhVjn0T zMz38~{D?6-Qv3wZzQ!_2C~`)eS12G4htucYCkjx<87`^Kc%9Jd;DIv>4;jw1q6|{B zuF|_szY2LAED?u{HmfiEb<|jcE!ql14t8j-p+S^;=ila85$ELa8MnaGK)mx@Lwcq; ze`j#8$oLW&j24rn_h&@wt$T7;Lo+rUuJANjnjGm*9PMr>$!h8tNezsKs@!l&TOG&W zYUYblN4zfiJrZju*%`J-GK;%ZlG_5Ym~O@UGF61)o97z5*S$dv->ccaM@COX>pZ48 zE@ZeoZ;cK#))iEx=YQiOYCRKG1*v+GzHtX!;jFScIZ;y(C9(eVPdXy{nMy5?$ERPs zYmG54^lN9cyutf1?+-3laxU_;(!$xGC5Ls^aRr;~{EGY$Zrd04@mBVEa>VYN93p*R zo>+~p4N>NB%*t7od1W!jb(Y`ezc=#+t4Fo!004N}ZO~P0({T{M@$YS2+qt{rPXGV5 z>xQ?i#oe93R)MjNjsn98u7Qy72Ekr{;2QJ+2yVei;2DPp;1#;{#~b(Z$z5`nyCaI0 z_~XUP|KbNoltdGaff$UKFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?J++~YA1c*r9@hQIfWCp_f@ zzVOd>@{;Ggz|UvCvWYnan9DqBsbe4Y%%_1Mjf7ahLKg9f#VnzTr7UL|7unBBRON ztxB8Ht}IhJl;z5Q^PCYiHCNN(ya8V*SW{iq=#P|iPei-YVKcZx!TRRJt@iP_BKw5Z zl~$$A+;Xk>&S-A)R2moUsumK}PumdA-uop!jAWOIa z4pB?622)yCurwR6C|O`;Ac|F3umUAvumMG5BVw=uBSf+b0R}3v3 diff --git a/docs/fonts/OpenSans-LightItalic-webfont.eot b/docs/fonts/OpenSans-LightItalic-webfont.eot deleted file mode 100644 index 8f445929ffb03b50e98c2a2f7d831a0cb1b276a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20535 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 Z%0#`NexefPFV?Xj51H#Y#AC7WXn+Jg($4?@ diff --git a/docs/fonts/OpenSans-LightItalic-webfont.svg b/docs/fonts/OpenSans-LightItalic-webfont.svg deleted file mode 100644 index 431d7e35463..00000000000 --- a/docs/fonts/OpenSans-LightItalic-webfont.svg +++ /dev/null @@ -1,1835 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-LightItalic-webfont.woff b/docs/fonts/OpenSans-LightItalic-webfont.woff deleted file mode 100644 index 43e8b9e6cc061ff17fd2903075cbde12715512b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23400 zcmZ^}18`?e^d=nJb~3STXQGL1+qNgRZQHhO+n(6?g`2m&|5saEwcEFzI(?pdPWS2V zs@A=3a$;gYz(7Aq%Nz*xKbeL0|LOnb|IZ{QrYr*l1YGvR;{69BS5Sbsh^W{PH}s};C5xs-P6IW9C4Fm)c^Z$WI+_ zKQcZN)>FvL!0E>qLGZ^0>VJS_X6<46!~FpQ65av=a!IPXxTrTbF)#)KQY8JcVfg_& zkYSRf`49QSssHG|en5%<2CiXlQ!y~@gw>Vptzt$wgxsPKit}n&C^eeb)HbU-}ZJ+KkZVV`{6!+%7Y0f))BOK zH2Lw>{NaG&{=rYh?Cy_YwQWe{ zPm`CO&kC-(_gf(w6)-|{nERgZ6RsvdyBDG14<$j7ef=mZG#)(n>lL4E#HZjlVc1)u zE$o?o=hs&I8f%}n#!Jd5QQsI^F^s|XdjMN+=vx7U80tLS<>49BYcJ}2Zb7;_b4nCJ zI9d41UOqA%q|^$a44I?u9?(!IlvO}R(7HzO$8%uu_(8b?NqPGw{Ccr70u!NJ)vkg7 zhp7B?S$&K~Wvl`^BfprjTy+h>;>*@(im`>|`Y*yivKb~$1PxAL3WLAyfv-6fC*W;R zsrpck_UUee_TV)GP*DReSb?~V2&ndnysdleTmD{CGROi&GB~TS74%qSc@XTvbbt#O z)u&fBL6jcTFEnr1-Ts$3LjwZI$7HQHk2D3Q@r5)p`Gl4g)(EP8!p8*hPh^AZLg#s#C=Gl%^P zJ7FDs<5F)`G^+1eKEG>r$M;fKlaNuVi+|Xo@lYJW_CDD|S3dilT$2#hEH5te6a_DY zm{_UmfV0bDk1^8^^d&_tQ=o`R?Q&+JLQh`?b8s20W-5U$936rK&xT{kx@688xQka5 zP?H1yNayNW)}(uaJ05?agUTul+k|4lQ{?eKeMqDVc__Q$IzTZ8-Z}PA#9-L`1?l0J z^MScXtR3)ctlwk@eh|G4hJ+Dj)d0@6k5jr&#Nt*9=2whm%CoZ@%sYpZYp4}XA9k1O`~IG z!6l`p(K);L;!+?BNq9A+23`lZgWcKY-^N^XzSaMQC^@3n;l?*TR<5F1UtNA4u)^5K zu-^iSVOYK^zVBjIdh==9lg8lFh-^V;gm2t4^GrK4C<#p`sP?;51|%jyKfc;^Ub(q~ z)-MjpeqU+$u-<<=^mvb0I8F~J(WFOme2(OuI@?=$A^JIakF5CG0p(8vA%=P|=D!!dn*2Zsk}gE+|=+6e=B2?oh&)453r z+Hs>geSP2xgV%4uKl(<{jEsP{cS=SmFu*&AL>=Xr@<`UyqX+~75^R)4pC^_-aTJ`X zenzr?s8Enlh)}pt;66SmOCUv{z@Qf6)!=Q2KlGRvJgEZs>n; znEDQs4faj+4RA*;r}_IU5d3D*GyY>_xTkM;U}|b)YGPn$=+W2rxZ^MME5qMk2s8{E z4nHs(8w=arud%N9Q_4txZ_JokQC~j`F~O+bY#X8o4J!@UiyGedXFfL4*Vi}wtB(yK z27&Yndc+g}poK&H+XNj55=RDNe8;@R^kK$o3};%U&pqNCc@_hb8W0wc6p$5=5Rehj z6ObGb`Mc|P_yCS*F(h2C#@9Dw<|yn^FHji`R86Fikf6|SA&81e6j4l2dCbG_+Hb;d zfk(fC?}6{0Z>+DL&-au5aY%6jJa7BG{vF6p0&CB@`~Cn(8^j0#^<9CI+k_|drDIZ1 zF?NVHRWWj+{-7ElELPeo>r1>W?JeFe?+=iG-vh)2h6gAKiVMsQj`uJTk`vSwmghJb znj735o^KE#Vk6`wrY9IFsw?a*uFnWDvNQBGw$}tXx;y+mzF)xpLjAw;4fc`a73P`h z9qypR;cTw5w-e2#w7Sg48;U2@YIK`Tuijj6*==_^Og3Y#yj*X#N9B_eGCX<>4TPQ} z8)!pfG~kBe;LeWqSC5w%tJap&vLFplSNQ)}T4wvcjy>VJUGH=?C+_dfQ_K?b`F@7v z-#_z(q~x6J)O~21HXG(f7mC%aBnrQf~4_n=?B01A);mbN+=5FpeWgogjt*K8FFw?#3uf#5pop za2ISAhrIc*AUZ5Y3+iFlUpjbD)nGbBw9dyogzp-?Csa+Rk0b)sFEOb>DLISm6yi5C znU$^D-Pn;vBE@o`4$<7o_l`u#%cF{C{NcDA`^WVO{Y187ss~gSsLhEYqs)StU^9@B}29I0IiPB|xaKgE^B;Lr^N_ ziBc*MOe8~f3**BwAr#qhp2`LbItZz+@n$=Un<4az9Fs}3>ve5TIvu!g8z3dBP%mxx zqU!hS-xMkYsl`f2zSpR@6mTFEhZRFL!wUzceYeG#%d5bdP0(nlT@Z(^u1hyt!p`y+ z?_3lrS(TQjUBu?CV`IeeMLfpXWhstJW?DiSR;3lHU5BSzK+~D*smNI7eNcd%)Ba>v zLaHyN6Um1&@#6CU7-Vp>SMO&%hbcq*S}VWx_WRTtOD zu5DILQszQpPKkXhlf7 zd=_>UC!ZgMxf~m7HHR=24MY}P&`5a1w74E(lBuZfL@rnYyix9rSM7z(Cs+93T!W}& zJioPvcHSM7J}7v&^;DMTVQWlgnrB;B)G9(Yhj!=eAlCl+5h%5{v(&SEQN?<$4HO2 zLVf1PO!3i2UJu2H_cT6w3wld}mHONvR`jb2TOy3!N|X0H7*O4F`k9OExb=balE_Zy@P(9q` zdiACoC^x-*@8V#Y_S|GS&GNl;U30w%gC!G*oCoiR38PGGMJlMq`k?Hd<#Kt6?#J>y zJAmyJbmM)h=Mml{4y~;ayfc1o*)-uMUWs`@OT;DKnzjpJ`FQIy4W#)M$^rb>kX2&O9RcVNB}Y6g)m;K@4`hZCM?1|a z?do=bVg)nl5OEb94g=xUmlWcy;FcN*MG{ySE<)U=YZyelPM7r0K$)Z&)M*hTyh1tI zG9>{jifYxcrAr%*I|d=B;X8yD#8*pfc^V9ly41MfXe` zze7%fzxur4M6D8G9g)~nx_6ojx+X<5%(2#T;YfL_T53nhk~k*dfM!NQT+S!OK9U2K zA`y@n>PC~rq*^Mc6^{e6LW9c_a;cxc`b% zBvz1zQOTAzp^v3nUX=eQfp(ZkZGV_ikQohZQBsnbJ5vVAW%?{DH~vOaN-`>jbvXSH zj=Om%h>c0=#{cnN+&@W8{RXeaTbFCU$Nk6bqOvz$VEz8pNXsF$ zbmdu>qLn_E4Hoh3FlpS~_8qg>>Nq!LHtUH}wK|g-TVb8js*`jGsx%%#LxG<9=~*Ux z0hTwk!H0tfD^9-P2P2O(x`(y@Sg(6quxv!EX> zc{31Ruxx1L6zO!&t1d1+<}&@jX)u?BuNsLU#Rwp1rCi68#fNZ>lcGbE;d&Z^1MH8R znNDi83aq(BdVg#-HN@uVwRRg`5NL1olDTdKaUjg-alhPmV9G(U5Ng+1AC^TYR^rxt zySjsZo$gswR+!d~4zxr*4I@tZz5PR#3K3Z1Ri7cSw|w>6>F~67+(t&SBX#1rwJ0GZ z?pA&4Ck;rq)W_S8$|^v)wUCF5Apgs-*8l;4;(~s$h##*sn*`!V5GGS)Vd|KIKy@WC zWKF{_+J`xznCQWcoLDu&ClHdfZ}T2^ljo=HWzg#*?z5~+jomW>qKWD+U?md!4Hg^> z55^NWzLw0nP40au;J7Ig~Ym8K; zK|lgrs6fOvfJBOv&!OZ6F@HYrtlf!R6|ijUjMT~tUyB>NI=(oPSpD?M}yArM9*A3 zgv1id2mO_LoamUbwtnXy5(1-s_a?>GWxW(Sx%a}~T2+<#_l+L$)OiAVC~IFN0+<&~ zhj0?)w3DA}6c|hY1u0(N!@$iJprLEvbwk5pXGoZMx(e*J>uR$SM~#VvVs=xPO|l*M z3;9rP1zAO<0r>`%(2#*`Rb|7u&8j!q5Lqe-kf|)uz;YNS*XR+CYp{HsP^`|9+v|u? z0lj*&n=-Rmy3xU-YML23D~6=q6x$!e&IW1t8u!o+%Fk^?un)as||0Ca;A^ftv^pmAgAO zibO{O+Q9X~54V8&X(ZWv%A^CAwShrSS^wo4#W^GaWpQe@2aB~puYl-34y2MZu6zc~ zPO(k=*#5BuyL`s$3w&~?SKos)H&L&9EFMe%Cs5tqm!ZnSQUEHDJlqwJ1B=Fnt4ewzJ|z^C2hG*M-rFeYXqB;gQbO!Dl0T%53wQx9^S)(jsnW&H%8pYF-b}H@VeS~8t--G>+-goS76>gdY>Gr-)h>u{w(!oV)Ip84n{>3$V`!8Ujk?v z`3rRZ?UAh8RbZ?X-T94tA~k?VE*cgV@Fxf&O)1{q&_$n|PQU8!M!sNmGDCQ{taO-c zw1kW-D;FL$?DB@hHQucVUU-;OqsHTGW89#1DoH$cjZW|2XK%*twldcx40Re~IS#5-Bk=KAQo;heDxkw@ z^ZdDqNa=b6Gj*r9S08rJ#pLS)7YQpSGytuFMvM|Iw)4-?=oW>{JNV*=guP~B;cfS~ z$@bC(q(PLCKcZ+J1F-_id4OX#R}E$37%BoLbQ(3>Tp#0O+`5Fs2xYsJWNHwn4pzia ze1V^<2o>dqermr=U~U9Mi8Pk@m3xrk*f_^*Z}-Dd0$1YAEr&s??3|ZEoJ*B-C`8oAYkYY1UU|#m?%pvG)c0t+)BHUmT&zVokJX zo4@s~e<5cRQ(6P;feUqH|1Y2^AB{VAPu-r##F`&mfyfY)F>sJr4L@r*6T?E;__wyP zq%zD9mNkFB<9&<>wGFgs=z)IyPxn6}hL>aPI7sq4-hKI!kRLGQ%JY4s+Ju^YTYOg9 zO;nclYBx8S{2QUlUcIFT%=TER5my+Fx48MeY$#PD>S=F2jt{tKdCAz=Zq(;iFGJhx z9$tBqtwFJ5N(gAQWCmi26Pq_b_XWfD40dgbMvt;w&vb8DkZl3H?F8f`E?n!#2Im+B_jmmr!jA5CF+bB3lvdpcS8Q0sHt;Am=ex?Z_is?@P29sA52sEHSV{p;TW;RbPvt0C%s3C8~!br5?qHv zOxGh6SpJ3S0o5o%8omG}-(Qjcr&tk0mfY5pZO9DUpT}Ija3rhaZKid>e0r-}E521L z_u5AhZ=8xsnIU98O(t9x&$n9;+u%^d1l*r|EGX8)FgT8R)F_xH@ee(vq8EZ43J5IS ztdT4-hnxVr(Ip)J%~{3SB*vG`XBXLER(B*dA#VNAM9p_X>NmmZ{uoQ{=k=u0eR=lx zNN@iU9o|Eg-BA<=Ioz4R*LqX~am_g!-~zKGro(OEZCLB5S?AaY5%G-2cu+2~MO*hS znD-^(!whg0Q4xV@|3z2_-upbr4KOr#Fq^a-x!Lr;V($o9@gL@=8K<~}JI@N5oDJYnZ);shr~wNEf1^;;Y|M$gUS9Kx=RxS;#~ zqugUP5Pv~dM8HFDN2mP@x9sOYLi&L{cjY-Z@sz>hwu8DnJ(MOev4q&|FFy7?&md03^;IE51i&aI25q< z(Ehs1Pj0(E!hA=BhIHls9O}$|eZ@S<{-QYDcz(PD^pNjX>~=NTM*G?L?{tG$ktNii z(THgW;RJ~U_7hSUv;;zTEe$40?;rhqoYr+Rqfv#J*|ApsDw8UpHwJ zfCL;U8zYubP2oT>6)Ks|+4k<%@Tb1XqBx+TPD#@p;awpyl=a4?HjY4v)YkWa*R|Zd zBSY~L68TfU$7LSIjrh?K#`Ly0pD=8@!Wee-z4IQ}5{I43cZ|~n2=M4}T3>CLX_No@ z;lLRzFd`ILUuyd^z@NrDsqPla6iuCP_9g%|Y3{ab?ve<-x>#$6@3_MdZo>&cZ4jwz z+lm9-pS=T}Lt^YcqZef^y9ESzTSxir1c9WrswW*zFZio24{rH4gFWByprD}c$E4s!`EWuPqL@U^5^c=J4d<}oe$Uw=|NeAy|G;E6!Rtfi0Ab)P9qYHM6tqXLap`!m2ff%?POGhuksu<3^T2&Ky#o#{{7V zT5k^t^GLZGqyQaeKgGT);~EU1swP@ho{wYeu?KB8j#Gn^r)(OzhzQk_EfUDJ*W=3d zc^Dllv1SEK#*Ss)p|?@sadk^9VK_vH`=8md2GDy_&)~4VmhW?Bt#)$W%JU_`0!fCx zxKVMKKTHZtjh7re*eb+I|HqJ{M zVIxU|M<)y%&&Vdab$2HrJft5Rp9=TvWF15AI$~LjXe%CjL4Y3x(}1o8>~a{_@Rysv zz=M;%`Uu}5kYT-m0j!vZA%u5TAYbHwZyeaS?8Mf0q}6%yUc;910-#_%j-Z$P5sjdw z1z@M4{;(~4FC*6&1D!Eu@*-UB;T5D<2*yyHa*Uge_Oh%|x9B>2OEfvZ=OLWd@cCqX zUwcxu;>}Wa`if9`D1Ozu1laF|&=Elzr6UwEBW^f_5rYvWm_tF^L&Z@i{OzBRr#IkO zgX73mII~h&cih1Ve3%FqGjSp;M}Li8)l}<8Vz>dsXHGm0+p0r87~lsfS^1T^Yt%;8 z{WE-I8W-|GmRF`shwd4dQ4wE7Gx$OV1hT9iPlh^-uYc>0yB(_lcC~unwx!g)Pn2wJ zGPgdhvSJGRo&eLLfUWY_qZ5HIH(c%z4(-=FO?kgNr*&?QH?@ug)MJkp0#M{kl6l)E z*d@7U(Ae^V(WU8--q-dXGg*3wv%YPCx2~rFp6c(EUCznWaf2TG0e|5hVR3 z9^6*sVH%bw4@P?0{%9V}cT*+jBB~v{TP!Av(@EEA#L`;7wUJjV03cc?4Vc?QU>$(2UTc}P2=J^j?b5{~9 zp~UHavUiW5$+P=@jn`$CcUjGn?Bv-N-+QvU@TsS2u;m^=-?97dj@Q^$h8w~mqX{2b zU^XnMZ}EJWI>lUSJvE~P%CtIWFy-WP7%>;gxDftxX5pvwK~X%i6BK&)ctHW@0G;OB zYN=Qc>j6Mme1_~fo85l#@?@6*ztu+M_xxmFt^l_yAhEIY5FR#mnW99d+{47DKa5}W z4D^MSqnCYVzd~l(d%yo(6%9V8PB8z8^41#nR=U6g^E^53SHwRs=Tg1WxxBd;MCm?P z?1Q&O)An4(h89)-ddQVw>6R}c$Oq^AMl5`IC9zUk0BNLf9&ZSEy#6IjB!V_iV0MS~ zz!b~&k)L+L`!HV5O&Pda&$rA8_P(H1iZ`J5wj+Of>v1JT!RSay{Cmi!Vvh%!RnLTb zcVA}jXCcPhhY0x0keX-KEDAnGpiF!yBX_p9bqa#db$+4X%h2q__Q>m@((E?a2>iLD z8>9a`U;=-Bfs$ZN#Ss6b!yhRei&ci|?ZeyL1{>Glpn-xrE(Pkf) zxyz7I4ZE$!9RP+*O}N;v8GXF_RG;tVkEA%b-FM#|0%^oj3lqrsNcdQZG%?YnMT7G` zAEB4G66lr(T-n;HUU&k|3zOyU^%e$&kL-1NE8H zlg1D0gyD2kPN{8fWt#Q!?%iTY;*|L6!Zq)XM-__)~4@oHG`$hOGHLVN8M)}ae+rYuMCdqV5U4=-vZ39`AwOyEyMjAm0f{;b z$Yi!tP}Av)Ff+3$c~2W6wtO@oTyM<4{zABVT3hpiE4V}vz^k!w0?}ck3%e-#agd;rqN0SG?Y0+H}hsPR{*%WEniS zDF$n6!LQTXeDkC^>Dk{#;J&^9oK=ZflU-kqcc?qNyd2463kVdso)s8sr5V-Q$Ov0Z zIf$wm%Puvy6R(Tnn1I{2%_NCq!?K@}eI&tLW+~K)Z6YlmJJVncgwi(@j2=4PTo&mP z33*zQc&=AGw026JkjityVV6njaCpAgu3sUuHnwu7wPh9*Re#9{emapKovtVJ)NY-q zmYYoAfxb5VyPenlE(E{r$b;MRgrZsJK(#-s9!na20XP2_UVZ)Nn&8Py$tz3O?`Jxu zG^8~_W9TWtFG3Jz@2}-V+?w7xL&Z{wMT}gFow|mbt)52OQvuG1&`TE;6F#c%GmhCV zJe%5a#EBV4h!=HT* zPwiG5Lyb)}!P5rG=ZPE$LBJkb{Jen9069Qv%Ns40&*ji^avgUNgTF_ZzeDMZnDRv% z_I54=#r$gyMvU%vco>)nr@!*xpI3R=h_zhKqDI1Wq-1@jvw^>b?AA)b_GlpXJJ(2{ z$TeIFNrDLa2LfKl-E0Cj9p6HLxQ`YcZ|kQ9al(@n-^4_jAmo%xSUWUn4Zy><0cEMzTOWv(E5(K_AevI`u&oGjQHyvbAmG zNe>FnZ#=^y;-czNZ;X3QV}ZwV{qmRZB3&NGxjwreWIQm8VAkk$aLEy-0fzEZ_{?X?)zF{!xHHg=5%YB_P=oUi-s1Xe&O7eN@CQ>Pk)a|U( zQr&QPQL4HdB8MWELKl&zM4QBV)hl)-KE8V@%^v^Y~Fe zPIs}%gcJTnpJru05TRXYv%fI-jhFeh)jM{QpQ5a`kepuq(xwxYMhq**uCn7dmtoPT zu=UeQOANhZ&=-dcPBr;QJiF*g0}xMRW5Uf0lsU}kbxjiLsE_W6)-+< z{*3275tDOWRS+>hudYO)=TJ3l^~w5|c12{XHSYTq{t4EqxB!R?rngiQt&?cScwkizzzgF-5vGTB>7Byh|Bgz9ll+4h>RZS_mD zdRK%Y0$Xs^|2iKZA(6s+GGa*C9KKgt#JM>g63S)ephJ(!yxF^x^iNTO7z_OxrNJGMNy2WDN_AzVcy&A|oeK|kPTz#WnLZVQ#z2+~i z)bPNK^e+;9{NQ`+_DSkewUeIKTo%+feDN1^F)|X=N$OsnkzrqIe?f=gdX)U(rj!dml;J$)uSK0E{<4VDBFtuKk0AwjY{z0E2?oHyN($n0Ss}d!KeSiU^}a#045u)VSW-Yz+VgqBQ6 zcx?&m#JF=YRkBe| z`57#LIKIJORvAdqTtLK za<&bMDiI^Zk_ghuGGA-11T-Oi_GNI}lT<7z3Y$ENL zye)z5$^JY1HBgow8~4Bw1CrI=_n-!B%X;tLxlpZ-Lye-DG*2|g4TT_wPuABEY+cXA3a{&cWs>>zc$SZfS~{VXLCdzErOpV$0e^o!G_`>4Mm>~TVCLG?Z*1a670 zp(3d=13huiSSoyR9kO7uh6ERzIWu`kj#6Ex6Tu} zG2~pO*>dk)tZ|4$IZ~C+wkzS#mWFQgB^~~OVOU6c>g-8brn;|x{J+|kz_cxIEBnK- zkg*i85OF5b4Vg0GSjT>sb0)8>k{-Fz4J{en%D?ndT*s{IvaK1kc$AGw7gW2O;WBR- zaU1Bgkvb}Goh;XnOiXAiS!{j0OG1d41|woI5OT%Omo`%a)*I@TZYz?VXe1nui2%#! zPBL8<-n%u6y=N!XZKWt5y}r!9I)^Fa%ufIEDbztUGos<^e2c+Z$zI6065-QhKV>A` z*yG|C>G^bHJ>}k@adA-){_@h_qUXMDQ@5wJkia6YbF5s4z!q;UOO~gT{_9X$>R-;H za22J!hF(TK;!lxUArqTkE*}bssJ&tQm^QksrI{icBkgXOTyCpg zQ_pI8eFWSs<6$82IYBqz5A9-6Ty2B`0Z-TI7O~aUQJzo)hZ{wMLC*}E65h=V%0%_& zDhpMiyy{A{$luKgJg@zs+oLH#8j%Je30_>VcX2~JZp2dcgKXZVaLe83W?w%2g|>%hF$|C&MU0(y2B2_yusN*J@m#h{LN-%`H@tPX7X7f(8qvjNhU z`zG1trh;8sBK`4clmN&F%p}YrbLWwUQ4AgRMCD{=EAPvqaw-0tZinFl zmFZcn8PRO7eWL5<8sA-l9gXB>jjzR>D<01!XV7*_@a-NYPX7b*D;&DpqcoX7bIqcO z09^E_;&lvYIvMnVa_@N*ANg1aY6C`L2Ts}QH9rb6DMPL90x$s!m$3DHhrl$4Mb~PV z6PcXegXGt*SLnp8xZDRMKx}dI0;6X($#>A*YhP0@48=r<=&7|f!%a7*Igz-hHB}l*PV;^D!+e<0I;n@Hzign%PmJvGd+ojmJ}NCrJo5awT!I8;y0==igVWsaOw<$c2XQkJY$#dBZ9c3k~bMaoE839(-gwM}{GlPbZieMcU zkc%=X=OyM8R`P`P1y#QyQgIH8wJhqWLqjVnS3#kzQ&{;LJiT(IGzhOAd*MYTq~x3n=J#uQdaF4F3eR!+ z10O1(LZ=MD)Swxdz^Sn&JTo=Am-yNb6IG{}BLYqK{flgsC9yMK7P{NGQaQFWo+ZwQ zEQ6T5Y@n-Cy2*S-XFk&`T+^>M>vu{KlBX%oG_$yTWnL~qtH4GuvD0_-wc1>aZrV{! z2WvSbozI#9qa)RL@d9maQqKn&zKKHN+9=jr(EF5?7Mqpsf&0!hFz_aw2ziH)m(ZO6 zVc7S%x%uRhn3^VM=i=%@nnK&&`;M8p6?!6jPIw}Ufd6FAtU)bdJ?Jk`T z^oCsPPy^vjviOx~4F%>2QIj2DQ+a$0^gQ`SPpqNx4}AKxlslx18<-^GmQo=mN3+fa zyyvtsSJB$%7a@@*o?gio47cLW+OF{l_Tt2_QNx2|KJ^3hI-xJ^Vx}LT zh-Niz_!++hW^ChIeVnCt?#8jTUGQqQUYK2bdl0XADZgV@rX1)URXC?R3^XAwB_Lxc zc2ORM;vj2^p~TW5d}+^Ybs7h}{(7DF$1eg8 z0r#AnGW=f_`O-Pj6@u+r@BT4~w=|0x|5VvDxDpL0w>*Vlk%xSKClstMtF6dwt ztc+zSUi7o8tvRReTyO%KyDK3O`<0~0Nw|3bAm4TbkCrfUvQ#I+Xn7fe9 zJ=2!hX{*7C zw&?Qr%l{NQ^=NZbiDpOO?@evrKz?qN+nzuFhUE+u%I;DZ^d;cT4~$022sDZc%60WonSa^`>Sb&VFh#s3N2dfOC}_!PuV=b5G%yPrb$xUr@Bq&wq6{!Kj>cf zwsn}!gD$H`z2ZCRdYH^~rRwEyoclwHsnF?6eAJ0DG7$@a-~Lm0`pbvh6i#0REQSOk z6hJ8{{IA4?Q-|9jpN~0gr8*X-TR%yS5CfwGaWOL~fT|-Ee}RMKXrmelAKc6A$YM)! zffd6p0e5s_kzr|d@e5s1QZ|6WxNw=$KyzS&{zI$D{~A`?(1|mdP80F@bV*|t93Edp zqAn3_Mp0`2`}-)MYsbIZ>^EKc4E=pd|>qpEBh$1 za6says67?Ii~iq7eH;0lS$1#HF7i2glI5e$CpPBCdR!bh(Y4_I}>;pis0%g!-Kiw#%&A>Fb8X|E=K_Hr=zx z$~=>Fw@d0%Y>q3IMwKV~*`zE-+v|k}Iy=t4HvDeMGrDc}SN%8_;)o#f@qf(hJsiC$ z6U|2{3~xs;B?Cb4PF$To3Q9X(-m#@aJDiOY=4$Fb*L}ELp;^>%KIl$wRvxG${;H~V zRNY0pY7P!9ZP(v7o=mb=)^ zK1*ojqG*S*N;&CSEJK=)7)HLLvWIOqI^a<+wJ~~H{i0(gmd#T7T6=vjMc7tfH*<`o z`=oHCL6zlYv^u#6Gx5H&=%GhrWte)yvRwd_QI%Set`@Zk0Tzv9?X74LPC9Q$n6kp0IXGZ$*32~kcZkRm zoNkVr#6-I@Y<~)JE%BEJ`7=(6X_j~s$O$In8yAfEQEdP;Ty$q3=}08zcHdyam3%r6 zT02kxQmHTj%F3YtfbSO`zj!9?R^rBtBjkj$>Cf z@_r{bRcZ-G3rwLL^+}{48V$upNJ)ZP))J_Y{yssy+KRB2AT$)zHCl`Z&7yfKs4_G_ zbQLp{iuT_QA8nP_>@^>(=aE;(iLt9|aWU!eD1?SVURB;h#1YjI>2BzgsNhxsEJYZ4 zKWdC8v?P7Rx>$?m(^j<%viib&Q^LW>MnLs%)@>AN>bPOUQfQ^jo0}fzXA*`II6sep zMmye*$6K$)>dozJuj8WBxW)R&6~ufUC5w=xDkyR=k$0acj%|o+B}OQif{3W*)Gx}9$L}AT!>BLaot(RP zQ`xu=C{iIyG$wriibG`QhqcE7Vj48y%SV=gdTx=tw@k*pVSB`mK)m_705JT}u+(s}QR>y# z?u=-nNz;Zfe^v<`}pUd5u4IyAp0;FtC`}$D8YZR1; zw=6@2d#U3$q?_XO8%9tI;RP!rwUymc{vB(K`ioKwMw2Mxj~5KQW#oz#SlGQsxH*kr z(8FL;p-oJvJ#lqts_AW&`6oR%KX zh+y}wG@_f@+QM3}*oct_LAtegf`?~~RSGU<>M|9|K{nB3N#kJx!Su;!KjEw=8UFg< zB?DjP>|AG8LC7it+b5TS_}o7vX?+$|;^%ua?Sk|oqXT=#@u=firYXhkcLvCWIdS5_ z=tq+XazG>IcQy{(u=Djz-`>fC3h^^oik=Z=0?8NC z$QIyC%WBHOl$q4SP0CbrIz_AXftqP<;IfT@s#Ns^Bq?|BXDo&pL~~Y;|1d6;F6=Bg zG^0*6j*jUhXOY)+#h;s7@d2*O00gj6>L?XwE?lb?y;QxR`sZg1i+UUh9Ja7%F?2Bz z*};qq9?KF&>})ED@Vk1Z`FP|JR;7%EdE}hEQ>u&Pza9l0W*m!rTwlrWZ2IRXPo$gB zO3fe)ti*dn>LoF;g!ZH(!_?wPq!bd_+HU^aQ7SN(L+ZqgzmVMP*3{cbE|ZMC1{eZ; z@O(&7%;X^hX8s)T(Y9K%sd{ zCh+kCX>N}f4{e<~KvO(C{fQh}RStT(^junlSgNc~Dgmx7voM-70a4KVMx+j=vK;T-x4jHzC(tlhrfX>19Oo zZ>8HWyOZSw{)O;vY5ny0aFhJ{dZN;FEPhZ=rq`kSOSnr?1G0)^fI-e{4R7mE5Axjr zK~Q)|Y`X)&)+(=$lbm}Xf^IFrSR%nt$1QLZ?$XGV?YfqE}M? z<$f!p0MOLT4r_PFZPt)1fVyC_tIv3dBcz2zot8XNBFqiks{%$NH#<0o;CJP@yKJ6U z#1e8kL6EJ_NA?N`Ja9GMeE<*#^^`+ zz*(;3KRy{eMEU9=-=Sl_#b&miM*MDIMO{KQp)I;E@qH zyBzmkwPn=2Nxe(D*A4q@|Jv$|l|7d|QCL<{nm%~!_=2fp7H>|F&)Xl7Ew-x2@%IUf z@%Z^O1}q&q@ZN6j0V#!#jM;U(*Oa8pH46qz&g(X@cYe+AzI|#ueabgKasAoNs}!3= z`v^pP&?c3zIK3DqWW0B*%L&0Nb(GXdtwIgA=Ks}dU2%Jbn5Mm2TpLm?ZZQ)~m2qs0 zInk0BC~*V!nusYZ+I43dnngxKs)MMhvjzkJ8Mo1(QvE_2I=h@HKTCt-78;KG2%6}f zkmE|>R2sVDsnURPzMTq` zZHV+yb_;vlLKHonKm`*)Pbz4qC9Iv6@DN)3n~QgbVfjTc4F3;wnEoH=u>3#JVf%le zBkKQ5$N!B4|1PaJkxCksv(D+xAJxT*$;qQ2M=MzmUfsKkoBsf8*A%coYOp`1?XSn64jnSoJ}x1dkYKAzl+9+^Fy z$@ch|D0)t$$)HtJYEWm~*{Jj)Ne)loBo5Y_Lib6fTbfkzJXRe}&gsdum(ya_v_j1a zzjXedSm&TLb?w_T<}7&R%I3y7I!*T?$Lh1w7s~I;A39a5AM3risC-513&m?&Mx>6d zng8L8;XF6{+wNVk^y47QoQbF9HOr3d`52EsHlzOC!)NACd+m@rs)jxO z_9q3+5AK$KdwA0_ZvVxjD<14SRIw+rh4wfF=dzEI^}utLtOu<+wP_*ZjKmU`hDCIH z)`KIG#ML2@rf-CXkiMvpa_gJ39&iVtDb-(i%bl|xiY#(1A-1TWVh{g?&`9s_^b{gW z5jfbh1?E~3aYLZ>2++|kw43{n{Dt1pQ4}Y{Q=Ovh(RQm@9}ZX}Nu(x_YXQ8k--fsO z6NcBBNF*@?FCYcf?RZ7;u6SMPDam)k``~SOkAH+vjdxUbdNL=f+7U}wRAE)YeR6a4Y4f>?#2%hKJL{7um)+dB=13w8PZa4#>-AJr>Ka$71{SSfYL{mS2S+px@)@9Ot@~K=syH4rA+y_S76#=7kkcZxnljMX)855I^Ll)o9}aozHaN}l=L(!aE(?B;U}IJY97`yi zCAYyjE`LBG&{du8~XflunEPhxk6!{H-)hNG1&w@~-)~1}&pqvyO z0>&?)Azxc=`Py*zyG?h$+j952ZFj#r>TY-6@kYN?yy0MZO_64!lwQ+;q65XFOd7$) z$Hh|H%Mql(UIfu0PY>$C2w2TmD<|10A*Ved&6$vC&om`x(sL|QoSryrOSTCSCVC20 zh-K_boPyIFJf(`oS>$A1L-&NSZme;(p%J6x3$ncT!-W?&Oxl(zRQ8j== z>IJXWZ4id_7+exvp0}y=ky-M)zmcDor+;>27nU9!H+nVhJo@?mH`dI%v2M_k{_{V7 z_=z3JKkt0D;-j;9AENl^Fy3L_A;CT>jVhdoJWb+Bl6olhp8}3ou(>MC-&_?Fjd7Q( z3|DGOlEWS!ofDITqi_`6$WPJv_cvLelp?odDb5PTF8u@1s-UCwisdV&+}v7I6;`WQnDtW+J*siN!`?~BX#fI1(-7=iy#tQqq=fii zj^p?bi00p1N%1VdAz)sl2beW5%cf#jq>ivqi+b}|)FF6u${dB@`A~(>5N{b$iD86C zDxMx}DGj9>k7`DWMsq8g*iIBt4#Z07snliY)HSwiC_;bS#>S=Sf)IR-e@D1k(F6|V zKttLP7zW0g;!@p;%dZteF16g{Qo}EYYWn3+Ex#P9?UzH1`lV2R5x{``iKbISCx&ic zhfWIhZaB0PYxpewNmes&qj|aZ>U1&W#KMrGeZXTi>e+#&^dJh!e_&zPK*^Xf_--e+ z()U$e7k9U`y1L9<_(`_b*UO(ZdffRrT=FDO*Zgc&Ynst^kk95A9s=Gc{O6;4*nF7#H#Z4QLBJ$}=H8-kIP`O-mL`E>GYD0HyMqC}rQcD@&{9 znJ|k4Y&d0m(fVsoZ>pcttEtc0Yulc$p6cbMIec4-S1vl%Bwtu?yg7l4E?v~Pi#9`6 zEYDp#@fq42Ido+n`DA>VFS`FzI0IjyO_DAB$Y1&?`Bc`ArL5g4RK`atItbR(`~!(` zY%@@)he{24#{Tjk<{7IxYTD|2*Gq5f;4)&I5D)4ypdQunuDj9JoJDDik7k>R0onrI za{wXJF&)!(w@W*sjqaEHQreEUA@sl-X^F9HGg2Wgt=+>8prjtQx+Cf`?tblUP2i^AT zphx{W=<&Y>I=JI^x$?HcKfgY-VoaR~8rKFVS<8G?rJqibL6)hnQP#)ni0Y)cC?X0b z%wr=>eA8+eB#5XX&}_&2iQ78vEH>J6XOw7Bl)rykv>*#gyi5PI?tj@ot-DMAbc7Wn zh~pC@f-T74U0Sduw11jNH#Jaq&_BIz-2FMU19>@ZpssvnbKmv`Y8CQ*_xY9$fez}K ze{LNTY@kL#-YV-S$XmLH-3)QSQm-b!*gzzk9N?>pjfvX3u-n<|UrQZaZ0Yb~!>@sC z`ZbU(zXr1H*FcW?<&b|N(7;O2LJX3^9bGh`7)wJtBKU=_EYyl%Zb<{Lui6DV74P|u`#y9$V67+k(_AI+FWUv zru71crv{6Rgd7h}QI6&`3DijNIX7I~1d76ex}bcTOEO@!Xy?F}PsB)owXOz- zNX=J=skEFZlA*M%!N!hIM?;YV2>TDEAda*)Huhn77~58z4Zp&YRYx=$xc%T*AsDkb?7!F4QWj#6Vr7VAK|~?-WKghPoGtxS8?n-P>exxCeg$L zDX~}$90aWn$`i?vOUub2dgb2E?o;h~*ppZCT8h^;&c%PxV?+K-N9;X^x_S3@gFCbN zuecLp1M6X+&qu;EEkdeU8UJAat~-bN`a2m|gQx%5Dw4lxhH5qL#LSVSr_Qb#Ii;*P zuSaoF{yn{goi#HWMvt6cUz=alFCSiP-xF8yU-6=F3`NpP8wkNg0xN6;tvMOWYEI}8 z{}EPNXv2<9jl_|(6*rM?TGFjbhjLa4%SF3&m@7;jkdj!ClF==q)Z9>!)@yjzbXUG< zVD!EGH!0D!r2Kx9n>uw%D(KTZ^`_@^pqn4X@qhTP2w&yq|H5Z~6qz`u(f{m^5`0yv z_=WeCn8en=GeZ`0NAcI}tUl!&yU+vV{Ld>fJM&B)w@9SreA=eU{zZ#YxuX&FSZr#P zf0&1Eg>lQXY5Xv7;B0sN74OPE6_)#ky2TegFq>fQD|e+KQLzC>?iNI}Mb(+YDV zzR0wdkvmV1cktS113Exu=V4kE{p4`4lp7$bMDuYgtLqnELnnuC13sgGjGUOH;zu?d$vFGCYO|wZNd@YjS&rg zU58;7iu`#{|8vNMo1S_?&3=UP__15R808JuYPCkKkv$8Ap5@_?93J*86t}}fA5??M zx~16_+45W~zFyg~{9HkjRx?5VhReEeVIb+{dlRRuO*AZ&-vIdKZI=WB_C5uT_Ev$V z(&B)8=Q^SsrW=CB|Hb$DQYaA11_lMY*pJ%U@UElUBKFoEjgt$RqddnYn85 zBcJ~LpkcQVx6AzM7+m}39dmOh2vh#`ZN=Ex761M=zt)3os4b>q{HzLaHWR8U%9LJ! zSIGt8Fgr6dl6J`(==oViYTAqj%xq8&os~qw9%QFc2|V26{~OU0@*`D|wg}*{i8UC| zCj~f+j$FIdfjNhbwhqRy?rD#M!{;l%Aeyhp$nzp!(Q^LlmP%gy3%Nj+mX-Nh$h{}! z2J)$I8>#hW;WcM`&r`XhAxr^Z;P=UxC+9Cyhh<{48|{3-jrZwGIZIF2C&r`hXq>k$ z!36$`-Ap(kn$GYiNlY>twY1ih@((V4I%uo&0%~u9_4h9f7dsRXnM*lPX$HX4QUd+J6zyZWS003g<3%vk%+GAj3VBpC7dk#o4 z{4@M#&K|^&!XV0k3_bt=iOB|R0001Z+HI3TNK{c2hW~r-c~4goBFL;lLR?4-32`BA z2D2e71{V^8v>0S~ErvlP28lt2!G#PVB1D8lM2HL`;>th*5eac2E@Frh7a}5vL`X=; zyZ!e~)*voE{`1ax_q}t^f3H48enO+_J1eWm$Sf+}0JRet^9332DW8YA?t<)x>yl=^f{Z_ftT)2?8kS_@znV+5o3GgL zQdp55Z2Jp1Gdp&|Y+*wJd#+>lvo2zfnv_-ym^S-Ra_U&J{O2SFO`giwyhBFEZL8d} zi;~Bn`sN5v%t|fxt4O%KjB;-UdmvLt>mNv%Uc_{OG1jtX5`i~{3G>FTnb)?%XqS=5&d(8bKdx1)^7bH4#Uux00k^P!%| zhdR6jQdd4)hkfl+%g&2>A}{Eb41~40-+&*d2l<*0_0)X$59gox=fic}85_l2=S4lv z3n|+Jr;(S(Sn}79j{3@}b$P41s44RiXcz~sRKK8C-$`E$oKXwZXRPr)Tw$t+H!P!H zb)p!tY3FqwMTcp$({w zoCW>>)uIZ&0001Z+GAi~(1F4Th6aWQjA@MTm@=4Jm{u`eV&-GEVvb|3VxGpliTMYM z97_z#HkNO!ZmcU`^GN7Zo?kJzKSD`V;aXRP9x4d&Uu{2xJ0<@xFWbZ zxVCX!dgvbn$SE4SWvqX=HiHJFgwTP_|XA{>D z?+`x)gx@4WB-TiBNrp(aNPd$lka{N_C*3B!Li&h|gG`i6pUf>;G1)xX335Dgc5)GN zU2x@x);bWiF2(bLmQ(wn89qQA_5#~{jJg~1QQS4L7sGmNv08;qZsWSLAb z*< - - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generate-plugin_index.js.html b/docs/generate-plugin_index.js.html deleted file mode 100644 index f0931498929..00000000000 --- a/docs/generate-plugin_index.js.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - JSDoc: Source: generate-plugin/index.js - - - - - - - - - - -
- -

Source: generate-plugin/index.js

- - - - - - -
-
-
const yeoman = require("yeoman-environment");
-const PluginGenerator = require("../generators/plugin-generator").PluginGenerator;
-
-/**
- * Runs a yeoman generator to create a new webpack plugin project
- * @returns {void}
- */
-function pluginCreator() {
-	const env = yeoman.createEnv();
-	const generatorName = "webpack-plugin-generator";
-
-	env.registerStub(PluginGenerator, generatorName);
-
-	env.run(generatorName);
-}
-
-module.exports = pluginCreator;
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_add-generator.js.html b/docs/generators_add-generator.js.html deleted file mode 100644 index 8dff982bd73..00000000000 --- a/docs/generators_add-generator.js.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - - JSDoc: Source: generators/add-generator.js - - - - - - - - - - -
- -

Source: generators/add-generator.js

- - - - - - -
-
-
const Generator = require("yeoman-generator");
-const glob = require("glob-all");
-const path = require("path");
-const Confirm = require("webpack-addons").Confirm;
-const List = require("webpack-addons").List;
-const Input = require("webpack-addons").Input;
-
-const webpackSchema = require("webpack/schemas/WebpackOptions");
-const webpackDevServerSchema = require("webpack-dev-server/lib/optionsSchema.json");
-const PROP_TYPES = require("../utils/prop-types");
-
-const getPackageManager = require("../utils/package-manager").getPackageManager;
-const npmExists = require("../utils/npm-exists");
-const entryQuestions = require("./utils/entry");
-
-/**
- *
- * Replaces the string with a substring at the given index
- * https://gist.github.com/efenacigiray/9367920
- *
- * @param {String} string - string to be modified
- * @param {Number} index - index to replace from
- * @param {String} replace - string to replace starting from index
- *
- * @returns {String} string - The newly mutated string
- *
- */
-function replaceAt(string, index, replace) {
-	return string.substring(0, index) + replace + string.substring(index + 1);
-}
-
-/**
- *
- * Checks if the given array has a given property
- *
- * @param {Array} arr - array to check
- * @param {String} prop - property to check existence of
- *
- * @returns {Boolean} hasProp - Boolean indicating if the property
- * is present
- */
-const traverseAndGetProperties = (arr, prop) => {
-	let hasProp = false;
-	arr.forEach(p => {
-		if (p[prop]) {
-			hasProp = true;
-		}
-	});
-	return hasProp;
-};
-
-/**
- *
- * Generator for adding properties
- * @class AddGenerator
- * @extends Generator
- * @returns {Void} After execution, transforms are triggered
- *
- */
-
-module.exports = class AddGenerator extends Generator {
-	constructor(args, opts) {
-		super(args, opts);
-		this.dependencies = [];
-		this.configuration = {
-			config: {
-				webpackOptions: {},
-				topScope: ["const webpack = require('webpack')"]
-			}
-		};
-	}
-
-	prompting() {
-		let done = this.async();
-		let action;
-		let self = this;
-		let manualOrListInput = action =>
-			Input("actionAnswer", `what do you want to add to ${action}?`);
-		// first index indicates if it has a deep prop, 2nd indicates what kind of
-		let isDeepProp = [false, false];
-
-		return this.prompt([
-			List(
-				"actionType",
-				"What property do you want to add to?",
-				Array.from(PROP_TYPES.keys())
-			)
-		])
-			.then(actionTypeAnswer => {
-				// Set initial prop, like devtool
-				this.configuration.config.webpackOptions[
-					actionTypeAnswer.actionType
-				] = null;
-				// update the action variable, we're using it later
-				action = actionTypeAnswer.actionType;
-			})
-			.then(() => {
-				if (action === "entry") {
-					return this.prompt([
-						Confirm("entryType", "Will your application have multiple bundles?")
-					])
-						.then(entryTypeAnswer => {
-							// Ask different questions for entry points
-							return entryQuestions(self, entryTypeAnswer);
-						})
-						.then(entryOptions => {
-							this.configuration.config.webpackOptions[action] = entryOptions;
-							this.configuration.config.item = action;
-						});
-				}
-				let temp = action;
-				if (action === "resolveLoader") {
-					action = "resolve";
-				}
-				const webpackSchemaProp = webpackSchema.definitions[action];
-				/*
-				 * https://github.com/webpack/webpack/blob/next/schemas/WebpackOptions.json
-				 * Find the properties directly in the properties prop, or the anyOf prop
-				 */
-				let defOrPropDescription = webpackSchemaProp
-					? webpackSchemaProp.properties
-					: webpackSchema.properties[action].properties
-						? webpackSchema.properties[action].properties
-						: webpackSchema.properties[action].anyOf
-							? webpackSchema.properties[action].anyOf.filter(
-								p => p.properties || p.enum
-							  ) // eslint-disable-line
-							: null;
-				if (Array.isArray(defOrPropDescription)) {
-					// Todo: Generalize these to go through the array, then merge enum with props if needed
-					const hasPropertiesProp = traverseAndGetProperties(
-						defOrPropDescription,
-						"properties"
-					);
-					const hasEnumProp = traverseAndGetProperties(
-						defOrPropDescription,
-						"enum"
-					);
-					/* as we know he schema only has two arrays that might hold our values,
-					 * check them for either having arr.enum or arr.properties
-					*/
-					if (hasPropertiesProp) {
-						defOrPropDescription =
-							defOrPropDescription[0].properties ||
-							defOrPropDescription[1].properties;
-						if (!defOrPropDescription) {
-							defOrPropDescription = defOrPropDescription[0].enum;
-						}
-						// TODO: manually implement stats and devtools like sourcemaps
-					} else if (hasEnumProp) {
-						const originalPropDesc = defOrPropDescription[0].enum;
-						// Array -> Object -> Merge objects into one for compat in manualOrListInput
-						defOrPropDescription = Object.keys(defOrPropDescription[0].enum)
-							.map(p => {
-								return Object.assign(
-									{},
-									{
-										[originalPropDesc[p]]: "noop"
-									}
-								);
-							})
-							.reduce((result, currentObject) => {
-								for (let key in currentObject) {
-									if (currentObject.hasOwnProperty(key)) {
-										result[key] = currentObject[key];
-									}
-								}
-								return result;
-							}, {});
-					}
-				}
-				// WDS has its own schema, so we gonna need to check that too
-				const webpackDevserverSchemaProp =
-					action === "devServer" ? webpackDevServerSchema : null;
-				// Watch has a boolean arg, but we need to append to it manually
-				if (action === "watch") {
-					defOrPropDescription = {
-						true: {},
-						false: {}
-					};
-				}
-				if (action === "mode") {
-					defOrPropDescription = {
-						development: {},
-						production: {}
-					};
-				}
-				action = temp;
-				if (action === "resolveLoader") {
-					defOrPropDescription = Object.assign(defOrPropDescription, {
-						moduleExtensions: {}
-					});
-				}
-				// If we've got a schema prop or devServer Schema Prop
-				if (defOrPropDescription || webpackDevserverSchemaProp) {
-					// Check for properties in definitions[action] or properties[action]
-					if (defOrPropDescription) {
-						if (action !== "devtool") {
-							// Add the option of adding an own variable if the user wants
-							defOrPropDescription = Object.assign(defOrPropDescription, {
-								other: {}
-							});
-						} else {
-							// The schema doesn't have the source maps we can prompt, so add those
-							defOrPropDescription = Object.assign(defOrPropDescription, {
-								eval: {},
-								"cheap-eval-source-map": {},
-								"cheap-module-eval-source-map": {},
-								"eval-source-map": {},
-								"cheap-source-map": {},
-								"cheap-module-source-map": {},
-								"inline-cheap-source-map": {},
-								"inline-cheap-module-source-map": {},
-								"source-map": {},
-								"inline-source-map": {},
-								"hidden-source-map": {},
-								"nosources-source-map": {}
-							});
-						}
-						manualOrListInput = List(
-							"actionAnswer",
-							`what do you want to add to ${action}?`,
-							Object.keys(defOrPropDescription)
-						);
-						// We know we're gonna append some deep prop like module.rule
-						isDeepProp[0] = true;
-					} else if (webpackDevserverSchemaProp) {
-						// Append the custom property option
-						webpackDevserverSchemaProp.properties = Object.assign(
-							webpackDevserverSchemaProp.properties,
-							{
-								other: {}
-							}
-						);
-						manualOrListInput = List(
-							"actionAnswer",
-							`what do you want to add to ${action}?`,
-							Object.keys(webpackDevserverSchemaProp.properties)
-						);
-						// We know we are in a devServer.prop scenario
-						isDeepProp[0] = true;
-					} else {
-						// manual input if non-existent
-						manualOrListInput = manualOrListInput(action);
-					}
-				} else {
-					manualOrListInput = manualOrListInput(action);
-				}
-				return this.prompt([manualOrListInput]);
-			})
-			.then(answerToAction => {
-				if (!answerToAction) {
-					done();
-					return;
-				}
-				/*
-				 * Plugins got their own logic,
-				 * find the names of each natively plugin and check if it matches
-				*/
-				if (action === "plugins") {
-					const pluginExist = glob
-						.sync([
-							"node_modules/webpack/lib/*Plugin.js",
-							"node_modules/webpack/lib/**/*Plugin.js"
-						])
-						.map(p =>
-							p
-								.split("/")
-								.pop()
-								.replace(".js", "")
-						)
-						.find(
-							p => p.toLowerCase().indexOf(answerToAction.actionAnswer) >= 0
-						);
-					if (pluginExist) {
-						this.configuration.config.item = pluginExist;
-						const pluginsSchemaPath = glob
-							.sync([
-								"node_modules/webpack/schemas/plugins/*Plugin.json",
-								"node_modules/webpack/schemas/plugins/**/*Plugin.json"
-							])
-							.find(
-								p =>
-									p
-										.split("/")
-										.pop()
-										.replace(".json", "")
-										.toLowerCase()
-										.indexOf(answerToAction.actionAnswer) >= 0
-							);
-						if (pluginsSchemaPath) {
-							const constructorPrefix =
-								pluginsSchemaPath.indexOf("optimize") >= 0
-									? "webpack.optimize"
-									: "webpack";
-							const resolvePluginsPath = path.resolve(pluginsSchemaPath);
-							const pluginSchema = resolvePluginsPath
-								? require(resolvePluginsPath)
-								: null;
-							let pluginsSchemaProps = ["other"];
-							if (pluginSchema) {
-								Object.keys(pluginSchema)
-									.filter(p => Array.isArray(pluginSchema[p]))
-									.forEach(p => {
-										Object.keys(pluginSchema[p]).forEach(n => {
-											if (pluginSchema[p][n].properties) {
-												pluginsSchemaProps = Object.keys(
-													pluginSchema[p][n].properties
-												);
-											}
-										});
-									});
-							}
-
-							return this.prompt([
-								List(
-									"pluginsPropType",
-									`What property do you want to add ${pluginExist}?`,
-									pluginsSchemaProps
-								)
-							]).then(pluginsPropAnswer => {
-								return this.prompt([
-									Input(
-										"pluginsPropTypeVal",
-										`What value should ${pluginExist}.${
-											pluginsPropAnswer.pluginsPropType
-										} have?`
-									)
-								]).then(valForProp => {
-									this.configuration.config.webpackOptions[action] = {
-										[`${constructorPrefix}.${pluginExist}`]: {
-											[pluginsPropAnswer.pluginsPropType]:
-												valForProp.pluginsPropTypeVal
-										}
-									};
-									done();
-								});
-							});
-						} else {
-							this.configuration.config.webpackOptions[
-								action
-							] = `new webpack.${pluginExist}`;
-							done();
-						}
-					} else {
-						// If its not in webpack, check npm
-						npmExists(answerToAction.actionAnswer).then(p => {
-							if (p) {
-								this.dependencies.push(answerToAction.actionAnswer);
-								const normalizePluginName = answerToAction.actionAnswer.replace(
-									"-webpack-plugin",
-									"Plugin"
-								);
-								const pluginName = replaceAt(
-									normalizePluginName,
-									0,
-									normalizePluginName.charAt(0).toUpperCase()
-								);
-								this.configuration.config.topScope.push(
-									`const ${pluginName} = require("${
-										answerToAction.actionAnswer
-									}")`
-								);
-								this.configuration.config.webpackOptions[
-									action
-								] = `new ${pluginName}`;
-								this.configuration.config.item = answerToAction.actionAnswer;
-								done();
-								this.runInstall(getPackageManager(), this.dependencies, {
-									"save-dev": true
-								});
-							} else {
-								console.error(
-									answerToAction.actionAnswer,
-									"doesn't exist on NPM or is built in webpack, please check for any misspellings."
-								);
-								process.exit(0);
-							}
-						});
-					}
-				} else {
-					// If we're in the scenario with a deep-property
-					if (isDeepProp[0]) {
-						isDeepProp[1] = answerToAction.actionAnswer;
-						if (
-							isDeepProp[1] !== "other" &&
-							(action === "devtool" || action === "watch" || action === "mode")
-						) {
-							this.configuration.config.item = action;
-							this.configuration.config.webpackOptions[action] =
-								answerToAction.actionAnswer;
-							done();
-							return;
-						}
-						// Either we are adding directly at the property, else we're in a prop.theOne scenario
-						const actionMessage =
-							isDeepProp[1] === "other"
-								? `what do you want the key on ${action} to be? (press enter if you want it directly as a value on the property)`
-								: `what do you want the value of ${isDeepProp[1]} to be?`;
-
-						this.prompt([Input("deepProp", actionMessage)]).then(
-							deepPropAns => {
-								// The other option needs to be validated of either being empty or not
-								if (isDeepProp[1] === "other") {
-									let othersDeepPropKey = deepPropAns.deepProp
-										? `what do you want the value of ${
-											deepPropAns.deepProp
-										  } to be?` // eslint-disable-line
-										: `what do you want to be the value of ${action} to be?`;
-									// Push the answer to the array we have created, so we can use it later
-									isDeepProp.push(deepPropAns.deepProp);
-									this.prompt([Input("deepProp", othersDeepPropKey)]).then(
-										deepPropAns => {
-											// Check length, if it has none, add the prop directly on the given action
-											if (isDeepProp[2].length === 0) {
-												this.configuration.config.item = action;
-												this.configuration.config.webpackOptions[action] =
-													deepPropAns.deepProp;
-											} else {
-												// If not, we're adding to something like devServer.myProp
-												this.configuration.config.item =
-													action + "." + isDeepProp[2];
-												this.configuration.config.webpackOptions[action] = {
-													[isDeepProp[2]]: deepPropAns.deepProp
-												};
-											}
-											done();
-										}
-									);
-								} else {
-									// We got the schema prop, we've correctly prompted it, and can add it directly
-									this.configuration.config.item = action + "." + isDeepProp[1];
-									this.configuration.config.webpackOptions[action] = {
-										[isDeepProp[1]]: deepPropAns.deepProp
-									};
-									done();
-								}
-							}
-						);
-					} else {
-						// We're asking for input-only
-						this.configuration.config.item = action;
-						this.configuration.config.webpackOptions[action] =
-							answerToAction.actionAnswer;
-						done();
-					}
-				}
-			});
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_init-generator.js.html b/docs/generators_init-generator.js.html deleted file mode 100644 index e8130fae45c..00000000000 --- a/docs/generators_init-generator.js.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - - JSDoc: Source: generators/init-generator.js - - - - - - - - - - -
- -

Source: generators/init-generator.js

- - - - - - -
-
-
"use strict";
-
-const Generator = require("yeoman-generator");
-const chalk = require("chalk");
-const logSymbols = require("log-symbols");
-
-const createCommonsChunkPlugin = require("webpack-addons")
-	.createCommonsChunkPlugin;
-
-const Input = require("webpack-addons").Input;
-const Confirm = require("webpack-addons").Confirm;
-const List = require("webpack-addons").List;
-
-const getPackageManager = require("../utils/package-manager").getPackageManager;
-
-const entryQuestions = require("./utils/entry");
-const getBabelPlugin = require("./utils/module");
-const getDefaultPlugins = require("./utils/plugins");
-const tooltip = require("./utils/tooltip");
-
-/**
- *
- * Generator for initializing a webpack config
- *
- * @class InitGenerator
- * @extends Generator
- * @returns {Void} After execution, transforms are triggered
- *
- */
-module.exports = class InitGenerator extends Generator {
-	constructor(args, opts) {
-		super(args, opts);
-		this.isProd = false;
-		this.dependencies = ["webpack", "uglifyjs-webpack-plugin"];
-		this.configuration = {
-			config: {
-				webpackOptions: {},
-				topScope: []
-			}
-		};
-	}
-	prompting() {
-		let done = this.async();
-		let self = this;
-		let oneOrMoreEntries;
-		let regExpForStyles;
-		let ExtractUseProps;
-		let outputPath = "dist";
-		process.stdout.write(
-			"\n" +
-				logSymbols.info +
-				chalk.blue(" INFO ") +
-				"For more information and a detailed description of each question, have a look at " +
-				chalk.bold.green(
-					"https://github.com/webpack/webpack-cli/blob/master/INIT.md"
-				) +
-				"\n"
-		);
-		process.stdout.write(
-			logSymbols.info +
-				chalk.blue(" INFO ") +
-				"Alternatively, run `webpack(-cli) --help` for usage info." +
-				"\n\n"
-		);
-		this.configuration.config.webpackOptions.module = {
-			rules: []
-		};
-		this.configuration.config.webpackOptions.plugins = getDefaultPlugins();
-		this.configuration.config.topScope.push(
-			"const webpack = require('webpack')",
-			"const path = require('path')",
-			tooltip.uglify(),
-			"const UglifyJSPlugin = require('uglifyjs-webpack-plugin');",
-			"\n"
-		);
-
-		this.prompt([
-			Confirm("entryType", "Will your application have multiple bundles?")
-		])
-			.then(entryTypeAnswer => {
-				// Ask different questions for entry points
-				return entryQuestions(self, entryTypeAnswer);
-			})
-			.then(entryOptions => {
-				this.configuration.config.webpackOptions.entry = entryOptions;
-				oneOrMoreEntries = Object.keys(entryOptions);
-
-				return this.prompt([
-					Input(
-						"outputType",
-						"Which folder will your generated bundles be in? [default: dist]:"
-					)
-				]);
-			})
-			.then(outputTypeAnswer => {
-				if (!this.configuration.config.webpackOptions.entry.length) {
-					this.configuration.config.topScope.push(tooltip.commonsChunk());
-					this.configuration.config.webpackOptions.output = {
-						filename: "'[name].[chunkhash].js'",
-						chunkFilename: "'[name].[chunkhash].js'"
-					};
-				} else {
-					this.configuration.config.webpackOptions.output = {
-						filename: "'[name].bundle.js'"
-					};
-				}
-				if (outputTypeAnswer["outputType"].length) {
-					outputPath = outputTypeAnswer["outputType"];
-				}
-				this.configuration.config.webpackOptions.output.path = `path.resolve(__dirname, '${outputPath}')`;
-			})
-			.then(() => {
-				return this.prompt([
-					Confirm("prodConfirm", "Are you going to use this in production?")
-				]);
-			})
-			.then(prodAnswer => {
-				if (prodAnswer["prodConfirm"] === true) {
-					this.isProd = true;
-				} else {
-					this.isProd = false;
-				}
-			})
-			.then(() => {
-				return this.prompt([
-					Confirm("babelConfirm", "Will you be using ES2015?")
-				]);
-			})
-			.then(ans => {
-				if (ans["babelConfirm"] === true) {
-					this.configuration.config.webpackOptions.module.rules.push(
-						getBabelPlugin()
-					);
-					this.dependencies.push(
-						"babel-loader",
-						"babel-core",
-						"babel-preset-env"
-					);
-				}
-			})
-			.then(() => {
-				return this.prompt([
-					List("stylingType", "Will you use one of the below CSS solutions?", [
-						"SASS",
-						"LESS",
-						"CSS",
-						"PostCSS",
-						"No"
-					])
-				]);
-			})
-			.then(stylingAnswer => {
-				if (!this.isProd) {
-					ExtractUseProps = [];
-				}
-				switch (stylingAnswer["stylingType"]) {
-					case "SASS":
-						this.dependencies.push(
-							"sass-loader",
-							"node-sass",
-							"style-loader",
-							"css-loader"
-						);
-						regExpForStyles = new RegExp(/\.(scss|css)$/);
-						if (this.isProd) {
-							ExtractUseProps = `
-								use: [{
-									loader: "css-loader",
-									options: {
-										sourceMap: true
-									}
-								}, {
-									loader: "sass-loader",
-									options: {
-										sourceMap: true
-									}
-								}],
-								fallback: "style-loader"
-							`;
-						} else {
-							ExtractUseProps.push(
-								{
-									loader: "'style-loader'"
-								},
-								{
-									loader: "'css-loader'"
-								},
-								{
-									loader: "'sass-loader'"
-								}
-							);
-						}
-						break;
-					case "LESS":
-						regExpForStyles = new RegExp(/\.(less|css)$/);
-						this.dependencies.push(
-							"less-loader",
-							"less",
-							"style-loader",
-							"css-loader"
-						);
-						if (this.isProd) {
-							ExtractUseProps = `
-								use: [{
-									loader: "css-loader",
-									options: {
-										sourceMap: true
-									}
-								}, {
-									loader: "less-loader",
-									options: {
-										sourceMap: true
-									}
-								}],
-								fallback: "style-loader"
-							`;
-						} else {
-							ExtractUseProps.push(
-								{
-									loader: "'css-loader'",
-									options: {
-										sourceMap: true
-									}
-								},
-								{
-									loader: "'less-loader'",
-									options: {
-										sourceMap: true
-									}
-								}
-							);
-						}
-						break;
-					case "PostCSS":
-						this.configuration.config.topScope.push(
-							tooltip.postcss(),
-							"const autoprefixer = require('autoprefixer');",
-							"const precss = require('precss');",
-							"\n"
-						);
-						this.dependencies.push(
-							"style-loader",
-							"css-loader",
-							"postcss-loader",
-							"precss",
-							"autoprefixer"
-						);
-						regExpForStyles = new RegExp(/\.css$/);
-						if (this.isProd) {
-							ExtractUseProps = `
-								use: [{
-									loader: "style-loader"
-								},{
-									loader: "css-loader",
-									options: {
-										sourceMap: true,
-										importLoaders: 1
-									}
-								}, {
-									loader: "postcss-loader",
-									options: {
-										plugins: function () {
-											return [
-												precss,
-												autoprefixer
-											];
-										}
-									}
-								}],
-								fallback: "style-loader"
-							`;
-						} else {
-							ExtractUseProps.push(
-								{
-									loader: "'style-loader'"
-								},
-								{
-									loader: "'css-loader'",
-									options: {
-										sourceMap: true,
-										importLoaders: 1
-									}
-								},
-								{
-									loader: "'postcss-loader'",
-									options: {
-										plugins: `function () {
-											return [
-												precss,
-												autoprefixer
-											];
-										}`
-									}
-								}
-							);
-						}
-						break;
-					case "CSS":
-						this.dependencies.push("style-loader", "css-loader");
-						regExpForStyles = new RegExp(/\.css$/);
-						if (this.isProd) {
-							ExtractUseProps = `
-								use: [{
-									loader: "css-loader",
-									options: {
-										sourceMap: true
-									}
-								}],
-								fallback: "style-loader"
-							`;
-						} else {
-							ExtractUseProps.push(
-								{
-									loader: "'style-loader'",
-									options: {
-										sourceMap: true
-									}
-								},
-								{
-									loader: "'css-loader'"
-								}
-							);
-						}
-						break;
-					default:
-						regExpForStyles = null;
-				}
-			})
-			.then(() => {
-				// Ask if the user wants to use extractPlugin
-				return this.prompt([
-					Input(
-						"extractPlugin",
-						"If you want to bundle your CSS files, what will you name the bundle? (press enter to skip)"
-					)
-				]);
-			})
-			.then(extractAnswer => {
-				const cssBundleName = extractAnswer.extractPlugin;
-				if (regExpForStyles) {
-					if (this.isProd) {
-						this.configuration.config.topScope.push(tooltip.cssPlugin());
-						// TODO: Replace with regular version once v.4 is out
-						this.dependencies.push("extract-text-webpack-plugin@next");
-
-						if (cssBundleName.length !== 0) {
-							this.configuration.config.webpackOptions.plugins.push(
-								`new ExtractTextPlugin('${cssBundleName}.[contentHash].css')`
-							);
-						} else {
-							this.configuration.config.webpackOptions.plugins.push(
-								"new ExtractTextPlugin('style.css')"
-							);
-						}
-
-						const moduleRulesObj = {
-							test: regExpForStyles,
-							use: `ExtractTextPlugin.extract({ ${ExtractUseProps} })`
-						};
-
-						this.configuration.config.webpackOptions.module.rules.push(
-							moduleRulesObj
-						);
-						this.configuration.config.topScope.push(
-							"const ExtractTextPlugin = require('extract-text-webpack-plugin');",
-							"\n"
-						);
-					} else {
-						const moduleRulesObj = {
-							test: regExpForStyles,
-							use: ExtractUseProps
-						};
-
-						this.configuration.config.webpackOptions.module.rules.push(
-							moduleRulesObj
-						);
-					}
-				}
-			})
-			.then(() => {
-				if (this.configuration.config.webpackOptions.entry.length === 0) {
-					oneOrMoreEntries.forEach(prop => {
-						this.configuration.config.webpackOptions.plugins.push(
-							createCommonsChunkPlugin(prop)
-						);
-					});
-				}
-				done();
-			});
-	}
-	installPlugins() {
-		let asyncNamePrompt = this.async();
-		let defaultName = this.isProd ? "prod" : "config";
-		this.prompt([
-			Input(
-				"nameType",
-				`Name your 'webpack.[name].js?' [default: '${defaultName}']:`
-			)
-		])
-			.then(nameAnswer => {
-				if (nameAnswer["nameType"].length) {
-					this.configuration.config.configName = nameAnswer["nameType"];
-				} else {
-					this.configuration.config.configName = defaultName;
-				}
-			})
-			.then(() => {
-				asyncNamePrompt();
-				this.runInstall(getPackageManager(), this.dependencies, {
-					"save-dev": true
-				});
-			});
-	}
-	writing() {
-		this.config.set("configuration", this.configuration);
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_loader-generator.js.html b/docs/generators_loader-generator.js.html deleted file mode 100644 index 099e5edc2a0..00000000000 --- a/docs/generators_loader-generator.js.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - JSDoc: Source: generators/loader-generator.js - - - - - - - - - - -
- -

Source: generators/loader-generator.js

- - - - - - -
-
-
const path = require("path");
-const _ = require("lodash");
-const webpackGenerator = require("./webpack-generator");
-
-/**
- * Formats a string into webpack loader format
- * (eg: 'style-loader', 'raw-loader')
- *
- * @param {string} name A loader name to be formatted
- * @returns {string} The formatted string
- */
-function makeLoaderName(name) {
-	name = _.kebabCase(name);
-	if (!/loader$/.test(name)) {
-		name += "-loader";
-	}
-	return name;
-}
-
-/**
- * A yeoman generator class for creating a webpack
- * loader project. It adds some starter loader code
- * and runs `webpack-defaults`.
- *
- * @class LoaderGenerator
- * @extends {Generator}
- */
-const LoaderGenerator = webpackGenerator(
-	[
-		{
-			type: "input",
-			name: "name",
-			message: "Loader name",
-			default: "my-loader",
-			filter: makeLoaderName,
-			validate: str => str.length > 0
-		}
-	],
-	path.join(__dirname, "templates"),
-	[
-		"src/cjs.js.tpl",
-		"test/test-utils.js.tpl",
-		"test/unit.test.js.tpl",
-		"test/functional.test.js.tpl",
-		"test/fixtures/simple-file.js.tpl",
-		"examples/simple/webpack.config.js.tpl",
-		"examples/simple/src/index.js.tpl",
-		"examples/simple/src/lazy-module.js.tpl",
-		"examples/simple/src/static-esm-module.js.tpl"
-	],
-	["src/_index.js.tpl"],
-	gen => ({ name: gen.props.name })
-);
-
-module.exports = {
-	makeLoaderName,
-	LoaderGenerator
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_plugin-generator.js.html b/docs/generators_plugin-generator.js.html deleted file mode 100644 index bd1a1850e55..00000000000 --- a/docs/generators_plugin-generator.js.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - JSDoc: Source: generators/plugin-generator.js - - - - - - - - - - -
- -

Source: generators/plugin-generator.js

- - - - - - -
-
-
const path = require("path");
-const _ = require("lodash");
-const webpackGenerator = require("./webpack-generator");
-
-/**
- * A yeoman generator class for creating a webpack
- * plugin project. It adds some starter plugin code
- * and runs `webpack-defaults`.
- *
- * @class PluginGenerator
- * @extends {Generator}
- */
-const PluginGenerator = webpackGenerator(
-	[
-		{
-			type: "input",
-			name: "name",
-			message: "Plugin name",
-			default: "my-webpack-plugin",
-			filter: _.kebabCase,
-			validate: str => str.length > 0
-		}
-	],
-	path.join(__dirname, "templates"),
-	[
-		"src/cjs.js.tpl",
-		"test/test-utils.js.tpl",
-		"test/functional.test.js.tpl",
-		"examples/simple/src/index.js.tpl",
-		"examples/simple/src/lazy-module.js.tpl",
-		"examples/simple/src/static-esm-module.js.tpl"
-	],
-	["src/_index.js.tpl", "examples/simple/_webpack.config.js.tpl"],
-	gen => ({ name: _.upperFirst(_.camelCase(gen.props.name)) })
-);
-
-module.exports = {
-	PluginGenerator
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_utils_entry.js.html b/docs/generators_utils_entry.js.html deleted file mode 100644 index 458948ba468..00000000000 --- a/docs/generators_utils_entry.js.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - JSDoc: Source: generators/utils/entry.js - - - - - - - - - - -
- -

Source: generators/utils/entry.js

- - - - - - -
-
-
"use strict";
-
-const InputValidate = require("webpack-addons").InputValidate;
-const validate = require("./validate");
-
-/**
- *
- * Prompts for entry points, either if it has multiple or one entry
- *
- * @param {Object} self - A variable holding the instance of the prompting
- * @param {Object} answer - Previous answer from asking if the user wants single or multiple entries
- * @returns {Object} An Object that holds the answers given by the user, later used to scaffold
- */
-
-module.exports = (self, answer) => {
-	let entryIdentifiers;
-	let result;
-	if (answer["entryType"] === true) {
-		result = self
-			.prompt([
-				InputValidate(
-					"multipleEntries",
-					"Type the names you want for your modules (entry files), separated by comma [example: 'app,vendor']",
-					validate
-				)
-			])
-			.then(multipleEntriesAnswer => {
-				let webpackEntryPoint = {};
-				entryIdentifiers = multipleEntriesAnswer["multipleEntries"].split(",");
-				function forEachPromise(obj, fn) {
-					return obj.reduce(function(promise, prop) {
-						const trimmedProp = prop.trim();
-						return promise.then(n => {
-							if (n) {
-								Object.keys(n).forEach(val => {
-									if (
-										n[val].charAt(0) !== "(" &&
-										n[val].charAt(0) !== "[" &&
-										n[val].indexOf("function") < 0 &&
-										n[val].indexOf("path") < 0 &&
-										n[val].indexOf("process") < 0
-									) {
-										n[val] = `"${n[val]}.js"`;
-									}
-									webpackEntryPoint[val] = n[val];
-								});
-							} else {
-								n = {};
-							}
-							return fn(trimmedProp);
-						});
-					}, Promise.resolve());
-				}
-				return forEachPromise(entryIdentifiers, entryProp =>
-					self.prompt([
-						InputValidate(
-							`${entryProp}`,
-							`What is the location of "${entryProp}"? [example: "./src/${entryProp}"]`,
-							validate
-						)
-					])
-				).then(propAns => {
-					Object.keys(propAns).forEach(val => {
-						if (
-							propAns[val].charAt(0) !== "(" &&
-							propAns[val].charAt(0) !== "[" &&
-							propAns[val].indexOf("function") < 0 &&
-							propAns[val].indexOf("path") < 0 &&
-							propAns[val].indexOf("process") < 0
-						) {
-							propAns[val] = `"${propAns[val]}.js"`;
-						}
-						webpackEntryPoint[val] = propAns[val];
-					});
-					return webpackEntryPoint;
-				});
-			});
-	} else {
-		result = self
-			.prompt([
-				InputValidate(
-					"singularEntry",
-					"Which module will be the first to enter the application? [example: './src/index']",
-					validate
-				)
-			])
-			.then(singularAnswer => `"${singularAnswer["singularEntry"]}"`);
-	}
-	return result;
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_utils_module.js.html b/docs/generators_utils_module.js.html deleted file mode 100644 index 54989ff74ae..00000000000 --- a/docs/generators_utils_module.js.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - JSDoc: Source: generators/utils/module.js - - - - - - - - - - -
- -

Source: generators/utils/module.js

- - - - - - -
-
-
"use strict";
-
-/**
- *
- * Returns an module.rule object that has the babel loader if invoked
- *
- * @param {Void} _ - void value
- * @returns {Function} A callable function that adds the babel-loader with env preset
- */
-module.exports = _ => {
-	return {
-		test: new RegExp(/\.js$/),
-		exclude: "/node_modules/",
-		loader: "'babel-loader'",
-		options: {
-			presets: ["'env'"]
-		}
-	};
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_utils_plugins.js.html b/docs/generators_utils_plugins.js.html deleted file mode 100644 index efb1a20f5e0..00000000000 --- a/docs/generators_utils_plugins.js.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - JSDoc: Source: generators/utils/plugins.js - - - - - - - - - - -
- -

Source: generators/utils/plugins.js

- - - - - - -
-
-
"use strict";
-
-/**
- *
- * Callable function with the initial plugins
- *
- * @param {Void} _ - void value
- * @returns {Function} An function that returns an array
- * that consists of the uglify plugin
- */
-
-module.exports = _ => {
-	return ["new UglifyJSPlugin()"];
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_utils_tooltip.js.html b/docs/generators_utils_tooltip.js.html deleted file mode 100644 index a4266c0a751..00000000000 --- a/docs/generators_utils_tooltip.js.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - JSDoc: Source: generators/utils/tooltip.js - - - - - - - - - - -
- -

Source: generators/utils/tooltip.js

- - - - - - -
-
-
"use strict";
-/**
- *
- * Tooltip object that consists of tooltips for various of
- * features
- *
- * @returns {Object} An Object that consists of tooltip methods to be invoked
- */
-
-module.exports = {
-	uglify: _ => {
-		return `/*
- * We've enabled UglifyJSPlugin for you! This minifies your app
- * in order to load faster and run less javascript.
- *
- * https://github.com/webpack-contrib/uglifyjs-webpack-plugin
- *
- */`;
-	},
-	commonsChunk: _ => {
-		return `/*
- * We've enabled commonsChunkPlugin for you. This allows your app to
- * load faster and it splits the modules you provided as entries across
- * different bundles!
- *
- * https://webpack.js.org/plugins/commons-chunk-plugin/
- *
- */`;
-	},
-	cssPlugin: _ => {
-		return `/*
- * We've enabled ExtractTextPlugin for you. This allows your app to
- * use css modules that will be moved into a separate CSS file instead of inside
- * one of your module entries!
- *
- * https://github.com/webpack-contrib/extract-text-webpack-plugin
- *
- */`;
-	},
-	postcss: _ => {
-		return `/*
- * We've enabled Postcss, autoprefixer and precss for you. This allows your app
- * to lint  CSS, support variables and mixins, transpile future CSS syntax,
- * inline images, and more!
- *
- * To enable SASS or LESS, add the respective loaders to module.rules
- *
- * https://github.com/postcss/postcss
- *
- * https://github.com/postcss/autoprefixer
- *
- * https://github.com/jonathantneal/precss
- *
- */`;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_utils_validate.js.html b/docs/generators_utils_validate.js.html deleted file mode 100644 index 8efa14b8e10..00000000000 --- a/docs/generators_utils_validate.js.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - JSDoc: Source: generators/utils/validate.js - - - - - - - - - - -
- -

Source: generators/utils/validate.js

- - - - - - -
-
-
"use strict";
-
-/**
- *
- * Validates an input to check if an input is provided
- *
- * @param {String} value - The input string to validate
- * @returns {String | Boolean } Returns truthy if its long enough
- * Or a string if the user hasn't written anything
- */
-module.exports = value => {
-	const pass = value.length;
-	if (pass) {
-		return true;
-	}
-	return "Please specify an answer!";
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/generators_webpack-generator.js.html b/docs/generators_webpack-generator.js.html deleted file mode 100644 index ce675c64161..00000000000 --- a/docs/generators_webpack-generator.js.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - JSDoc: Source: generators/webpack-generator.js - - - - - - - - - - -
- -

Source: generators/webpack-generator.js

- - - - - - -
-
-
const path = require("path");
-const mkdirp = require("mkdirp");
-const Generator = require("yeoman-generator");
-const copyUtils = require("../utils/copy-utils");
-
-/**
- * Creates a Yeoman Generator that generates a project conforming
- * to webpack-defaults.
- *
- * @param {any[]} prompts An array of Yeoman prompt objects
- *
- * @param {string} templateDir Absolute path to template directory
- *
- * @param {string[]} copyFiles An array of file paths (relative to `./templates`)
- * of files to be copied to the generated project. File paths should be of the
- * form `path/to/file.js.tpl`.
- *
- * @param {string[]} copyTemplateFiles An array of file paths (relative to
- * `./templates`) of files to be copied to the generated project. Template
- * file paths should be of the form `path/to/_file.js.tpl`.
- *
- * @param {Function} templateFn A function that is passed a generator instance and
- * returns an object containing data to be supplied to the template files.
- *
- * @returns {Generator} A class extending Generator
- */
-function webpackGenerator(
-	prompts,
-	templateDir,
-	copyFiles,
-	copyTemplateFiles,
-	templateFn
-) {
-	//eslint-disable-next-line
-	return class extends Generator {
-		prompting() {
-			return this.prompt(prompts).then(props => {
-				this.props = props;
-			});
-		}
-
-		default() {
-			const currentDirName = path.basename(this.destinationPath());
-			if (currentDirName !== this.props.name) {
-				this.log(`
-				Your project must be inside a folder named ${this.props.name}
-				I will create this folder for you.
-				`);
-				mkdirp(this.props.name);
-				const pathToProjectDir = this.destinationPath(this.props.name);
-				this.destinationRoot(pathToProjectDir);
-			}
-		}
-
-		writing() {
-			this.copy = copyUtils.generatorCopy(this, templateDir);
-			this.copyTpl = copyUtils.generatorCopyTpl(
-				this,
-				templateDir,
-				templateFn(this)
-			);
-
-			copyFiles.forEach(this.copy);
-			copyTemplateFiles.forEach(this.copyTpl);
-		}
-
-		install() {
-			this.npmInstall(["webpack-defaults", "bluebird"], {
-				"save-dev": true
-			}).then(() => {
-				this.spawnCommand("npm", ["run", "webpack-defaults"]);
-			});
-		}
-	};
-}
-
-module.exports = webpackGenerator;
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/global.html b/docs/global.html deleted file mode 100644 index 3ad1f702791..00000000000 --- a/docs/global.html +++ /dev/null @@ -1,8341 +0,0 @@ - - - - - JSDoc: Global - - - - - - - - - - -
- -

Global

- - - - - - -
- -
- -

- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

checkIfExistsAndAddValue(j, node, key, value) → {Void}

- - - - - - -
- If a prop exists, it overrides it, else it creates a new one -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
node - - -Node - - - - objectexpression to check
key - - -String - - - - Key of the property
value - - -String - - - - computed value of the property
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - - - - - - -

createArrayWithChildren(j, key, subProps, shouldDropKeys) → {Array}

- - - - - - -
- Creates an array and iterates on an object with properties -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
key - - -String - - - - object name
subProps - - -String - - - - computed value of the property
shouldDropKeys - - -Boolean - - - - bool to ask to use obj.keys or not
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- arr - An array with the object properties -
- - - -
-
- Type -
-
- -Array - - -
-
- - - - - - - - - - - - - -

createEmptyArrayProperty(j, key) → {Array}

- - - - - - -
- Creates an empty array -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
key - - -String - - - - array name
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- arr - An empty array -
- - - -
-
- Type -
-
- -Array - - -
-
- - - - - - - - - - - - - -

createExternalRegExp(j, prop) → {Node}

- - - - - - -
- Finds a regexp property with an already parsed AST from the user -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
prop - - -String - - - - property to find the value at
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - A literal node with the found regexp -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

createFunctionWithArguments(j, p, name) → {Node}

- - - - - - -
- Creates a function call with arguments -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
p - - -Node - - - - Node to push against
name - - -String - - - - Name for the given function
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - Returns the node for the created -function -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

createIdentifierOrLiteral(j, val) → {Node}

- - - - - - -
- Creates an appropriate identifier or literal property -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
val - - -String -| - -Boolean -| - -Number - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

createLiteral(j, val) → {Node}

- - - - - - -
- Creates an appropriate literal property -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
val - - -String -| - -Boolean -| - -Number - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

createObjectWithSuppliedProperty(j, key, prop) → {Node}

- - - - - - -
- Creates an object with an supplied property as parameter -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
key - - -String - - - - object name
prop - - -Node - - - - property to be added
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - An property with the supplied property -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

createOrUpdatePluginByName(j, rootNodePath, pluginName, options) → {Void}

- - - - - - -
- Finds or creates a node for a given plugin name string with options object -If plugin declaration already exist, options are merged. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
rootNodePath - - -Node - - - - `plugins: []` NodePath where plugin should be added. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
pluginName - - -String - - - - ex. `webpack.LoaderOptionsPlugin`
options - - -Object - - - - plugin options
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - - - - - - -

createProperty(j, key, value) → {Node}

- - - - - - -
- Creates an Object's property with a given key and value -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
key - - -String -| - -Number - - - - Property key
value - - -String -| - -Number -| - -Boolean - - - - Property value
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

defineTest(dirName, transformName, testFilePrefixopt, transformObject, action) → {Void}

- - - - - - -
- Handles some boilerplate around defining a simple jest/Jasmine test for a -jscodeshift transform. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
dirName - - -String - - - - - - - - - - contains the name of the directory the test is located in. This - should normally be passed via __dirname.
transformName - - -String - - - - - - - - - - contains the filename of the transform being tested, - excluding the .js extension.
testFilePrefix - - -String - - - - - - <optional>
- - - - - -
Optionally contains the name of the file with the test - data. If not specified, it defaults to the same value as `transformName`. - This will be suffixed with ".input.js" for the input file and ".output.js" - for the expected output. For example, if set to "foo", we will read the - "foo.input.js" file, pass this to the transform, and expect its output to - be equal to the contents of "foo.output.js".
transformObject - - -any - - - - - - - - - - Object to be transformed with the transformations
action - - -String - - - - - - - - - - init, update or remove, decides how to format the AST
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Jest makes sure to execute the globally defined functions -
- - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - - - - - - -

findInvocation(j, node, pluginName) → {Boolean}

- - - - - - -
- Check whether `node` is the invocation of the plugin denoted by `pluginName` -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -Object - - - - jscodeshift top-level import
node - - -Node - - - - ast node to check
pluginName - - -String - - - - name of the plugin
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- isPluginInvocation - whether `node` is the invocation of the plugin denoted by `pluginName` -
- - - -
-
- Type -
-
- -Boolean - - -
-
- - - - - - - - - - - - - -

findPluginsByName(j, node, pluginNamesArray) → {Node}

- - - - - - -
- Find paths that match `new name.space.PluginName()` for a -given array of plugin names -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
node - - -Node - - - - Node to start search from
pluginNamesArray - - -Array.<String> - - - - Array of plugin names like `webpack.LoaderOptionsPlugin`
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Node that has the pluginName -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

findRootNodesByName(j, node, propName) → {Node}

- - - - - - -
- Finds the path to the `name: []` node -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
node - - -Node - - - - Node to start search from
propName - - -String - - - - property to search for
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- found node and -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

findVariableToPlugin(j, rootNode, pluginPackageName) → {String}

- - - - - - -
- Finds the variable to which a third party plugin is assigned to -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
rootNode - - -Node - - - - `plugins: []` Root Node. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
pluginPackageName - - -String - - - - ex. `extract-text-plugin`
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- variable name - ex. 'const s = require(s) gives "s"` -
- - - -
-
- Type -
-
- -String - - -
-
- - - - - - - - - - - - - -

generatorCopy(generator, templateDir) → {function}

- - - - - - -
- Takes in a file path in the `./templates` directory. Copies that -file to the destination, with the `.tpl` extension stripped. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
generator - - -Generator - - - - A Yeoman Generator instance
templateDir - - -string - - - - Absolute path to template directory
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- A curried function that takes a file path and copies it -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

generatorCopyTpl(generator, templateDir, templateData) → {function}

- - - - - - -
- Takes in a file path in the `./templates` directory. Copies that -file to the destination, with the `.tpl` extension and `_` prefix -stripped. Passes `this.props` to the template. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
generator - - -Generator - - - - A Yeoman Generator instance
templateDir - - -string - - - - Absolute path to template directory
templateData - - -any - - - - An object containing the data passed to -the template files.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- A curried function that takes a file path and copies it -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

getPackageManager() → {String}

- - - - - - -
- Returns the name of package manager to use, -preferring yarn over npm if available -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - The package manager name -
- - - -
-
- Type -
-
- -String - - -
-
- - - - - - - - - - - - - -

getPathToGlobalPackages() → {String}

- - - - - - -
- Returns the path to globally installed -npm packages, depending on the available -package manager determined by `getPackageManager` -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- path - Path to global node_modules folder -
- - - -
-
- Type -
-
- -String - - -
-
- - - - - - - - - - - - - -

getRequire(j, constName, packagePath) → {Node}

- - - - - - -
- Returns constructed require symbol -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
constName - - -String - - - - Name of require
packagePath - - -String - - - - path of required package
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - the created ast -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

getRootPathModule(dep) → {String}

- - - - - - -
- Find the path of a given module -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
dep - - -Object - - - - dependency to find
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- string with given path -
- - - -
-
- Type -
-
- -String - - -
-
- - - - - - - - - - - - - -

isAssignment(j, p, cb, identifier, property) → {function}

- - - - - - -
- Checks if we are at the correct node and later invokes a callback -for the transforms to either use their own transform function or -use pushCreateProperty if the transform doesn't expect any properties -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
p - - -Node - - - - Node to push against
cb - - -function - - - - callback to be invoked
identifier - - -String - - - - key to use as property
property - - -Object - - - - WebpackOptions that later will be converted via -pushCreateProperty via WebpackOptions[identifier]
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- cb - Returns the callback and pushes a new node -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

isType(path, type) → {Boolean}

- - - - - - -
- Returns true if type is given type -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
path - - -Node - - - - pathNode
type - - -String - - - - node type
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Boolean - - -
-
- - - - - - - - - - - - - -

loaderCreator() → {void}

- - - - - - -
- Runs a yeoman generator to create a new webpack loader project -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -void - - -
-
- - - - - - - - - - - - - -

loopThroughObjects(j, p, obj) → {function|Node}

- - - - - - -
- Loops through an object and adds property to an object with no identifier -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
p - - -Node - - - - node to add value to
obj - - -Object - - - - Object to loop through
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - Either pushes the node, or reruns until -nothing is left -
- - - -
-
- Type -
-
- -function -| - -Node - - -
-
- - - - - - - - - - - - - -

makeLoaderName(name) → {string}

- - - - - - -
- Formats a string into webpack loader format -(eg: 'style-loader', 'raw-loader') -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
name - - -string - - - - A loader name to be formatted
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- The formatted string -
- - - -
-
- Type -
-
- -string - - -
-
- - - - - - - - - - - - - -

mapOptionsToTransform(transformObject, config) → {Object}

- - - - - - -
- Maps back transforms that needs to be run using the configuration -provided. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
transformObject - - -Object - - - - An Object with all transformations
config - - -Object - - - - Configuration to transform
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - An Object with the transformations to be run -
- - - -
-
- Type -
-
- -Object - - -
-
- - - - - - - - - - - - - -

pluginCreator() → {void}

- - - - - - -
- Runs a yeoman generator to create a new webpack plugin project -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -void - - -
-
- - - - - - - - - - - - - -

processPromise(child) → {Promise}

- - - - - - -
- Attaches a promise to the installation of the package -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
child - - -function - - - - The function to attach a promise to
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- promise - Returns a promise to the installation -
- - - -
-
- Type -
-
- -Promise - - -
-
- - - - - - - - - - - - - -

pushCreateProperty(j, p, key, val) → {Node}

- - - - - - -
- Creates a property and pushes the value to a node -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
p - - -Node - - - - Node to push against
key - - -String - - - - key used as identifier
val - - -String - - - - property value
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- - Returns node the pushed property -
- - - -
-
- Type -
-
- -Node - - -
-
- - - - - - - - - - - - - -

pushObjectKeys(j, p, webpackProperties, name) → {Node|function}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
j - - -any - - - - — jscodeshift API
p - - -Node - - - - path to push
webpackProperties - - -Object - - - - The object to loop over
name - - -String - - - - Key that will be the identifier we find and add values to
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Returns a function that will push a node if -subProperty is an array, else it will invoke a function that will push a single node -
- - - -
-
- Type -
-
- -Node -| - -function - - -
-
- - - - - - - - - - - - - -

replaceAt(string, index, replace) → {String}

- - - - - - -
- Replaces the string with a substring at the given index -https://gist.github.com/efenacigiray/9367920 -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
string - - -String - - - - string to be modified
index - - -Number - - - - index to replace from
replace - - -String - - - - string to replace starting from index
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- string - The newly mutated string -
- - - -
-
- Type -
-
- -String - - -
-
- - - - - - - - - - - - - -

resolvePackages(pkg) → {function|Error}

- - - - - - -
- Resolves and installs the packages, later sending them to @creator -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pkg - - -Array.<String> - - - - The dependencies to be installed
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- creator - Builds -a webpack configuration through yeoman or throws an error -
- - - -
-
- Type -
-
- -function -| - -Error - - -
-
- - - - - - - - - - - - - -

runSingleTransform(dirName, transformName, testFilePrefixopt, initOptions, action) → {function}

- - - - - - -
- Utility function to run a jscodeshift script within a unit test. -This makes several assumptions about the environment. - -Notes: -- The test should be located in a subdirectory next to the transform itself. - Commonly tests are located in a directory called __tests__. - -- Test data should be located in a directory called __testfixtures__ - alongside the transform and __tests__ directory. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
dirName - - -String - - - - - - - - - - contains the name of the directory the test is located in. This - should normally be passed via __dirname.
transformName - - -String - - - - - - - - - - contains the filename of the transform being tested, - excluding the .js extension.
testFilePrefix - - -String - - - - - - <optional>
- - - - - -
Optionally contains the name of the file with the test - data. If not specified, it defaults to the same value as `transformName`. - This will be suffixed with ".input.js" for the input file and ".output.js" - for the expected output. For example, if set to "foo", we will read the - "foo.input.js" file, pass this to the transform, and expect its output to - be equal to the contents of "foo.output.js".
initOptions - - -Object -| - -Boolean -| - -String - - - - - - - - - - TBD
action - - -String - - - - - - - - - - init, update or remove, decides how to format the AST
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- Function that fires of the transforms -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

serve(args) → {function}

- - - - - - -
- Prompts for installing the devServer and running it -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
args - - -Object - - - - args processed from the CLI
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- invokes the devServer API -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

spawnChild(pkg) → {function}

- - - - - - -
- Spawns a new process that installs the addon/dependency -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pkg - - -String - - - - The dependency to be installed
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- spawn - Installs the package -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

spawnNPM(pkg, isNew) → {function}

- - - - - - -
- Spawns a new process using npm -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pkg - - -String - - - - The dependency to be installed
isNew - - -Boolean - - - - indicates if it needs to be updated or installed
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- spawn - Installs the package -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

spawnNPMWithArg(cmd) → {Void}

- - - - - - -
- Installs WDS using NPM with --save --dev etc -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
cmd - - -Object - - - - arg to spawn with
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - - - - - - -

spawnYarn(pkg, isNew) → {function}

- - - - - - -
- Spawns a new process using yarn -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
pkg - - -String - - - - The dependency to be installed
isNew - - -Boolean - - - - indicates if it needs to be updated or installed
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- spawn - Installs the package -
- - - -
-
- Type -
-
- -function - - -
-
- - - - - - - - - - - - - -

spawnYarnWithArg(cmd) → {Void}

- - - - - - -
- Installs WDS using Yarn with add etc -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
cmd - - -Object - - - - arg to spawn with
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Void - - -
-
- - - - - - - - - - - - - -

transform(source, transformsopt, optionsopt) → {String}

- - - - - - -
- Transforms a given piece of source code by applying selected transformations to the AST. -By default, transforms a webpack version 1 configuration file into a webpack version 2 -configuration file. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
source - - -String - - - - - - - - - - source file contents
transforms - - -Array.<function()> - - - - - - <optional>
- - - - - -
List of transformation functions, defined in the -order to apply them in. By default, all defined transformations.
options - - -Object - - - - - - <optional>
- - - - - -
recast formatting options
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- source — transformed source code -
- - - -
-
- Type -
-
- -String - - -
-
- - - - - - - - - - - - - -

traverseAndGetProperties(arr, prop) → {Boolean}

- - - - - - -
- Checks if the given array has a given property -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
arr - - -Array - - - - array to check
prop - - -String - - - - property to check existence of
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- hasProp - Boolean indicating if the property -is present -
- - - -
-
- Type -
-
- -Boolean - - -
-
- - - - - - - - - - - - - -

webpackGenerator(prompts, templateDir, copyFiles, copyTemplateFiles, templateFn) → {Generator}

- - - - - - -
- Creates a Yeoman Generator that generates a project conforming -to webpack-defaults. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
prompts - - -Array.<any> - - - - An array of Yeoman prompt objects
templateDir - - -string - - - - Absolute path to template directory
copyFiles - - -Array.<string> - - - - An array of file paths (relative to `./templates`) -of files to be copied to the generated project. File paths should be of the -form `path/to/file.js.tpl`.
copyTemplateFiles - - -Array.<string> - - - - An array of file paths (relative to -`./templates`) of files to be copied to the generated project. Template -file paths should be of the form `path/to/_file.js.tpl`.
templateFn - - -function - - - - A function that is passed a generator instance and -returns an object containing data to be supplied to the template files.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - -
Returns:
- - -
- A class extending Generator -
- - - -
-
- Type -
-
- -Generator - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index d75ab160b3d..00000000000 --- a/docs/index.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - JSDoc: Home - - - - - - - - - - -
- -

Home

- - - - - - - - -

- - - - - - - - - - - - - - - - - - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - \ No newline at end of file diff --git a/docs/index.js.html b/docs/index.js.html deleted file mode 100644 index 9cf7405a255..00000000000 --- a/docs/index.js.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - JSDoc: Source: index.js - - - - - - - - - - -
- -

Source: index.js

- - - - - - -
-
-
"use strict";
-
-const path = require("path");
-
-/**
- *
- * First function to be called after running a flag. This is a check,
- * to match the flag with the respective require.
- *
- * @param {String} command - which feature to use
- * @param {Object} args - arguments from the CLI
- * @returns {Function} invokes the module with the supplied command
- *
- */
-
-module.exports = function initialize(command, args) {
-	const popArgs = args ? args.slice(2).pop() : null;
-	switch (command) {
-		case "init": {
-			const initPkgs = args.slice(2).length === 1 ? [] : [popArgs];
-			//eslint-disable-next-line
-			return require("./commands/init.js")(initPkgs);
-		}
-		case "migrate": {
-			const filePaths = args.slice(2).length === 1 ? [] : [popArgs];
-			if (!filePaths.length) {
-				throw new Error("Please specify a path to your webpack config");
-			}
-			const inputConfigPath = path.resolve(process.cwd(), filePaths[0]);
-			//eslint-disable-next-line
-			return require("./commands/migrate.js")(inputConfigPath, inputConfigPath);
-		}
-		case "add": {
-			//eslint-disable-next-line
-			return require("./commands/add")();
-		}
-		case "remove": {
-			//eslint-disable-next-line
-			return require("./commands/remove")();
-		}
-		case "update": {
-			return require("./commands/update")();
-		}
-		case "serve": {
-			return require("./commands/serve").serve();
-		}
-		case "make": {
-			return require("./commands/make")();
-		}
-		case "generate-loader": {
-			return require("./generate-loader/index.js")();
-		}
-		case "generate-plugin": {
-			return require("./generate-plugin/index.js")();
-		}
-		default: {
-			throw new Error(`Unknown command ${command} found`);
-		}
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_index.js.html b/docs/init_index.js.html deleted file mode 100644 index 2243108555a..00000000000 --- a/docs/init_index.js.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - JSDoc: Source: init/index.js - - - - - - - - - - -
- -

Source: init/index.js

- - - - - - -
-
-
"use strict";
-
-const path = require("path");
-const j = require("jscodeshift");
-const chalk = require("chalk");
-const pEachSeries = require("p-each-series");
-
-const runPrettier = require("../utils/run-prettier");
-
-const entryTransform = require("./transformations/entry/entry");
-const outputTransform = require("./transformations/output/output");
-const contextTransform = require("./transformations/context/context");
-const resolveTransform = require("./transformations/resolve/resolve");
-const devtoolTransform = require("./transformations/devtool/devtool");
-const targetTransform = require("./transformations/target/target");
-const watchTransform = require("./transformations/watch/watch");
-const watchOptionsTransform = require("./transformations/watch/watchOptions");
-const externalsTransform = require("./transformations/externals/externals");
-const nodeTransform = require("./transformations/node/node");
-const performanceTransform = require("./transformations/performance/performance");
-const statsTransform = require("./transformations/stats/stats");
-const amdTransform = require("./transformations/other/amd");
-const bailTransform = require("./transformations/other/bail");
-const cacheTransform = require("./transformations/other/cache");
-const profileTransform = require("./transformations/other/profile");
-const mergeTransform = require("./transformations/other/merge");
-const parallelismTransform = require("./transformations/other/parallelism");
-const recordsInputPathTransform = require("./transformations/other/recordsInputPath");
-const recordsOutputPathTransform = require("./transformations/other/recordsOutputPath");
-const recordsPathTransform = require("./transformations/other/recordsPath");
-const moduleTransform = require("./transformations/module/module");
-const pluginsTransform = require("./transformations/plugins/plugins");
-const topScopeTransform = require("./transformations/top-scope/top-scope");
-const devServerTransform = require("./transformations/devServer/devServer");
-const modeTransform = require("./transformations/mode/mode");
-const resolveLoaderTransform = require("./transformations/resolveLoader/resolveLoader");
-
-const transformsObject = {
-	entryTransform,
-	outputTransform,
-	contextTransform,
-	resolveTransform,
-	devtoolTransform,
-	targetTransform,
-	watchTransform,
-	watchOptionsTransform,
-	externalsTransform,
-	nodeTransform,
-	performanceTransform,
-	statsTransform,
-	amdTransform,
-	bailTransform,
-	cacheTransform,
-	profileTransform,
-	moduleTransform,
-	pluginsTransform,
-	topScopeTransform,
-	mergeTransform,
-	devServerTransform,
-	modeTransform,
-	parallelismTransform,
-	recordsInputPathTransform,
-	recordsOutputPathTransform,
-	recordsPathTransform,
-	resolveLoaderTransform
-};
-
-/**
- *
- * Maps back transforms that needs to be run using the configuration
- * provided.
- *
- * @param {Object} transformObject - An Object with all transformations
- * @param {Object} config - Configuration to transform
- * @returns {Object} - An Object with the transformations to be run
- */
-
-function mapOptionsToTransform(transformObject, config) {
-	return Object.keys(transformObject)
-		.map(transformKey => {
-			const stringVal = transformKey.substr(
-				0,
-				transformKey.indexOf("Transform")
-			);
-			if (Object.keys(config.webpackOptions).length) {
-				if (config.webpackOptions[stringVal]) {
-					return [
-						transformObject[transformKey],
-						config.webpackOptions[stringVal]
-					];
-				} else {
-					return [transformObject[transformKey], config[stringVal]];
-				}
-			} else {
-				return [transformObject[transformKey]];
-			}
-		})
-		.filter(e => e[1]);
-}
-
-/**
- *
- * Runs the transformations from an object we get from yeoman
- *
- * @param {Object} webpackProperties - Configuration to transform
- * @param {String} action - Action to be done on the given ast
- * @returns {Promise} - A promise that writes each transform, runs prettier
- * and writes the file
- */
-
-module.exports = function runTransform(webpackProperties, action) {
-	// webpackOptions.name sent to nameTransform if match
-	const webpackConfig = Object.keys(webpackProperties).filter(p => {
-		return p !== "configFile" && p !== "configPath";
-	});
-	const initActionNotDefined = action && action !== "init" ? true : false;
-
-	webpackConfig.forEach(scaffoldPiece => {
-		const config = webpackProperties[scaffoldPiece];
-		const transformations = mapOptionsToTransform(transformsObject, config);
-		const ast = j(
-			initActionNotDefined
-				? webpackProperties.configFile
-				: "module.exports = {}"
-		);
-		const transformAction = action || null;
-
-		return pEachSeries(transformations, f => {
-			if (!f[1]) {
-				return f[0](j, ast, transformAction);
-			} else {
-				return f[0](j, ast, f[1], transformAction);
-			}
-		})
-			.then(_ => {
-				let configurationName;
-				if (!config.configName) {
-					configurationName = "webpack.config.js";
-				} else {
-					configurationName = "webpack." + config.configName + ".js";
-				}
-
-				const outputPath = initActionNotDefined
-					? webpackProperties.configPath
-					: path.join(process.cwd(), configurationName);
-				const source = ast.toSource({
-					quote: "single"
-				});
-
-				runPrettier(outputPath, source);
-			})
-			.catch(err => {
-				console.error(err.message ? err.message : err);
-			});
-	});
-	if (initActionNotDefined && webpackProperties.config.item) {
-		process.stdout.write(
-			"\n" +
-				chalk.green(
-					`Congratulations! ${
-						webpackProperties.config.item
-					} has been ${action}ed!\n`
-				)
-		);
-	} else {
-		process.stdout.write(
-			"\n" +
-				chalk.green(
-					"Congratulations! Your new webpack configuration file has been created!\n"
-				)
-		);
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_context_context.js.html b/docs/init_transformations_context_context.js.html deleted file mode 100644 index 99ad4711a39..00000000000 --- a/docs/init_transformations_context_context.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - JSDoc: Source: init/transformations/context/context.js - - - - - - - - - - -
- -

Source: init/transformations/context/context.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for context. Finds the context property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function contextTransform(j, ast, webpackProperties, action) {
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"context",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const contextNode = utils.findRootNodesByName(j, ast, "context");
-			if (contextNode.size() !== 0) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"context",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return contextTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_devServer_devServer.js.html b/docs/init_transformations_devServer_devServer.js.html deleted file mode 100644 index b1cc40cd6c2..00000000000 --- a/docs/init_transformations_devServer_devServer.js.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - JSDoc: Source: init/transformations/devServer/devServer.js - - - - - - - - - - -
- -

Source: init/transformations/devServer/devServer.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for devServer. Finds the devServer property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function devServerTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createDevServerProperty(p) {
-		utils.pushCreateProperty(j, p, "devServer", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "devServer");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createDevServerProperty));
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"devServer",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const devServerNode = utils.findRootNodesByName(j, ast, "devServer");
-			if (devServerNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"devServer"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (devServerNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"devServer"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return devServerTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_devtool_devtool.js.html b/docs/init_transformations_devtool_devtool.js.html deleted file mode 100644 index 96d5066bad2..00000000000 --- a/docs/init_transformations_devtool_devtool.js.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - JSDoc: Source: init/transformations/devtool/devtool.js - - - - - - - - - - -
- -

Source: init/transformations/devtool/devtool.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for devtool. Finds the devtool property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function devToolTransform(j, ast, webpackProperties, action) {
-	if (webpackProperties || typeof webpackProperties === "boolean") {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"devtool",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const devToolNode = utils.findRootNodesByName(j, ast, "devtool");
-			if (devToolNode.size() !== 0) {
-				return devToolNode.forEach(p => {
-					j(p).replaceWith(
-						j.property(
-							"init",
-							j.identifier("devtool"),
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-				});
-			} else {
-				return devToolTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_entry_entry.js.html b/docs/init_transformations_entry_entry.js.html deleted file mode 100644 index 0bd9df9631e..00000000000 --- a/docs/init_transformations_entry_entry.js.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - JSDoc: Source: init/transformations/entry/entry.js - - - - - - - - - - -
- -

Source: init/transformations/entry/entry.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for entry. Finds the entry property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function entryTransform(j, ast, webpackProperties, action) {
-	function createEntryProperty(p) {
-		if (typeof webpackProperties === "string") {
-			return utils.pushCreateProperty(j, p, "entry", webpackProperties);
-		}
-		if (Array.isArray(webpackProperties)) {
-			const externalArray = utils.createArrayWithChildren(
-				j,
-				"entry",
-				webpackProperties,
-				true
-			);
-			return p.value.properties.push(externalArray);
-		} else {
-			utils.pushCreateProperty(j, p, "entry", j.objectExpression([]));
-			return utils.pushObjectKeys(j, p, webpackProperties, "entry");
-		}
-	}
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createEntryProperty));
-		} else if (action === "add") {
-			const entryNode = utils.findRootNodesByName(j, ast, "entry");
-			if (entryNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"entry"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (entryNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"entry"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return entryTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_externals_externals.js.html b/docs/init_transformations_externals_externals.js.html deleted file mode 100644 index b2354ff9f9b..00000000000 --- a/docs/init_transformations_externals_externals.js.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - JSDoc: Source: init/transformations/externals/externals.js - - - - - - - - - - -
- -

Source: init/transformations/externals/externals.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for externals. Finds the externals property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function externalsTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createExternalProperty(p) {
-		if (
-			webpackProperties instanceof RegExp ||
-			typeof webpackProperties === "string"
-		) {
-			return utils.pushCreateProperty(j, p, "externals", webpackProperties);
-		}
-		if (Array.isArray(webpackProperties)) {
-			const externalArray = utils.createArrayWithChildren(
-				j,
-				"externals",
-				webpackProperties,
-				true
-			);
-			return p.value.properties.push(externalArray);
-		} else {
-			utils.pushCreateProperty(j, p, "externals", j.objectExpression([]));
-			return utils.pushObjectKeys(j, p, webpackProperties, "externals");
-		}
-	}
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(
-					p =>
-						utils.safeTraverse(p, [
-							"parent",
-							"value",
-							"left",
-							"property",
-							"name"
-						]) === "exports"
-				)
-				.forEach(createExternalProperty);
-		} else if (action === "add") {
-			const externalNode = utils.findRootNodesByName(j, ast, "externals");
-			if (externalNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"externals"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							// need to check for every prop beneath, use the recursion util
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				externalNode.size() !== 0 &&
-				Array.isArray(webpackProperties)
-			) {
-				// Todo
-			} else if (externalNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"externals"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return externalsTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_index.js.html b/docs/init_transformations_index.js.html deleted file mode 100644 index 72a61810255..00000000000 --- a/docs/init_transformations_index.js.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - JSDoc: Source: init/transformations/index.js - - - - - - - - - - -
- -

Source: init/transformations/index.js

- - - - - - -
-
-
"use strict";
-
-const path = require("path");
-const j = require("jscodeshift");
-const chalk = require("chalk");
-const pEachSeries = require("p-each-series");
-
-const runPrettier = require("../../utils/run-prettier");
-
-const entryTransform = require("./entry/entry");
-const outputTransform = require("./output/output");
-const contextTransform = require("./context/context");
-const resolveTransform = require("./resolve/resolve");
-const devtoolTransform = require("./devtool/devtool");
-const targetTransform = require("./target/target");
-const watchTransform = require("./watch/watch");
-const watchOptionsTransform = require("./watch/watchOptions");
-const externalsTransform = require("./externals/externals");
-const nodeTransform = require("./node/node");
-const performanceTransform = require("./performance/performance");
-const statsTransform = require("./stats/stats");
-const amdTransform = require("./other/amd");
-const bailTransform = require("./other/bail");
-const cacheTransform = require("./other/cache");
-const profileTransform = require("./other/profile");
-const mergeTransform = require("./other/merge");
-const parallelismTransform = require("./other/parallelism");
-const recordsInputPathTransform = require("./other/recordsInputPath");
-const recordsOutputPathTransform = require("./other/recordsOutputPath");
-const recordsPathTransform = require("./other/recordsPath");
-const moduleTransform = require("./module/module");
-const pluginsTransform = require("./plugins/plugins");
-const topScopeTransform = require("./top-scope/top-scope");
-const devServerTransform = require("./devServer/devServer");
-const modeTransform = require("./mode/mode");
-const resolveLoaderTransform = require("./resolveLoader/resolveLoader");
-
-/**
- *
- * Runs the transformations from an object we get from yeoman
- *
- * @param {Object} webpackProperties - Configuration to transform
- * @param {String} action - Action to be done on the given ast
- * @returns {Promise} - A promise that writes each transform, runs prettier
- * and writes the file
- */
-
-const transformsObject = {
-	entryTransform,
-	outputTransform,
-	contextTransform,
-	resolveTransform,
-	devtoolTransform,
-	targetTransform,
-	watchTransform,
-	watchOptionsTransform,
-	externalsTransform,
-	nodeTransform,
-	performanceTransform,
-	statsTransform,
-	amdTransform,
-	bailTransform,
-	cacheTransform,
-	profileTransform,
-	moduleTransform,
-	pluginsTransform,
-	topScopeTransform,
-	mergeTransform,
-	devServerTransform,
-	modeTransform,
-	parallelismTransform,
-	recordsInputPathTransform,
-	recordsOutputPathTransform,
-	recordsPathTransform,
-	resolveLoaderTransform
-};
-
-module.exports = function runTransform(webpackProperties, action) {
-	// webpackOptions.name sent to nameTransform if match
-	const webpackConfig = action
-		? { config: webpackProperties.config }
-		: webpackProperties;
-	Object.keys(webpackConfig).forEach(scaffoldPiece => {
-		const config = webpackConfig[scaffoldPiece];
-		const transformations = Object.keys(transformsObject)
-			.map(k => {
-				const stringVal = k.substr(0, k.indexOf("Transform"));
-				if (config.webpackOptions) {
-					if (config.webpackOptions[stringVal]) {
-						return [transformsObject[k], config.webpackOptions[stringVal]];
-					} else {
-						return [transformsObject[k], config[stringVal]];
-					}
-				} else {
-					return [transformsObject[k]];
-				}
-			})
-			.filter(e => e[1]);
-
-		const ast = j(
-			action && action !== "init"
-				? webpackProperties.configFile
-				: "module.exports = {}"
-		);
-		const transformAction = action || null;
-
-		return pEachSeries(transformations, f => {
-			if (!f[1]) {
-				return f[0](j, ast, transformAction);
-			} else {
-				return f[0](j, ast, f[1], transformAction);
-			}
-		})
-			.then(_ => {
-				let configurationName;
-				if (!config.configName && action !== "init") {
-					configurationName = "webpack.config.js";
-				} else {
-					configurationName = "webpack." + config.configName + ".js";
-				}
-
-				const outputPath =
-					action && action !== "init"
-						? webpackProperties.configPath
-						: path.join(process.cwd(), configurationName);
-				const source = ast.toSource({
-					quote: "single"
-				});
-
-				runPrettier(outputPath, source);
-			})
-			.catch(err => {
-				console.error(err.message ? err.message : err);
-			});
-	});
-	if (action && webpackProperties.config.item) {
-		process.stdout.write(
-			"\n" +
-				chalk.green(
-					`Congratulations! ${
-						webpackProperties.config.item
-					} has been ${action}ed!\n`
-				)
-		);
-	} else {
-		process.stdout.write(
-			"\n" +
-				chalk.green(
-					"Congratulations! Your new webpack configuration file has been created!\n"
-				)
-		);
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sun Feb 25 2018 15:08:40 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_mode_mode.js.html b/docs/init_transformations_mode_mode.js.html deleted file mode 100644 index bd479212bb3..00000000000 --- a/docs/init_transformations_mode_mode.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - JSDoc: Source: init/transformations/mode/mode.js - - - - - - - - - - -
- -

Source: init/transformations/mode/mode.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for mode. Finds the mode property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function modeTransform(j, ast, webpackProperties, action) {
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"mode",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const modeNode = utils.findRootNodesByName(j, ast, "mode");
-			if (modeNode.size() !== 0) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"mode",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return modeTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_module_module.js.html b/docs/init_transformations_module_module.js.html deleted file mode 100644 index ae68114b3df..00000000000 --- a/docs/init_transformations_module_module.js.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - JSDoc: Source: init/transformations/module/module.js - - - - - - - - - - -
- -

Source: init/transformations/module/module.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for module. Finds the module property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function moduleTransform(j, ast, webpackProperties, action) {
-	function createModuleProperty(p) {
-		if (typeof webpackProperties === "string") {
-			return utils.pushCreateProperty(j, p, "module", webpackProperties);
-		}
-		if (Array.isArray(webpackProperties)) {
-			const externalArray = utils.createArrayWithChildren(
-				j,
-				"module",
-				webpackProperties,
-				true
-			);
-			return p.value.properties.push(externalArray);
-		} else {
-			utils.pushCreateProperty(j, p, "module", j.objectExpression([]));
-			return utils.pushObjectKeys(j, p, webpackProperties, "module");
-		}
-	}
-	function editModuleProperty(p) {
-		return utils.pushObjectKeys(j, p, webpackProperties, "module", true);
-	}
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createModuleProperty));
-		} else if (action === "add") {
-			const moduleNode = utils.findRootNodesByName(j, ast, "module");
-			if (moduleNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p => utils.isAssignment(null, p, editModuleProperty));
-			} else if (moduleNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"module"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return moduleTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_node_node.js.html b/docs/init_transformations_node_node.js.html deleted file mode 100644 index 99d0f0f745c..00000000000 --- a/docs/init_transformations_node_node.js.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - JSDoc: Source: init/transformations/node/node.js - - - - - - - - - - -
- -

Source: init/transformations/node/node.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for node. Finds the node property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function nodeTransform(j, ast, webpackProperties, action) {
-	function createNodeProperty(p) {
-		utils.pushCreateProperty(j, p, "node", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "node");
-	}
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createNodeProperty));
-		} else if (action === "add") {
-			const nodeNode = utils.findRootNodesByName(j, ast, "node");
-			if (nodeNode.size() !== 0) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p => utils.pushObjectKeys(j, p, webpackProperties, "node"));
-			} else {
-				return nodeTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_amd.js.html b/docs/init_transformations_other_amd.js.html deleted file mode 100644 index ad838fde118..00000000000 --- a/docs/init_transformations_other_amd.js.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/amd.js - - - - - - - - - - -
- -

Source: init/transformations/other/amd.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for amd. Finds the amd property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function amdTransform(j, ast, webpackProperties, action) {
-	function createAmdProperty(p) {
-		utils.pushCreateProperty(j, p, "amd", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "amd");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createAmdProperty));
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"amd",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const amdNode = utils.findRootNodesByName(j, ast, "amd");
-			if (amdNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"amd"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (amdNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"amd"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return amdTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_bail.js.html b/docs/init_transformations_other_bail.js.html deleted file mode 100644 index afc4a95078b..00000000000 --- a/docs/init_transformations_other_bail.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/bail.js - - - - - - - - - - -
- -

Source: init/transformations/other/bail.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for bail. Finds the bail property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function bailTransform(j, ast, webpackProperties, action) {
-	if (webpackProperties || typeof webpackProperties === "boolean") {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"bail",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const bailNode = utils.findRootNodesByName(j, ast, "bail");
-			if (bailNode.size() !== 0) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"bail",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return bailTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_cache.js.html b/docs/init_transformations_other_cache.js.html deleted file mode 100644 index 15a782aa572..00000000000 --- a/docs/init_transformations_other_cache.js.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/cache.js - - - - - - - - - - -
- -

Source: init/transformations/other/cache.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for cache. Finds the cache property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function cacheTransform(j, ast, webpackProperties, action) {
-	function createCacheProperty(p) {
-		utils.pushCreateProperty(j, p, "cache", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "cache");
-	}
-	if (webpackProperties || typeof webpackProperties === "boolean") {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createCacheProperty));
-		} else if (
-			action === "init" &&
-			(webpackProperties.length || typeof webpackProperties === "boolean")
-		) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"cache",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const cacheNode = utils.findRootNodesByName(j, ast, "cache");
-			if (cacheNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"cache"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				cacheNode.size() !== 0 &&
-				(typeof webpackProperties === "boolean" || webpackProperties.length > 0)
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"cache",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return cacheTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_merge.js.html b/docs/init_transformations_other_merge.js.html deleted file mode 100644 index d5a2409c3b4..00000000000 --- a/docs/init_transformations_other_merge.js.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/merge.js - - - - - - - - - - -
- -

Source: init/transformations/other/merge.js

- - - - - - -
-
-
"use strict";
-
-/**
- *
- * Transform for merge. Finds the merge property from yeoman and creates a way
- * for users to allow webpack-merge in their scaffold
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function(j, ast, webpackProperties, action) {
-	function createMergeProperty(p) {
-		// FIXME Use j.callExp()
-		let exportsDecl = p.value.body.map(n => {
-			if (n.expression) {
-				return n.expression.right;
-			}
-		});
-		const bodyLength = exportsDecl.length;
-		let newVal = {};
-		newVal.type = "ExpressionStatement";
-		newVal.expression = {
-			type: "AssignmentExpression",
-			operator: "=",
-			left: {
-				type: "MemberExpression",
-				computed: false,
-				object: j.identifier("module"),
-				property: j.identifier("exports")
-			},
-			right: j.callExpression(j.identifier("merge"), [
-				j.identifier(webpackProperties),
-				exportsDecl.pop()
-			])
-		};
-		p.value.body[bodyLength - 1] = newVal;
-	}
-	if (webpackProperties) {
-		return ast.find(j.Program).filter(p => createMergeProperty(p));
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_parallelism.js.html b/docs/init_transformations_other_parallelism.js.html deleted file mode 100644 index c9d53448c26..00000000000 --- a/docs/init_transformations_other_parallelism.js.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/parallelism.js - - - - - - - - - - -
- -

Source: init/transformations/other/parallelism.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for parallelism. Finds the parallelism property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function parallelismTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"parallelism",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const parallelismNode = utils.findRootNodesByName(j, ast, "parallelism");
-			if (parallelismNode.size() !== 0) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"parallelism",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return parallelismTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_profile.js.html b/docs/init_transformations_other_profile.js.html deleted file mode 100644 index b1fb30fdb65..00000000000 --- a/docs/init_transformations_other_profile.js.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/profile.js - - - - - - - - - - -
- -

Source: init/transformations/other/profile.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for profile. Finds the profile property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function profileTransform(j, ast, webpackProperties, action) {
-	function createProfileProperty(p) {
-		utils.pushCreateProperty(j, p, "profile", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "profile");
-	}
-	if (webpackProperties || typeof webpackProperties === "boolean") {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createProfileProperty));
-		} else if (
-			action === "init" &&
-			(webpackProperties.length || typeof webpackProperties === "boolean")
-		) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"profile",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const profileNode = utils.findRootNodesByName(j, ast, "profile");
-			if (profileNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"profile"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				profileNode.size() !== 0 &&
-				(typeof webpackProperties === "boolean" || webpackProperties.length > 0)
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"profile",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return profileTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_recordsInputPath.js.html b/docs/init_transformations_other_recordsInputPath.js.html deleted file mode 100644 index d11fada1125..00000000000 --- a/docs/init_transformations_other_recordsInputPath.js.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/recordsInputPath.js - - - - - - - - - - -
- -

Source: init/transformations/other/recordsInputPath.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for recordsInputPath. Finds the recordsInputPath property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function recordsInputPathTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createRecordsInputPathProperty(p) {
-		utils.pushCreateProperty(j, p, "recordsInputPath", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "recordsInputPath");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(null, p, createRecordsInputPathProperty)
-				);
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"recordsInputPath",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const recordsInputPathNode = utils.findRootNodesByName(
-				j,
-				ast,
-				"recordsInputPath"
-			);
-			if (
-				recordsInputPathNode.size() !== 0 &&
-				typeof webpackProperties === "object"
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"recordsInputPath"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				recordsInputPathNode.size() !== 0 &&
-				webpackProperties.length > 0
-			) {
-				return utils
-					.findRootNodesByName(j, ast, "recordsInputPath")
-					.forEach(p => {
-						j(p).replaceWith(
-							j.property(
-								"init",
-								utils.createIdentifierOrLiteral(j, "recordsInputPath"),
-								utils.createIdentifierOrLiteral(j, webpackProperties)
-							)
-						);
-					});
-			} else {
-				return recordsInputPathTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_recordsOutputPath.js.html b/docs/init_transformations_other_recordsOutputPath.js.html deleted file mode 100644 index 9f0a69c0d78..00000000000 --- a/docs/init_transformations_other_recordsOutputPath.js.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/recordsOutputPath.js - - - - - - - - - - -
- -

Source: init/transformations/other/recordsOutputPath.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for recordsOutputPath. Finds the recordsOutputPath property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function recordsOutputPathTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createRecordsOutputPathProperty(p) {
-		utils.pushCreateProperty(j, p, "recordsOutputPath", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "recordsOutputPath");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(null, p, createRecordsOutputPathProperty)
-				);
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"recordsOutputPath",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const recordsOutputPathNode = utils.findRootNodesByName(
-				j,
-				ast,
-				"recordsOutputPath"
-			);
-			if (
-				recordsOutputPathNode.size() !== 0 &&
-				typeof webpackProperties === "object"
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"recordsOutputPath"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				recordsOutputPathNode.size() !== 0 &&
-				webpackProperties.length > 0
-			) {
-				return utils
-					.findRootNodesByName(j, ast, "recordsOutputPath")
-					.forEach(p => {
-						j(p).replaceWith(
-							j.property(
-								"init",
-								utils.createIdentifierOrLiteral(j, "recordsOutputPath"),
-								utils.createIdentifierOrLiteral(j, webpackProperties)
-							)
-						);
-					});
-			} else {
-				return recordsOutputPathTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_other_recordsPath.js.html b/docs/init_transformations_other_recordsPath.js.html deleted file mode 100644 index d2d0d9fb980..00000000000 --- a/docs/init_transformations_other_recordsPath.js.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - JSDoc: Source: init/transformations/other/recordsPath.js - - - - - - - - - - -
- -

Source: init/transformations/other/recordsPath.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for recordsPath. Finds the recordsPath property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function recordsPathTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createRecordsPathProperty(p) {
-		utils.pushCreateProperty(j, p, "recordsPath", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "recordsPath");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createRecordsPathProperty));
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"recordsPath",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const recordsPathNode = utils.findRootNodesByName(j, ast, "recordsPath");
-			if (
-				recordsPathNode.size() !== 0 &&
-				typeof webpackProperties === "object"
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"recordsPath"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (recordsPathNode.size() !== 0 && webpackProperties.length > 0) {
-				return recordsPathNode.forEach(p => {
-					j(p).replaceWith(
-						j.property(
-							"init",
-							utils.createIdentifierOrLiteral(j, "recordsPath"),
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-				});
-			} else {
-				return recordsPathTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_output_output.js.html b/docs/init_transformations_output_output.js.html deleted file mode 100644 index b0979b48db3..00000000000 --- a/docs/init_transformations_output_output.js.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - JSDoc: Source: init/transformations/output/output.js - - - - - - - - - - -
- -

Source: init/transformations/output/output.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for output. Finds the output property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function outputTransform(j, ast, webpackProperties, action) {
-	function createOutputProperty(p) {
-		utils.pushCreateProperty(j, p, "output", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "output");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createOutputProperty));
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"output",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const outputNode = utils.findRootNodesByName(j, ast, "output");
-			if (outputNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"output"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (outputNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"output"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return outputTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_performance_performance.js.html b/docs/init_transformations_performance_performance.js.html deleted file mode 100644 index b6a8e2ceb57..00000000000 --- a/docs/init_transformations_performance_performance.js.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - JSDoc: Source: init/transformations/performance/performance.js - - - - - - - - - - -
- -

Source: init/transformations/performance/performance.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for performance. Finds the performance property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function performanceTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createPerformanceProperty(p) {
-		utils.pushCreateProperty(j, p, "performance", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "performance");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createPerformanceProperty));
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"performance",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const performanceNode = utils.findRootNodesByName(j, ast, "performance");
-			if (
-				performanceNode.size() !== 0 &&
-				typeof webpackProperties === "object"
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"performance"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (performanceNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"performance"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return performanceTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_plugins_plugins.js.html b/docs/init_transformations_plugins_plugins.js.html deleted file mode 100644 index 97dd8dd1b80..00000000000 --- a/docs/init_transformations_plugins_plugins.js.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - JSDoc: Source: init/transformations/plugins/plugins.js - - - - - - - - - - -
- -

Source: init/transformations/plugins/plugins.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for plugins. Finds the plugins property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function pluginsTransform(j, ast, webpackProperties, action) {
-	function createPluginsProperty(p) {
-		const pluginArray = utils.createArrayWithChildren(
-			j,
-			"plugins",
-			webpackProperties,
-			true
-		);
-		return p.value.properties.push(pluginArray);
-	}
-	if (webpackProperties) {
-		if (Array.isArray(webpackProperties) && action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createPluginsProperty));
-		} else if (action === "add") {
-			const pluginsNode = utils.findRootNodesByName(j, ast, "plugins");
-			if (pluginsNode.size() !== 0) {
-				return pluginsNode.filter(p => {
-					let node = utils.createFunctionWithArguments(j, p, webpackProperties);
-					if (node) {
-						p.value.value.elements.push(node);
-					} else {
-						return null;
-					}
-				});
-			} else {
-				return pluginsTransform(j, ast, [webpackProperties], "init");
-			}
-		} else if (action === "remove") {
-			return utils
-				.findRootNodesByName(j, ast, "plugins")
-				.filter(p =>
-					p.value.value.elements.filter(name => name !== webpackProperties)
-				);
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_resolveLoader_resolveLoader.js.html b/docs/init_transformations_resolveLoader_resolveLoader.js.html deleted file mode 100644 index e4e38f0a9ef..00000000000 --- a/docs/init_transformations_resolveLoader_resolveLoader.js.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - JSDoc: Source: init/transformations/resolveLoader/resolveLoader.js - - - - - - - - - - -
- -

Source: init/transformations/resolveLoader/resolveLoader.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for resolveLoader. Finds the resolveLoader property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function resolveLoaderTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createResolveLoaderProperty(p) {
-		if (typeof webpackProperties === "string") {
-			return utils.pushCreateProperty(j, p, "resolveLoader", webpackProperties);
-		}
-		if (Array.isArray(webpackProperties)) {
-			const externalArray = utils.createArrayWithChildren(
-				j,
-				"resolveLoader",
-				webpackProperties,
-				true
-			);
-			return p.value.properties.push(externalArray);
-		} else {
-			utils.pushCreateProperty(j, p, "resolveLoader", j.objectExpression([]));
-			return utils.pushObjectKeys(j, p, webpackProperties, "resolveLoader");
-		}
-	}
-	function editResolveLoaderProperty(p) {
-		return utils.pushObjectKeys(j, p, webpackProperties, "resolveLoader", true);
-	}
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createResolveLoaderProperty));
-		} else if (action === "add") {
-			const resolveLoaderNode = utils.findRootNodesByName(
-				j,
-				ast,
-				"resolveLoader"
-			);
-			if (
-				resolveLoaderNode.size() !== 0 &&
-				typeof webpackProperties === "object"
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p => utils.isAssignment(null, p, editResolveLoaderProperty));
-			} else if (resolveLoaderNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"resolveLoader"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return resolveLoaderTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_resolve_resolve.js.html b/docs/init_transformations_resolve_resolve.js.html deleted file mode 100644 index 8fd498c974b..00000000000 --- a/docs/init_transformations_resolve_resolve.js.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - JSDoc: Source: init/transformations/resolve/resolve.js - - - - - - - - - - -
- -

Source: init/transformations/resolve/resolve.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for resolve. Finds the resolve property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function resolveTransform(j, ast, webpackProperties, action) {
-	function createResolveProperty(p) {
-		if (typeof webpackProperties === "string") {
-			return utils.pushCreateProperty(j, p, "resolve", webpackProperties);
-		}
-		if (Array.isArray(webpackProperties)) {
-			const externalArray = utils.createArrayWithChildren(
-				j,
-				"resolve",
-				webpackProperties,
-				true
-			);
-			return p.value.properties.push(externalArray);
-		} else {
-			utils.pushCreateProperty(j, p, "resolve", j.objectExpression([]));
-			return utils.pushObjectKeys(j, p, webpackProperties, "resolve");
-		}
-	}
-	function editResolveProperty(p) {
-		return utils.pushObjectKeys(j, p, webpackProperties, "resolve", true);
-	}
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createResolveProperty));
-		} else if (action === "add") {
-			const resolveNode = utils.findRootNodesByName(j, ast, "resolve");
-			if (resolveNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p => utils.isAssignment(null, p, editResolveProperty));
-			} else if (resolveNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"resolve"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return resolveTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_stats_stats.js.html b/docs/init_transformations_stats_stats.js.html deleted file mode 100644 index 4d1e76a9f8f..00000000000 --- a/docs/init_transformations_stats_stats.js.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - JSDoc: Source: init/transformations/stats/stats.js - - - - - - - - - - -
- -

Source: init/transformations/stats/stats.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for stats. Finds the stats property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function statsTransform(j, ast, webpackProperties, action) {
-	function createStatsProperty(p) {
-		utils.pushCreateProperty(j, p, "stats", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "stats");
-	}
-	if (webpackProperties) {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createStatsProperty));
-		} else if (action === "init" && webpackProperties.length) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"stats",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const statsNode = utils.findRootNodesByName(j, ast, "stats");
-			if (statsNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"stats"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (statsNode.size() !== 0 && webpackProperties.length) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"stats"
-					)
-					.forEach(p => {
-						j(p).replaceWith(
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						);
-					});
-			} else {
-				return statsTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_target_target.js.html b/docs/init_transformations_target_target.js.html deleted file mode 100644 index e39aaaf305f..00000000000 --- a/docs/init_transformations_target_target.js.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - JSDoc: Source: init/transformations/target/target.js - - - - - - - - - - -
- -

Source: init/transformations/target/target.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for target. Finds the target property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function targetTransform(j, ast, webpackProperties, action) {
-	if (webpackProperties) {
-		if (action === "init") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"target",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const targetNode = utils.findRootNodesByName(j, ast, "target");
-			if (targetNode.size() !== 0) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"target",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return targetTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_top-scope_top-scope.js.html b/docs/init_transformations_top-scope_top-scope.js.html deleted file mode 100644 index 2b02ac1b65d..00000000000 --- a/docs/init_transformations_top-scope_top-scope.js.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - JSDoc: Source: init/transformations/top-scope/top-scope.js - - - - - - - - - - -
- -

Source: init/transformations/top-scope/top-scope.js

- - - - - - -
-
-
/**
- *
- * Get an property named topScope from yeoman and inject it to the top scope of
- * the config, outside module.exports
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function(j, ast, webpackProperties, action) {
-	function createTopScopeProperty(p) {
-		webpackProperties.forEach(n => {
-			if (
-				!p.value.body[0].declarations ||
-				n.indexOf(p.value.body[0].declarations[0].id.name) <= 0
-			) {
-				p.value.body.splice(-1, 0, n);
-			}
-		});
-	}
-	if (webpackProperties) {
-		return ast.find(j.Program).filter(p => createTopScopeProperty(p));
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_watch_watch.js.html b/docs/init_transformations_watch_watch.js.html deleted file mode 100644 index 8fbc19e4543..00000000000 --- a/docs/init_transformations_watch_watch.js.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - JSDoc: Source: init/transformations/watch/watch.js - - - - - - - - - - -
- -

Source: init/transformations/watch/watch.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for watch. Finds the watch property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function watchTransform(j, ast, webpackProperties, action) {
-	function createWatchProperty(p) {
-		utils.pushCreateProperty(j, p, "watch", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "watch");
-	}
-	if (webpackProperties || typeof webpackProperties === "boolean") {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createWatchProperty));
-		} else if (action === "init" && typeof webpackProperties === "boolean") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"watch",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const watchNode = utils.findRootNodesByName(j, ast, "watch");
-			if (watchNode.size() !== 0 && typeof webpackProperties === "object") {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"watch"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				watchNode.size() !== 0 &&
-				(webpackProperties.length || typeof webpackProperties === "boolean")
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"watch",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return watchTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/init_transformations_watch_watchOptions.js.html b/docs/init_transformations_watch_watchOptions.js.html deleted file mode 100644 index 1582b12a4b4..00000000000 --- a/docs/init_transformations_watch_watchOptions.js.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - JSDoc: Source: init/transformations/watch/watchOptions.js - - - - - - - - - - -
- -

Source: init/transformations/watch/watchOptions.js

- - - - - - -
-
-
"use strict";
-
-const utils = require("../../../utils/ast-utils");
-
-/**
- *
- * Transform for watchOptions. Finds the watchOptions property from yeoman and creates a
- * property based on what the user has given us.
- *
- * @param j — jscodeshift API
- * @param ast - jscodeshift API
- * @param {any} webpackProperties - transformation object to scaffold
- * @param {String} action - action that indicates what to be done to the AST
- * @returns ast - jscodeshift API
- */
-
-module.exports = function watchOptionsTransform(
-	j,
-	ast,
-	webpackProperties,
-	action
-) {
-	function createWatchOptionsProperty(p) {
-		utils.pushCreateProperty(j, p, "watchOptions", j.objectExpression([]));
-		return utils.pushObjectKeys(j, p, webpackProperties, "watchOptions");
-	}
-	if (webpackProperties || typeof webpackProperties === "boolean") {
-		if (action === "init" && typeof webpackProperties === "object") {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p => utils.isAssignment(null, p, createWatchOptionsProperty));
-		} else if (
-			action === "init" &&
-			(webpackProperties.length || typeof webpackProperties === "boolean")
-		) {
-			return ast
-				.find(j.ObjectExpression)
-				.filter(p =>
-					utils.isAssignment(
-						j,
-						p,
-						utils.pushCreateProperty,
-						"watchOptions",
-						webpackProperties
-					)
-				);
-		} else if (action === "add") {
-			const watchOptionsNode = utils.findRootNodesByName(
-				j,
-				ast,
-				"watchOptions"
-			);
-			if (
-				watchOptionsNode.size() !== 0 &&
-				typeof webpackProperties === "object"
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(
-						p =>
-							utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-							"watchOptions"
-					)
-					.filter(p => {
-						Object.keys(webpackProperties).forEach(prop => {
-							utils.checkIfExistsAndAddValue(
-								j,
-								p,
-								prop,
-								utils.createIdentifierOrLiteral(j, webpackProperties[prop])
-							);
-						});
-						return ast;
-					});
-			} else if (
-				watchOptionsNode.size() !== 0 &&
-				(typeof webpackProperties === "boolean" || webpackProperties.length > 0)
-			) {
-				return ast
-					.find(j.ObjectExpression)
-					.filter(p =>
-						utils.checkIfExistsAndAddValue(
-							j,
-							p,
-							"watchOptions",
-							utils.createIdentifierOrLiteral(j, webpackProperties)
-						)
-					);
-			} else {
-				return watchOptionsTransform(j, ast, webpackProperties, "init");
-			}
-		} else if (action === "remove") {
-			// TODO
-		} else if (action === "update") {
-			// TODO
-		}
-	} else {
-		return ast;
-	}
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_bannerPlugin_bannerPlugin.js.html b/docs/migrate_bannerPlugin_bannerPlugin.js.html deleted file mode 100644 index a4acdc80f84..00000000000 --- a/docs/migrate_bannerPlugin_bannerPlugin.js.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - JSDoc: Source: migrate/bannerPlugin/bannerPlugin.js - - - - - - - - - - -
- -

Source: migrate/bannerPlugin/bannerPlugin.js

- - - - - - -
-
-
const utils = require("../../utils/ast-utils");
-
-/**
- *
- * Transform for BannerPlugin arguments. Consolidates first and second argument (if
- * both are present) into single options object.
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast) {
-	return utils
-		.findPluginsByName(j, ast, ["webpack.BannerPlugin"])
-		.forEach(path => {
-			const args = path.value.arguments; // any node
-			// If the first argument is a literal replace it with object notation
-			// See https://webpack.js.org/guides/migrating/#bannerplugin-breaking-change
-			if (args && args.length > 1 && args[0].type === j.Literal.name) {
-				// and remove the first argument
-				path.value.arguments = [path.value.arguments[1]];
-				utils.createOrUpdatePluginByName(
-					j,
-					path.parent,
-					"webpack.BannerPlugin",
-					{
-						banner: args[0].value
-					}
-				);
-			}
-		});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_extractTextPlugin_extractTextPlugin.js.html b/docs/migrate_extractTextPlugin_extractTextPlugin.js.html deleted file mode 100644 index 5607cee1926..00000000000 --- a/docs/migrate_extractTextPlugin_extractTextPlugin.js.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - JSDoc: Source: migrate/extractTextPlugin/extractTextPlugin.js - - - - - - - - - - -
- -

Source: migrate/extractTextPlugin/extractTextPlugin.js

- - - - - - -
-
-
const utils = require("../../utils/ast-utils");
-
-/**
- *
- * Check whether `node` is the invocation of the plugin denoted by `pluginName`
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} node - ast node to check
- * @param {String} pluginName - name of the plugin
- * @returns {Boolean} isPluginInvocation - whether `node` is the invocation of the plugin denoted by `pluginName`
- */
-
-function findInvocation(j, node, pluginName) {
-	let found = false;
-	found =
-		j(node)
-			.find(j.MemberExpression)
-			.filter(p => p.get("object").value.name === pluginName)
-			.size() > 0;
-	return found;
-}
-
-/**
- *
- * Transform for ExtractTextPlugin arguments. Consolidates arguments into single options object.
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast) {
-	const changeArguments = function(p) {
-		const args = p.value.arguments;
-
-		const literalArgs = args.filter(p => utils.isType(p, "Literal"));
-		if (literalArgs && literalArgs.length > 1) {
-			const newArgs = j.objectExpression(
-				literalArgs.map((p, index) =>
-					utils.createProperty(j, index === 0 ? "fallback" : "use", p.value)
-				)
-			);
-			p.value.arguments = [newArgs];
-		}
-		return p;
-	};
-	const name = utils.findVariableToPlugin(
-		j,
-		ast,
-		"extract-text-webpack-plugin"
-	);
-	if (!name) return ast;
-
-	return ast
-		.find(j.CallExpression)
-		.filter(p => findInvocation(j, p, name))
-		.forEach(changeArguments);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_index.js.html b/docs/migrate_index.js.html deleted file mode 100644 index 2ad277af537..00000000000 --- a/docs/migrate_index.js.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - JSDoc: Source: migrate/index.js - - - - - - - - - - -
- -

Source: migrate/index.js

- - - - - - -
-
-
const jscodeshift = require("jscodeshift");
-const pEachSeries = require("p-each-series");
-const PLazy = require("p-lazy");
-
-const loadersTransform = require("./loaders/loaders");
-const resolveTransform = require("./resolve/resolve");
-const removeJsonLoaderTransform = require("./removeJsonLoader/removeJsonLoader");
-const uglifyJsPluginTransform = require("./uglifyJsPlugin/uglifyJsPlugin");
-const loaderOptionsPluginTransform = require("./loaderOptionsPlugin/loaderOptionsPlugin");
-const bannerPluginTransform = require("./bannerPlugin/bannerPlugin");
-const extractTextPluginTransform = require("./extractTextPlugin/extractTextPlugin");
-const removeDeprecatedPluginsTransform = require("./removeDeprecatedPlugins/removeDeprecatedPlugins");
-
-const transformsObject = {
-	loadersTransform,
-	resolveTransform,
-	removeJsonLoaderTransform,
-	uglifyJsPluginTransform,
-	loaderOptionsPluginTransform,
-	bannerPluginTransform,
-	extractTextPluginTransform,
-	removeDeprecatedPluginsTransform
-};
-
-const transformations = Object.keys(transformsObject).reduce((res, key) => {
-	res[key] = (ast, source) =>
-		transformSingleAST(ast, source, transformsObject[key]);
-	return res;
-}, {});
-
-function transformSingleAST(ast, source, transformFunction) {
-	return new PLazy((resolve, reject) => {
-		setTimeout(_ => {
-			try {
-				resolve(transformFunction(jscodeshift, ast, source));
-			} catch (err) {
-				reject(err);
-			}
-		}, 0);
-	});
-}
-
-/**
- *
- * Transforms a given piece of source code by applying selected transformations to the AST.
- * By default, transforms a webpack version 1 configuration file into a webpack version 2
- * configuration file.
- *
- * @param {String} source - source file contents
- * @param {Function[]} [transforms] - List of transformation functions, defined in the
- * order to apply them in. By default, all defined transformations.
- * @param {Object} [options] - recast formatting options
- * @returns {String} source — transformed source code
- */
-
-function transform(source, transforms, options) {
-	const ast = jscodeshift(source);
-	const recastOptions = Object.assign(
-		{
-			quote: "single"
-		},
-		options
-	);
-	transforms =
-		transforms || Object.keys(transformations).map(k => transformations[k]);
-	return pEachSeries(transforms, f => f(ast, source))
-		.then(_ => {
-			return ast.toSource(recastOptions);
-		})
-		.catch(err => {
-			console.error(err);
-		});
-}
-
-module.exports = {
-	transform,
-	transformSingleAST,
-	transformations
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html b/docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html deleted file mode 100644 index 4cb36ce285d..00000000000 --- a/docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - JSDoc: Source: migrate/loaderOptionsPlugin/loaderOptionsPlugin.js - - - - - - - - - - -
- -

Source: migrate/loaderOptionsPlugin/loaderOptionsPlugin.js

- - - - - - -
-
-
const isEmpty = require("lodash/isEmpty");
-const findPluginsByName = require("../../utils/ast-utils").findPluginsByName;
-const createOrUpdatePluginByName = require("../../utils/ast-utils")
-	.createOrUpdatePluginByName;
-const safeTraverse = require("../../utils/ast-utils").safeTraverse;
-
-/**
- *
- * Transform which adds context information for old loaders by injecting a `LoaderOptionsPlugin`
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- *
- */
-
-module.exports = function(j, ast) {
-	const loaderOptions = {};
-
-	// If there is debug: true, set debug: true in the plugin
-	// TODO: remove global debug setting
-	// TODO: I can't figure out how to find the topmost `debug: true`. help!
-	if (ast.find(j.Identifier, { name: "debug" }).size()) {
-		loaderOptions.debug = true;
-	}
-
-	// If there is UglifyJsPlugin, set minimize: true
-	if (findPluginsByName(j, ast, ["webpack.optimize.UglifyJsPlugin"]).size()) {
-		loaderOptions.minimize = true;
-	}
-
-	return ast
-		.find(j.ArrayExpression)
-		.filter(
-			path =>
-				safeTraverse(path, ["parent", "value", "key", "name"]) === "plugins"
-		)
-		.forEach(path => {
-			!isEmpty(loaderOptions) &&
-				createOrUpdatePluginByName(
-					j,
-					path,
-					"webpack.LoaderOptionsPlugin",
-					loaderOptions
-				);
-		});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_loaders_loaders.js.html b/docs/migrate_loaders_loaders.js.html deleted file mode 100644 index f4767f047a9..00000000000 --- a/docs/migrate_loaders_loaders.js.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - - JSDoc: Source: migrate/loaders/loaders.js - - - - - - - - - - -
- -

Source: migrate/loaders/loaders.js

- - - - - - -
-
-
const utils = require("../../utils/ast-utils");
-
-/**
- *
- * Transform for loaders. Transforms pre- and postLoaders into enforce options,
- * moves loader configuration into rules array, transforms query strings and
- * props into loader options, and adds -loader suffix to loader names.
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast) {
-	/**
-	 * Creates an Array expression out of loaders string
-	 *
-	 *
-	 * For syntaxes like
-	 *
-	 * {
-	 *   loader: 'style!css`
-	 * }
-	 *
-	 * or
-	 *
-	 * {
-	 *   loaders: ['style', 'css']
-	 * }
-	 *
-	 * or
-	 *
-	 * loaders: [{
-	 *   loader: 'style'
-	 * },
-	 * {
-	 *   loader: 'css',
-	 * }]
-	 *
-	 * it should generate
-	 *
-	 * {
-	 *   use: [{
-	 *     loader: 'style'
-	 *   },
-	 *   {
-	 *     loader: 'css'
-	 *   }]
-	 * }
-	 *
-	 * @param  {Node} path - object expression ast
-	 * @returns {Node} path - object expression ast with array expression instead of loaders string
-	 */
-
-	const createArrayExpressionFromArray = function(path) {
-		const value = path.value;
-		// Find paths with `loaders` keys in the given Object
-		const paths = value.properties.filter(prop =>
-			prop.key.name.startsWith("loader")
-		);
-		// For each pair of key and value
-		paths.forEach(pair => {
-			// Replace 'loaders' Identifier with 'use'
-			pair.key.name = "use";
-			// If the value is an Array
-			if (pair.value.type === j.ArrayExpression.name) {
-				// replace its elements
-				const pairValue = pair.value;
-				pair.value = j.arrayExpression(
-					pairValue.elements.map(arrElement => {
-						// If items of the array are Strings
-						if (arrElement.type === j.Literal.name) {
-							// Replace with `{ loader: LOADER }` Object
-							return j.objectExpression([
-								utils.createProperty(j, "loader", arrElement.value)
-							]);
-						}
-						// otherwise keep the existing element
-						return arrElement;
-					})
-				);
-				//	If the value is String of loaders like 'style!css'
-			} else if (pair.value.type === j.Literal.name) {
-				// Replace it with Array expression of loaders
-				const literalValue = pair.value;
-				pair.value = j.arrayExpression(
-					literalValue.value.split("!").map(loader => {
-						return j.objectExpression([
-							utils.createProperty(j, "loader", loader)
-						]);
-					})
-				);
-			}
-		});
-		return path;
-	};
-
-	/**
-	 *
-	 * Puts query parameters from loader value into options object
-	 *
-	 * @param {Node} p - object expression ast for loader object
-	 * @returns {Node} objectExpression - an new object expression ast containing the query parameters
-	 */
-
-	const createLoaderWithQuery = p => {
-		let properties = p.value.properties;
-		let loaderValue = properties.reduce(
-			(val, prop) => (prop.key.name === "loader" ? prop.value.value : val),
-			""
-		);
-		let loader = loaderValue.split("?")[0];
-		let query = loaderValue.split("?")[1];
-		let options = query.split("&").map(option => {
-			const param = option.split("=");
-			const key = param[0];
-			const val = param[1] || true; // No value in query string means it is truthy value
-			return j.objectProperty(j.identifier(key), utils.createLiteral(j, val));
-		});
-		let loaderProp = utils.createProperty(j, "loader", loader);
-		let queryProp = j.property(
-			"init",
-			j.identifier("options"),
-			j.objectExpression(options)
-		);
-		return j.objectExpression([loaderProp, queryProp]);
-	};
-
-	/**
-	 *
-	 * Determine whether a loader has a query string
-	 *
-	 * @param {Node} p - object expression ast for loader object
-	 * @returns {Boolean} hasLoaderQueryString - whether the loader object contains a query string
-	 */
-
-	const findLoaderWithQueryString = p => {
-		return p.value.properties.reduce((predicate, prop) => {
-			return (
-				(utils.safeTraverse(prop, ["value", "value", "indexOf"]) &&
-					prop.value.value.indexOf("?") > -1) ||
-				predicate
-			);
-		}, false);
-	};
-
-	/**
-	 * Check if the identifier is the `loaders` prop in the `module` object.
-	 * If the path value is `loaders` and it’s located in `module` object
-	 * we assume it’s the loader's section.
-	 *
-	 * @param {Node} path - identifier ast
-	 * @returns {Boolean} isLoadersProp - whether the identifier is the `loaders` prop in the `module` object
-	 */
-
-	const checkForLoader = path =>
-		path.value.name === "loaders" &&
-		utils.safeTraverse(path, [
-			"parent",
-			"parent",
-			"parent",
-			"node",
-			"key",
-			"name"
-		]) === "module";
-
-	/**
-	 * Puts pre- or postLoader into `loaders` object and adds the appropriate `enforce` property
-	 *
-	 * @param {Node} p - object expression ast that has a key for either 'preLoaders' or 'postLoaders'
-	 * @returns {Node} p - object expression with a `loaders` object and appropriate `enforce` properties
-	 */
-
-	const fitIntoLoaders = p => {
-		let loaders;
-		p.value.properties.map(prop => {
-			const keyName = prop.key.name;
-			if (keyName === "loaders") {
-				loaders = prop.value;
-			}
-		});
-		p.value.properties.map(prop => {
-			const keyName = prop.key.name;
-			if (keyName !== "loaders") {
-				const enforceVal = keyName === "preLoaders" ? "pre" : "post";
-				prop.value.elements.map(elem => {
-					elem.properties.push(utils.createProperty(j, "enforce", enforceVal));
-					if (loaders && loaders.type === "ArrayExpression") {
-						loaders.elements.push(elem);
-					} else {
-						prop.key.name = "loaders";
-					}
-				});
-			}
-		});
-		if (loaders) {
-			p.value.properties = p.value.properties.filter(
-				prop => prop.key.name === "loaders"
-			);
-		}
-		return p;
-	};
-
-	/**
-	 * Find pre and postLoaders in the ast and put them into the `loaders` array
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const prepostLoaders = () =>
-		ast
-			.find(j.ObjectExpression)
-			.filter(p => utils.findObjWithOneOfKeys(p, ["preLoaders", "postLoaders"]))
-			.forEach(fitIntoLoaders);
-
-	/**
-	 * Convert top level `loaders` to `rules`
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const loadersToRules = () =>
-		ast
-			.find(j.Identifier)
-			.filter(checkForLoader)
-			.forEach(p => (p.value.name = "rules"));
-
-	/**
-	 * Convert `loader` and `loaders` to Array of {Rule.Use}
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const loadersToArrayExpression = () =>
-		ast
-			.find(j.ObjectExpression)
-			.filter(path => utils.findObjWithOneOfKeys(path, ["loader", "loaders"]))
-			.filter(
-				path =>
-					utils.safeTraverse(path, [
-						"parent",
-						"parent",
-						"node",
-						"key",
-						"name"
-					]) === "rules"
-			)
-			.forEach(createArrayExpressionFromArray);
-
-	/**
-	 * Find loaders with options encoded as a query string and replace the string with an options object
-	 *
-	 * i.e. for loader like
-	 *
-	 * {
-	 *   loader: 'css?modules&importLoaders=1&string=test123'
-	 * }
-	 *
-	 * it should generate
-	 * {
-	 *   loader: 'css-loader',
-	 *   options: {
-	 *     modules: true,
-	 *     importLoaders: 1,
-	 *     string: 'test123'
-	 *   }
-	 * }
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const loaderWithQueryParam = () =>
-		ast
-			.find(j.ObjectExpression)
-			.filter(p => utils.findObjWithOneOfKeys(p, ["loader"]))
-			.filter(findLoaderWithQueryString)
-			.replaceWith(createLoaderWithQuery);
-
-	/**
-	 * Find nodes with a `query` key and replace it with `options`
-	 *
-	 * i.e. for
-	 * {
-	 *   query: { ... }
-	 * }
-	 *
-	 * it should generate
-	 *
-	 * {
-	 *   options: { ... }
-	 * }
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const loaderWithQueryProp = () =>
-		ast
-			.find(j.Identifier)
-			.filter(p => p.value.name === "query")
-			.replaceWith(j.identifier("options"));
-
-	/**
-	 * Add required `-loader` suffix to a loader with missing suffix
-	 * e.g. for `babel` it should generate `babel-loader`
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const addLoaderSuffix = () =>
-		ast.find(j.ObjectExpression).forEach(path => {
-			path.value.properties.forEach(prop => {
-				if (
-					prop.key.name === "loader" &&
-					utils.safeTraverse(prop, ["value", "value"]) &&
-					!prop.value.value.endsWith("-loader")
-				) {
-					prop.value = j.literal(prop.value.value + "-loader");
-				}
-			});
-		});
-
-	/**
-	 *
-	 * Puts options object outside use object into use object
-	 *
-	 * @param {Node} p - object expression ast that has a key for either 'options' or 'use'
-	 * @returns {Node} objectExpression - an use object expression ast containing the options and loader
-	 */
-
-	const fitOptionsToUse = p => {
-		let options;
-		p.value.properties.forEach(prop => {
-			const keyName = prop.key.name;
-			if (keyName === "options") {
-				options = prop;
-			}
-		});
-
-		if (options) {
-			p.value.properties = p.value.properties.filter(
-				prop => prop.key.name !== "options"
-			);
-
-			p.value.properties.forEach(prop => {
-				const keyName = prop.key.name;
-				if (keyName === "use") {
-					prop.value.elements[0].properties.push(options);
-				}
-			});
-		}
-
-		return p;
-	};
-
-	/**
-	 * Move `options` inside the Array of {Rule.Use}
-	 *
-	 * @returns {Node} ast - jscodeshift ast
-	 */
-
-	const moveOptionsToUse = () =>
-		ast
-			.find(j.ObjectExpression)
-			.filter(p => utils.findObjWithOneOfKeys(p, ["use"]))
-			.forEach(fitOptionsToUse);
-
-	const transforms = [
-		prepostLoaders,
-		loadersToRules,
-		loadersToArrayExpression,
-		loaderWithQueryParam,
-		loaderWithQueryProp,
-		addLoaderSuffix,
-		moveOptionsToUse
-	];
-	transforms.forEach(t => t());
-
-	return ast;
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_outputPath_outputPath.js.html b/docs/migrate_outputPath_outputPath.js.html deleted file mode 100644 index bc2a0c3633b..00000000000 --- a/docs/migrate_outputPath_outputPath.js.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - JSDoc: Source: migrate/outputPath/outputPath.js - - - - - - - - - - -
- -

Source: migrate/outputPath/outputPath.js

- - - - - - -
-
-
const utils = require("../../utils/ast-utils");
-
-/**
- *
- * Transform which adds `path.join` call to `output.path` literals
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast) {
-	const literalOutputPath = ast
-		.find(j.ObjectExpression)
-		.filter(
-			p =>
-				utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
-				"output"
-		)
-		.find(j.Property)
-		.filter(
-			p =>
-				utils.safeTraverse(p, ["value", "key", "name"]) === "path" &&
-				utils.safeTraverse(p, ["value", "value", "type"]) === "Literal"
-		);
-
-	if (literalOutputPath) {
-		let pathVarName = "path";
-		let isPathPresent = false;
-		const pathDeclaration = ast
-			.find(j.VariableDeclarator)
-			.filter(
-				p =>
-					utils.safeTraverse(p, ["value", "init", "callee", "name"]) ===
-					"require"
-			)
-			.filter(
-				p =>
-					utils.safeTraverse(p, ["value", "init", "arguments"]) &&
-					p.value.init.arguments.reduce((isPresent, a) => {
-						return (a.type === "Literal" && a.value === "path") || isPresent;
-					}, false)
-			);
-
-		if (pathDeclaration) {
-			isPathPresent = true;
-			pathDeclaration.forEach(p => {
-				pathVarName = utils.safeTraverse(p, ["value", "id", "name"]);
-			});
-		}
-		const finalPathName = pathVarName;
-		literalOutputPath
-			.find(j.Literal)
-			.replaceWith(p => replaceWithPath(j, p, finalPathName));
-
-		if (!isPathPresent) {
-			const pathRequire = utils.getRequire(j, "path", "path");
-			return ast
-				.find(j.Program)
-				.replaceWith(p =>
-					j.program([].concat(pathRequire).concat(p.value.body))
-				);
-		}
-	}
-	return ast;
-};
-
-function replaceWithPath(j, p, pathVarName) {
-	const convertedPath = j.callExpression(
-		j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false),
-		[j.identifier("__dirname"), p.value]
-	);
-	return convertedPath;
-}
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html b/docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html deleted file mode 100644 index 17bcf8f51e6..00000000000 --- a/docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - JSDoc: Source: migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.js - - - - - - - - - - -
- -

Source: migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.js

- - - - - - -
-
-
const chalk = require("chalk");
-const utils = require("../../utils/ast-utils");
-
-/**
- *
- * Find deprecated plugins and remove them from the `plugins` array, if possible.
- * Otherwise, warn the user about removing deprecated plugins manually.
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast, source) {
-	// List of deprecated plugins to remove
-	// each item refers to webpack.optimize.[NAME] construct
-	const deprecatedPlugingsList = [
-		"webpack.optimize.OccurrenceOrderPlugin",
-		"webpack.optimize.DedupePlugin"
-	];
-
-	return utils
-		.findPluginsByName(j, ast, deprecatedPlugingsList)
-		.forEach(path => {
-			// For now we only support the case where plugins are defined in an Array
-			const arrayPath = utils.safeTraverse(path, ["parent", "value"]);
-			if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) {
-				// Check how many plugins are defined and
-				// if there is only last plugin left remove `plugins: []` node
-				const arrayElementsPath = utils.safeTraverse(arrayPath, ["elements"]);
-				if (arrayElementsPath && arrayElementsPath.length === 1) {
-					j(path.parent.parent).remove();
-				} else {
-					j(path).remove();
-				}
-			} else {
-				console.log(`
-${chalk.red("Please remove deprecated plugins manually. ")}
-See ${chalk.underline(
-		"https://webpack.js.org/guides/migrating/"
-	)} for more information.`);
-			}
-		});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_removeJsonLoader_removeJsonLoader.js.html b/docs/migrate_removeJsonLoader_removeJsonLoader.js.html deleted file mode 100644 index c04772a41d0..00000000000 --- a/docs/migrate_removeJsonLoader_removeJsonLoader.js.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - JSDoc: Source: migrate/removeJsonLoader/removeJsonLoader.js - - - - - - - - - - -
- -

Source: migrate/removeJsonLoader/removeJsonLoader.js

- - - - - - -
-
-
const utils = require("../../utils/ast-utils");
-
-/**
- *
- * Transform which removes the json loader from all possible declarations
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast) {
-	/**
-	 *
-	 * Remove the loader with name `name` from the given NodePath
-	 *
-	 * @param {Node} path - ast to remove the loader from
-	 * @param {String} name - the name of the loader to remove
-	 *
-	 */
-
-	function removeLoaderByName(path, name) {
-		const loadersNode = path.value.value;
-		switch (loadersNode.type) {
-			case j.ArrayExpression.name: {
-				let loaders = loadersNode.elements.map(p => {
-					return utils.safeTraverse(p, ["properties", "0", "value", "value"]);
-				});
-				const loaderIndex = loaders.indexOf(name);
-				if (loaders.length && loaderIndex > -1) {
-					// Remove loader from the array
-					loaders.splice(loaderIndex, 1);
-					// and from AST
-					loadersNode.elements.splice(loaderIndex, 1);
-				}
-
-				// If there are no loaders left, remove the whole Rule object
-				if (loaders.length === 0) {
-					j(path.parent).remove();
-				}
-				break;
-			}
-			case j.Literal.name: {
-				// If only the loader with the matching name was used
-				// we can remove the whole Property node completely
-				if (loadersNode.value === name) {
-					j(path.parent).remove();
-				}
-				break;
-			}
-		}
-	}
-
-	function removeLoaders(ast) {
-		ast
-			.find(j.Property, { key: { name: "use" } })
-			.forEach(path => removeLoaderByName(path, "json-loader"));
-
-		ast
-			.find(j.Property, { key: { name: "loader" } })
-			.forEach(path => removeLoaderByName(path, "json-loader"));
-	}
-
-	const transforms = [removeLoaders];
-
-	transforms.forEach(t => t(ast));
-
-	return ast;
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_resolve_resolve.js.html b/docs/migrate_resolve_resolve.js.html deleted file mode 100644 index 0da1af0a136..00000000000 --- a/docs/migrate_resolve_resolve.js.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - JSDoc: Source: migrate/resolve/resolve.js - - - - - - - - - - -
- -

Source: migrate/resolve/resolve.js

- - - - - - -
-
-
/**
- *
- * Transform which consolidates the `resolve.root` configuration option into the `resolve.modules` array
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function transformer(j, ast) {
-	const getRootVal = p => {
-		return p.node.value.properties.filter(prop => prop.key.name === "root")[0];
-	};
-
-	const getRootIndex = p => {
-		return p.node.value.properties.reduce((rootIndex, prop, index) => {
-			return prop.key.name === "root" ? index : rootIndex;
-		}, -1);
-	};
-
-	const isModulePresent = p => {
-		const modules = p.node.value.properties.filter(
-			prop => prop.key.name === "modules"
-		);
-		return modules.length > 0 && modules[0];
-	};
-
-	/**
-	 *
-	 * Add a `modules` property to the `resolve` object or update the existing one
-	 * based on what is already in `resolve.root`
-	 *
-	 * @param {Node} p - ast node that represents the `resolve` property
-	 * @returns {Node} p - ast node that represents the updated `resolve` property
-	 */
-
-	const createModuleArray = p => {
-		const rootVal = getRootVal(p);
-		let modulesVal = null;
-		if (rootVal.value.type === "ArrayExpression") {
-			modulesVal = rootVal.value.elements;
-		} else {
-			modulesVal = [rootVal.value];
-		}
-		let module = isModulePresent(p);
-
-		if (!module) {
-			module = j.property(
-				"init",
-				j.identifier("modules"),
-				j.arrayExpression(modulesVal)
-			);
-			p.node.value.properties = p.node.value.properties.concat([module]);
-		} else {
-			module.value.elements = module.value.elements.concat(modulesVal);
-		}
-		const rootIndex = getRootIndex(p);
-		p.node.value.properties.splice(rootIndex, 1);
-		return p;
-	};
-
-	return ast
-		.find(j.Property)
-		.filter(p => {
-			return (
-				p.node.key.name === "resolve" &&
-				p.node.value.properties.filter(prop => prop.key.name === "root")
-					.length === 1
-			);
-		})
-		.forEach(createModuleArray);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html b/docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html deleted file mode 100644 index 867aacd93a1..00000000000 --- a/docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - JSDoc: Source: migrate/uglifyJsPlugin/uglifyJsPlugin.js - - - - - - - - - - -
- -

Source: migrate/uglifyJsPlugin/uglifyJsPlugin.js

- - - - - - -
-
-
const findPluginsByName = require("../../utils/ast-utils").findPluginsByName;
-
-/**
- *
- * Transform which adds a `sourceMap: true` option to instantiations of the UglifyJsPlugin
- *
- * @param {Object} j - jscodeshift top-level import
- * @param {Node} ast - jscodeshift ast to transform
- * @returns {Node} ast - jscodeshift ast
- */
-
-module.exports = function(j, ast) {
-	function createSourceMapsProperty() {
-		return j.property("init", j.identifier("sourceMap"), j.identifier("true"));
-	}
-
-	return findPluginsByName(j, ast, ["webpack.optimize.UglifyJsPlugin"]).forEach(
-		path => {
-			const args = path.value.arguments;
-
-			if (args.length) {
-				// Plugin is called with object as arguments
-				j(path)
-					.find(j.ObjectExpression)
-					.get("properties")
-					.value.push(createSourceMapsProperty());
-			} else {
-				// Plugin is called without arguments
-				args.push(j.objectExpression([createSourceMapsProperty()]));
-			}
-		}
-	);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js deleted file mode 100644 index 8d52f7eafdb..00000000000 --- a/docs/scripts/linenumber.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global document */ -(function() { - var source = document.getElementsByClassName('prettyprint source linenums'); - var i = 0; - var lineNumber = 0; - var lineId; - var lines; - var totalLines; - var anchorHash; - - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; - - for (; i < totalLines; i++) { - lineNumber++; - lineId = 'line' + lineNumber; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } - } -})(); diff --git a/docs/scripts/prettify/Apache-License-2.0.txt b/docs/scripts/prettify/Apache-License-2.0.txt deleted file mode 100644 index d6456956733..00000000000 --- a/docs/scripts/prettify/Apache-License-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js deleted file mode 100644 index 041e1f59067..00000000000 --- a/docs/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js deleted file mode 100644 index eef5ad7e6a0..00000000000 --- a/docs/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p th:last-child { border-right: 1px solid #ddd; } - -.ancestors, .attribs { color: #999; } -.ancestors a, .attribs a -{ - color: #999 !important; - text-decoration: none; -} - -.clear -{ - clear: both; -} - -.important -{ - font-weight: bold; - color: #950B02; -} - -.yes-def { - text-indent: -1000px; -} - -.type-signature { - color: #aaa; -} - -.name, .signature { - font-family: Consolas, Monaco, 'Andale Mono', monospace; -} - -.details { margin-top: 14px; border-left: 2px solid #DDD; } -.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } -.details dd { margin-left: 70px; } -.details ul { margin: 0; } -.details ul { list-style-type: none; } -.details li { margin-left: 30px; padding-top: 6px; } -.details pre.prettyprint { margin: 0 } -.details .object-value { padding-top: 0; } - -.description { - margin-bottom: 1em; - margin-top: 1em; -} - -.code-caption -{ - font-style: italic; - font-size: 107%; - margin: 0; -} - -.prettyprint -{ - border: 1px solid #ddd; - width: 80%; - overflow: auto; -} - -.prettyprint.source { - width: inherit; -} - -.prettyprint code -{ - font-size: 100%; - line-height: 18px; - display: block; - padding: 4px 12px; - margin: 0; - background-color: #fff; - color: #4D4E53; -} - -.prettyprint code span.line -{ - display: inline-block; -} - -.prettyprint.linenums -{ - padding-left: 70px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.prettyprint.linenums ol -{ - padding-left: 0; -} - -.prettyprint.linenums li -{ - border-left: 3px #ddd solid; -} - -.prettyprint.linenums li.selected, -.prettyprint.linenums li.selected * -{ - background-color: lightyellow; -} - -.prettyprint.linenums li * -{ - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.params .name, .props .name, .name code { - color: #4D4E53; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 100%; -} - -.params td.description > p:first-child, -.props td.description > p:first-child -{ - margin-top: 0; - padding-top: 0; -} - -.params td.description > p:last-child, -.props td.description > p:last-child -{ - margin-bottom: 0; - padding-bottom: 0; -} - -.disabled { - color: #454545; -} diff --git a/docs/styles/prettify-jsdoc.css b/docs/styles/prettify-jsdoc.css deleted file mode 100644 index 5a2526e3748..00000000000 --- a/docs/styles/prettify-jsdoc.css +++ /dev/null @@ -1,111 +0,0 @@ -/* JSDoc prettify.js theme */ - -/* plain text */ -.pln { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* string content */ -.str { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a keyword */ -.kwd { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a comment */ -.com { - font-weight: normal; - font-style: italic; -} - -/* a type name */ -.typ { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a literal value */ -.lit { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* punctuation */ -.pun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp open bracket */ -.opn { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp close bracket */ -.clo { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a markup tag name */ -.tag { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute name */ -.atn { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute value */ -.atv { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a declaration */ -.dec { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a variable name */ -.var { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a function name */ -.fun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} diff --git a/docs/styles/prettify-tomorrow.css b/docs/styles/prettify-tomorrow.css deleted file mode 100644 index b6f92a78db9..00000000000 --- a/docs/styles/prettify-tomorrow.css +++ /dev/null @@ -1,132 +0,0 @@ -/* Tomorrow Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* Pretty printing styles. Used with prettify.js. */ -/* SPAN elements with the classes below are added by prettyprint. */ -/* plain text */ -.pln { - color: #4d4d4c; } - -@media screen { - /* string content */ - .str { - color: #718c00; } - - /* a keyword */ - .kwd { - color: #8959a8; } - - /* a comment */ - .com { - color: #8e908c; } - - /* a type name */ - .typ { - color: #4271ae; } - - /* a literal value */ - .lit { - color: #f5871f; } - - /* punctuation */ - .pun { - color: #4d4d4c; } - - /* lisp open bracket */ - .opn { - color: #4d4d4c; } - - /* lisp close bracket */ - .clo { - color: #4d4d4c; } - - /* a markup tag name */ - .tag { - color: #c82829; } - - /* a markup attribute name */ - .atn { - color: #f5871f; } - - /* a markup attribute value */ - .atv { - color: #3e999f; } - - /* a declaration */ - .dec { - color: #f5871f; } - - /* a variable name */ - .var { - color: #c82829; } - - /* a function name */ - .fun { - color: #4271ae; } } -/* Use higher contrast and text-weight for printable form. */ -@media print, projection { - .str { - color: #060; } - - .kwd { - color: #006; - font-weight: bold; } - - .com { - color: #600; - font-style: italic; } - - .typ { - color: #404; - font-weight: bold; } - - .lit { - color: #044; } - - .pun, .opn, .clo { - color: #440; } - - .tag { - color: #006; - font-weight: bold; } - - .atn { - color: #404; } - - .atv { - color: #060; } } -/* Style */ -/* -pre.prettyprint { - background: white; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 12px; - line-height: 1.5; - border: 1px solid #ccc; - padding: 10px; } -*/ - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; } - -/* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L4, -li.L5, -li.L6, -li.L7, -li.L8, -li.L9 { - /* */ } - -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { - /* */ } diff --git a/docs/utils_ast-utils.js.html b/docs/utils_ast-utils.js.html deleted file mode 100644 index 241e6e998f4..00000000000 --- a/docs/utils_ast-utils.js.html +++ /dev/null @@ -1,727 +0,0 @@ - - - - - JSDoc: Source: utils/ast-utils.js - - - - - - - - - - -
- -

Source: utils/ast-utils.js

- - - - - - -
-
-
const hashtable = require("./hashtable");
-
-function safeTraverse(obj, paths) {
-	let val = obj;
-	let idx = 0;
-
-	while (idx < paths.length) {
-		if (!val) {
-			return null;
-		}
-		val = val[paths[idx]];
-		idx++;
-	}
-	return val;
-}
-
-// Convert nested MemberExpressions to strings like webpack.optimize.DedupePlugin
-function memberExpressionToPathString(path) {
-	if (path && path.object) {
-		return [memberExpressionToPathString(path.object), path.property.name].join(
-			"."
-		);
-	}
-	return path.name;
-}
-
-// Convert Array<string> like ['webpack', 'optimize', 'DedupePlugin'] to nested MemberExpressions
-function pathsToMemberExpression(j, paths) {
-	if (!paths.length) {
-		return null;
-	} else if (paths.length === 1) {
-		return j.identifier(paths[0]);
-	} else {
-		const first = paths.slice(0, 1);
-		const rest = paths.slice(1);
-		return j.memberExpression(
-			pathsToMemberExpression(j, rest),
-			pathsToMemberExpression(j, first)
-		);
-	}
-}
-
-/**
- *
- * Find paths that match `new name.space.PluginName()` for a
- * given array of plugin names
- *
- * @param {any} j — jscodeshift API
- * @param {Node} node - Node to start search from
- * @param {String[]} pluginNamesArray - Array of plugin names like `webpack.LoaderOptionsPlugin`
- * @returns {Node} Node that has the pluginName
- */
-
-function findPluginsByName(j, node, pluginNamesArray) {
-	return node.find(j.NewExpression).filter(path => {
-		return pluginNamesArray.some(
-			plugin =>
-				memberExpressionToPathString(path.get("callee").value) === plugin
-		);
-	});
-}
-
-/**
- *
- * Finds the path to the `name: []` node
- *
- * @param {any} j — jscodeshift API
- * @param {Node} node - Node to start search from
- * @param {String} propName - property to search for
- * @returns {Node} found node and
- */
-
-function findRootNodesByName(j, node, propName) {
-	return node.find(j.Property, { key: { name: propName } });
-}
-
-/**
- *
- * Creates an Object's property with a given key and value
- *
- * @param {any} j — jscodeshift API
- * @param {String | Number} key - Property key
- * @param {String | Number | Boolean} value - Property value
- * @returns {Node}
- */
-
-function createProperty(j, key, value) {
-	return j.property(
-		"init",
-		createIdentifierOrLiteral(j, key),
-		createLiteral(j, value)
-	);
-}
-
-/**
- *
- * Creates an appropriate literal property
- *
- * @param {any} j — jscodeshift API
- * @param {String | Boolean | Number} val
- * @returns {Node}
- */
-
-function createLiteral(j, val) {
-	let literalVal = val;
-	// We'll need String to native type conversions
-	if (typeof val === "string") {
-		// 'true' => true
-		if (val === "true") literalVal = true;
-		// 'false' => false
-		if (val === "false") literalVal = false;
-		// '1' => 1
-		if (!isNaN(Number(val))) literalVal = Number(val);
-	}
-	return j.literal(literalVal);
-}
-
-/**
- *
- * Creates an appropriate identifier or literal property
- *
- * @param {any} j — jscodeshift API
- * @param {String | Boolean | Number} val
- * @returns {Node}
- */
-
-function createIdentifierOrLiteral(j, val) {
-	// IPath<IIdentifier> | IPath<ILiteral> doesn't work, find another way
-	let literalVal = val;
-	// We'll need String to native type conversions
-	if (typeof val === "string" || val.__paths) {
-		// 'true' => true
-		if (val === "true") {
-			literalVal = true;
-			return j.literal(literalVal);
-		}
-		// 'false' => false
-		if (val === "false") {
-			literalVal = false;
-			return j.literal(literalVal);
-		}
-		// '1' => 1
-		if (!isNaN(Number(val))) {
-			literalVal = Number(val);
-			return j.literal(literalVal);
-		}
-
-		if (val.__paths) {
-			return createExternalRegExp(j, val);
-		} else {
-			// Use identifier instead
-			// TODO: Check if literalVal is a valid Identifier!
-			return j.identifier(literalVal);
-		}
-	}
-	return j.literal(literalVal);
-}
-
-/**
- *
- * Finds or creates a node for a given plugin name string with options object
- * If plugin declaration already exist, options are merged.
- *
- * @param {any} j — jscodeshift API
- * @param {Node} rootNodePath - `plugins: []` NodePath where plugin should be added. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
- * @param {String} pluginName - ex. `webpack.LoaderOptionsPlugin`
- * @param {Object} options - plugin options
- * @returns {Void}
- */
-
-function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) {
-	const pluginInstancePath = findPluginsByName(j, j(rootNodePath), [
-		pluginName
-	]);
-	let optionsProps;
-	if (options) {
-		optionsProps = Object.keys(options).map(key => {
-			return createProperty(j, key, options[key]);
-		});
-	}
-
-	// If plugin declaration already exist
-	if (pluginInstancePath.size()) {
-		pluginInstancePath.forEach(path => {
-			// There are options we want to pass as argument
-			if (optionsProps) {
-				const args = path.value.arguments;
-				if (args.length) {
-					// Plugin is called with object as arguments
-					// we will merge those objects
-					let currentProps = j(path)
-						.find(j.ObjectExpression)
-						.get("properties");
-
-					optionsProps.forEach(opt => {
-						// Search for same keys in the existing object
-						const existingProps = j(currentProps)
-							.find(j.Identifier)
-							.filter(path => opt.key.value === path.value.name);
-
-						if (existingProps.size()) {
-							// Replacing values for the same key
-							existingProps.forEach(path => {
-								j(path.parent).replaceWith(opt);
-							});
-						} else {
-							// Adding new key:values
-							currentProps.value.push(opt);
-						}
-					});
-				} else {
-					// Plugin is called without arguments
-					args.push(j.objectExpression(optionsProps));
-				}
-			}
-		});
-	} else {
-		let argumentsArray = [];
-		if (optionsProps) {
-			argumentsArray = [j.objectExpression(optionsProps)];
-		}
-		const loaderPluginInstance = j.newExpression(
-			pathsToMemberExpression(j, pluginName.split(".").reverse()),
-			argumentsArray
-		);
-		rootNodePath.value.elements.push(loaderPluginInstance);
-	}
-}
-
-/**
- *
- * Finds the variable to which a third party plugin is assigned to
- *
- * @param {any} j — jscodeshift API
- * @param {Node} rootNode - `plugins: []` Root Node. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
- * @param {String} pluginPackageName - ex. `extract-text-plugin`
- * @returns {String} variable name - ex. 'const s = require(s) gives "s"`
- */
-
-function findVariableToPlugin(j, rootNode, pluginPackageName) {
-	const moduleVarNames = rootNode
-		.find(j.VariableDeclarator)
-		.filter(j.filters.VariableDeclarator.requiresModule(pluginPackageName))
-		.nodes();
-	if (moduleVarNames.length === 0) return null;
-	return moduleVarNames.pop().id.name;
-}
-
-/**
- *
- * Returns true if type is given type
- * @param {Node} path - pathNode
- * @param {String} type - node type
- * @returns {Boolean}
- */
-
-function isType(path, type) {
-	return path.type === type;
-}
-
-function findObjWithOneOfKeys(p, keyNames) {
-	return p.value.properties.reduce((predicate, prop) => {
-		const name = prop.key.name;
-		return keyNames.indexOf(name) > -1 || predicate;
-	}, false);
-}
-
-/**
- *
- * Returns constructed require symbol
- * @param {any} j — jscodeshift API
- * @param {String} constName - Name of require
- * @param {String} packagePath - path of required package
- * @returns {Node} - the created ast
- */
-
-function getRequire(j, constName, packagePath) {
-	return j.variableDeclaration("const", [
-		j.variableDeclarator(
-			j.identifier(constName),
-			j.callExpression(j.identifier("require"), [j.literal(packagePath)])
-		)
-	]);
-}
-
-/**
- *
- * If a prop exists, it overrides it, else it creates a new one
- * @param {any} j — jscodeshift API
- * @param {Node} node - objectexpression to check
- * @param {String} key - Key of the property
- * @param {String} value - computed value of the property
- * @returns {Void}
- */
-
-function checkIfExistsAndAddValue(j, node, key, value) {
-	const existingProp = node.value.properties.filter(
-		prop => prop.key.name === key
-	);
-	let prop;
-	if (existingProp.length > 0) {
-		prop = existingProp[0];
-		prop.value = value;
-	} else {
-		prop = j.property("init", j.identifier(key), value);
-		node.value.properties.push(prop);
-	}
-}
-
-/**
- *
- * Creates an empty array
- * @param {any} j — jscodeshift API
- * @param {String} key - array name
- * @returns {Array} arr - An empty array
- */
-function createEmptyArrayProperty(j, key) {
-	return j.property("init", j.identifier(key), j.arrayExpression([]));
-}
-
-/**
- *
- * Creates an array and iterates on an object with properties
- *
- * @param {any} j — jscodeshift API
- * @param {String} key - object name
- * @param {String} subProps - computed value of the property
- * @param {Boolean} shouldDropKeys - bool to ask to use obj.keys or not
- * @returns {Array} arr - An array with the object properties
- */
-
-function createArrayWithChildren(j, key, subProps, shouldDropKeys) {
-	let arr = createEmptyArrayProperty(j, key);
-	if (shouldDropKeys) {
-		subProps.forEach(subProperty => {
-			let objectOfArray = j.objectExpression([]);
-			if (typeof subProperty !== "string") {
-				loopThroughObjects(j, objectOfArray, subProperty);
-				arr.value.elements.push(objectOfArray);
-			} else {
-				return arr.value.elements.push(
-					createIdentifierOrLiteral(j, subProperty)
-				);
-			}
-		});
-	} else {
-		Object.keys(subProps[key]).forEach(subProperty => {
-			arr.value.elements.push(
-				createIdentifierOrLiteral(j, subProps[key][subProperty])
-			);
-		});
-	}
-	return arr;
-}
-
-/**
- *
- * Loops through an object and adds property to an object with no identifier
- * @param {any} j — jscodeshift API
- * @param {Node} p - node to add value to
- * @param {Object} obj - Object to loop through
- * @returns {Function | Node} - Either pushes the node, or reruns until
- * nothing is left
- */
-
-function loopThroughObjects(j, p, obj) {
-	Object.keys(obj).forEach(prop => {
-		if (prop.indexOf("inject") >= 0) {
-			// TODO to insert the type of node, identifier or literal
-			const propertyExpression = createIdentifierOrLiteral(j, obj[prop]);
-			return p.properties.push(propertyExpression);
-		}
-		// eslint-disable-next-line no-irregular-whitespace
-		if (typeof obj[prop] !== "object" || obj[prop] instanceof RegExp) {
-			p.properties.push(
-				createObjectWithSuppliedProperty(
-					j,
-					prop,
-					createIdentifierOrLiteral(j, obj[prop])
-				)
-			);
-		} else if (Array.isArray(obj[prop])) {
-			let arrayProp = createArrayWithChildren(j, prop, obj[prop], true);
-			p.properties.push(arrayProp);
-		} else {
-			let objectBlock = j.objectExpression([]);
-			let propertyOfBlock = createObjectWithSuppliedProperty(
-				j,
-				prop,
-				objectBlock
-			);
-			loopThroughObjects(j, objectBlock, obj[prop]);
-			p.properties.push(propertyOfBlock);
-		}
-	});
-}
-
-/**
- *
- * Creates an object with an supplied property as parameter
- *
- * @param {any} j — jscodeshift API
- * @param {String} key - object name
- * @param {Node} prop - property to be added
- * @returns {Node} - An property with the supplied property
- */
-
-function createObjectWithSuppliedProperty(j, key, prop) {
-	return j.property("init", j.identifier(key), prop);
-}
-
-/**
- *
- * Finds a regexp property with an already parsed AST from the user
- * @param {any} j — jscodeshift API
- * @param {String} prop - property to find the value at
- * @returns {Node} - A literal node with the found regexp
- */
-
-function createExternalRegExp(j, prop) {
-	let regExpProp = prop.__paths[0].value.program.body[0].expression;
-	return j.literal(regExpProp.value);
-}
-
-/**
- *
- * Creates a property and pushes the value to a node
- *
- * @param {any} j — jscodeshift API
- * @param {Node} p - Node to push against
- * @param {String} key - key used as identifier
- * @param {String} val - property value
- * @returns {Node} - Returns node the pushed property
- */
-
-function pushCreateProperty(j, p, key, val) {
-	let property;
-	const findProp = findRootNodesByName(j, j(p), key);
-	if (findProp.size()) {
-		findProp.filter(p => {
-			p.value.value = createIdentifierOrLiteral(j, val);
-		});
-	} else {
-		if (val.hasOwnProperty("type")) {
-			property = val;
-		} else {
-			property = createIdentifierOrLiteral(j, val);
-		}
-		return p.value.properties.push(
-			createObjectWithSuppliedProperty(j, key, property)
-		);
-	}
-}
-
-/**
- *
- * @param {any} j — jscodeshift API
- * @param {Node} p - path to push
- * @param {Object} webpackProperties - The object to loop over
- * @param {String} name - Key that will be the identifier we find and add values to
- * @returns {Node | Function} Returns a function that will push a node if
- * subProperty is an array, else it will invoke a function that will push a single node
- */
-
-function pushObjectKeys(j, p, webpackProperties, name, reassign) {
-	p.value.properties
-		.filter(n => safeTraverse(n, ["key", "name"]) === name)
-		.forEach(prop => {
-			Object.keys(webpackProperties).forEach(webpackProp => {
-				try {
-					webpackProperties[webpackProp] = JSON.parse(
-						webpackProperties[webpackProp]
-					);
-				} catch (err) {}
-
-				if (webpackProp.indexOf("inject") >= 0) {
-					if (reassign) {
-						return checkIfExistsAndAddValue(
-							j,
-							prop,
-							webpackProp,
-							webpackProperties[webpackProp]
-						);
-					} else {
-						return prop.value.properties.push(
-							createIdentifierOrLiteral(j, webpackProperties[webpackProp])
-						);
-					}
-				} else if (Array.isArray(webpackProperties[webpackProp])) {
-					if (reassign) {
-						return j(p)
-							.find(j.Property, { key: { name: webpackProp } })
-							.filter(props => props.value.key.name === webpackProp)
-							.forEach(property => {
-								let markedProps = [];
-								let propsToMerge = [];
-								property.value.value.elements.forEach(elem => {
-									if (elem.value) {
-										markedProps.push(elem.value);
-									}
-								});
-								webpackProperties[webpackProp].forEach(underlyingprop => {
-									if (typeof underlyingprop === "object") {
-										//TODO loaders
-										return;
-									}
-									if (!markedProps.includes(underlyingprop)) {
-										propsToMerge.push(underlyingprop);
-									}
-								});
-								const hashtableForProps = hashtable(propsToMerge);
-								hashtableForProps.forEach(elem => {
-									property.value.value.elements.push(
-										createIdentifierOrLiteral(j, elem)
-									);
-								});
-							});
-					} else {
-						const propArray = createArrayWithChildren(
-							j,
-							webpackProp,
-							webpackProperties[webpackProp],
-							true
-						);
-						return prop.value.properties.push(propArray);
-					}
-				} else if (
-					typeof webpackProperties[webpackProp] !== "object" ||
-					webpackProperties[webpackProp].__paths ||
-					webpackProperties[webpackProp] instanceof RegExp
-				) {
-					return pushCreateProperty(
-						j,
-						prop,
-						webpackProp,
-						webpackProperties[webpackProp]
-					);
-				} else {
-					if (!reassign) {
-						pushCreateProperty(j, prop, webpackProp, j.objectExpression([]));
-					}
-					return pushObjectKeys(
-						j,
-						prop,
-						webpackProperties[webpackProp],
-						webpackProp,
-						reassign
-					);
-				}
-			});
-		});
-}
-
-/**
- *
- * Checks if we are at the correct node and later invokes a callback
- * for the transforms to either use their own transform function or
- * use pushCreateProperty if the transform doesn't expect any properties
- *
- * @param {any} j — jscodeshift API
- * @param {Node} p - Node to push against
- * @param {Function} cb - callback to be invoked
- * @param {String} identifier - key to use as property
- * @param {Object} property - WebpackOptions that later will be converted via
- * pushCreateProperty via WebpackOptions[identifier]
- * @returns {Function} cb - Returns the callback and pushes a new node
- */
-
-function isAssignment(j, p, cb, identifier, property) {
-	if (p.parent.value.type === "AssignmentExpression") {
-		if (j) {
-			return cb(j, p, identifier, property);
-		} else {
-			return cb(p);
-		}
-	}
-}
-
-/**
- *
- * Creates a function call with arguments
- * @param {any} j — jscodeshift API
- * @param {Node} p - Node to push against
- * @param {String} name - Name for the given function
- * @returns {Node} -  Returns the node for the created
- * function
- */
-
-function createFunctionWithArguments(j, p, name) {
-	if (typeof name === "object") {
-		let node;
-		Object.keys(name).forEach(key => {
-			const pluginExist = findPluginsByName(j, j(p), [key]);
-			if (pluginExist.size() !== 0) {
-				let pluginName =
-					key.indexOf("webpack") >= 0
-						? key.indexOf("webpack.optimize") >= 0
-							? key.replace("webpack.optimize.", " ")
-							: key.replace("webpack.", " ")
-						: key;
-				pluginExist
-					.filter(
-						p => pluginName.trim(" ") === p.value.callee.property.name.trim(" ")
-					)
-					.forEach(n => {
-						Object.keys(name[key]).forEach(subKey => {
-							const foundNode = findRootNodesByName(j, j(n), subKey);
-							if (foundNode.size() !== 0) {
-								foundNode.forEach(n => {
-									j(n).replaceWith(
-										createObjectWithSuppliedProperty(
-											j,
-											subKey,
-											createIdentifierOrLiteral(j, name[key][subKey])
-										)
-									);
-									node = createObjectWithSuppliedProperty(
-										j,
-										subKey,
-										createIdentifierOrLiteral(j, name[key][subKey])
-									);
-								});
-							} else {
-								const method = j.property(
-									"init",
-									createLiteral(j, subKey),
-									createIdentifierOrLiteral(j, name[key][subKey])
-								);
-								n.value.arguments[0].properties.push(method);
-								node = null;
-								//node.arguments.push(j.objectExpression([method]));
-							}
-						});
-					});
-				return node;
-			}
-			node = j.newExpression(j.identifier(key), []);
-			return Object.keys(name[key]).forEach(subKey => {
-				const method = createObjectWithSuppliedProperty(
-					j,
-					subKey,
-					createIdentifierOrLiteral(j, name[key][subKey])
-				);
-				node.arguments.push(j.objectExpression([method]));
-			});
-		});
-		return node;
-	}
-	return j.callExpression(j.identifier(name), [
-		j.literal("/* Add your arguments here */")
-	]);
-}
-
-module.exports = {
-	safeTraverse,
-	createProperty,
-	findPluginsByName,
-	findRootNodesByName,
-	createOrUpdatePluginByName,
-	findVariableToPlugin,
-	isType,
-	createLiteral,
-	createIdentifierOrLiteral,
-	findObjWithOneOfKeys,
-	getRequire,
-	checkIfExistsAndAddValue,
-	createArrayWithChildren,
-	createEmptyArrayProperty,
-	createObjectWithSuppliedProperty,
-	createExternalRegExp,
-	createFunctionWithArguments,
-	pushCreateProperty,
-	pushObjectKeys,
-	isAssignment,
-	loopThroughObjects
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_copy-utils.js.html b/docs/utils_copy-utils.js.html deleted file mode 100644 index 4aae302ca3b..00000000000 --- a/docs/utils_copy-utils.js.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - JSDoc: Source: utils/copy-utils.js - - - - - - - - - - -
- -

Source: utils/copy-utils.js

- - - - - - -
-
-
const path = require("path");
-
-/**
- * Takes in a file path in the `./templates` directory. Copies that
- * file to the destination, with the `.tpl` extension stripped.
- *
- * @param {Generator} generator A Yeoman Generator instance
- * @param {string} templateDir Absolute path to template directory
- * @returns {Function} A curried function that takes a file path and copies it
- */
-const generatorCopy = (
-	generator,
-	templateDir
-) => /** @param {string} filePath */ filePath => {
-	const sourceParts = templateDir.split(path.delimiter);
-	sourceParts.push.apply(sourceParts, filePath.split("/"));
-	const targetParts = path.dirname(filePath).split("/");
-	targetParts.push(path.basename(filePath, ".tpl"));
-
-	generator.fs.copy(
-		path.join.apply(null, sourceParts),
-		generator.destinationPath(path.join.apply(null, targetParts))
-	);
-};
-
-/**
- * Takes in a file path in the `./templates` directory. Copies that
- * file to the destination, with the `.tpl` extension and `_` prefix
- * stripped. Passes `this.props` to the template.
- *
- * @param {Generator} generator A Yeoman Generator instance
- * @param {string} templateDir Absolute path to template directory
- * @param {any} templateData An object containing the data passed to
- * the template files.
- * @returns {Function} A curried function that takes a file path and copies it
- */
-const generatorCopyTpl = (
-	generator,
-	templateDir,
-	templateData
-) => /** @param {string} filePath */ filePath => {
-	const sourceParts = templateDir.split(path.delimiter);
-	sourceParts.push.apply(sourceParts, filePath.split("/"));
-	const targetParts = path.dirname(filePath).split("/");
-	targetParts.push(path.basename(filePath, ".tpl").slice(1));
-
-	generator.fs.copyTpl(
-		path.join.apply(null, sourceParts),
-		generator.destinationPath(path.join.apply(null, targetParts)),
-		templateData
-	);
-};
-
-module.exports = {
-	generatorCopy,
-	generatorCopyTpl
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_defineTest.js.html b/docs/utils_defineTest.js.html deleted file mode 100644 index 19b3120a4b3..00000000000 --- a/docs/utils_defineTest.js.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - JSDoc: Source: utils/defineTest.js - - - - - - - - - - -
- -

Source: utils/defineTest.js

- - - - - - -
-
-
"use strict";
-
-const fs = require("fs");
-const path = require("path");
-
-/**
- * Utility function to run a jscodeshift script within a unit test.
- * This makes several assumptions about the environment.
- *
- * Notes:
- * - The test should be located in a subdirectory next to the transform itself.
- *   Commonly tests are located in a directory called __tests__.
- *
- * - Test data should be located in a directory called __testfixtures__
- *   alongside the transform and __tests__ directory.
- * @param  {String} dirName          contains the name of the directory the test is located in. This
- *                                   should normally be passed via __dirname.
- * @param  {String} transformName    contains the filename of the transform being tested,
- *                                   excluding the .js extension.
- * @param  {String} [testFilePrefix] Optionally contains the name of the file with the test
- *                                   data. If not specified, it defaults to the same value as `transformName`.
- *                                   This will be suffixed with ".input.js" for the input file and ".output.js"
- *                                   for the expected output. For example, if set to "foo", we will read the
- *                                   "foo.input.js" file, pass this to the transform, and expect its output to
- *                                   be equal to the contents of "foo.output.js".
- * @param  {Object|Boolean|String} initOptions TBD
- * @param  {String} action init, update or remove, decides how to format the AST
- * @return {Function} Function that fires of the transforms
- */
-function runSingleTransform(
-	dirName,
-	transformName,
-	testFilePrefix,
-	initOptions,
-	action
-) {
-	if (!testFilePrefix) {
-		testFilePrefix = transformName;
-	}
-	const fixtureDir = path.join(dirName, "__testfixtures__");
-	const inputPath = path.join(fixtureDir, testFilePrefix + ".input.js");
-	const source = fs.readFileSync(inputPath, "utf8");
-	// Assumes transform and test are on the same level
-	const module = require(path.join(dirName, transformName + ".js"));
-	// Handle ES6 modules using default export for the transform
-	const transform = module.default ? module.default : module;
-
-	// Jest resets the module registry after each test, so we need to always get
-	// a fresh copy of jscodeshift on every test run.
-	let jscodeshift = require("jscodeshift/dist/core");
-	if (module.parser) {
-		jscodeshift = jscodeshift.withParser(module.parser);
-	}
-	const ast = jscodeshift(source);
-	if (initOptions || typeof initOptions === "boolean") {
-		return transform(jscodeshift, ast, initOptions, action).toSource({
-			quote: "single"
-		});
-	}
-	return transform(jscodeshift, ast, source, action).toSource({
-		quote: "single"
-	});
-}
-
-/**
- * Handles some boilerplate around defining a simple jest/Jasmine test for a
- * jscodeshift transform.
- * @param  {String} dirName          contains the name of the directory the test is located in. This
- *                                   should normally be passed via __dirname.
- * @param  {String} transformName    contains the filename of the transform being tested,
- *                                   excluding the .js extension.
- * @param  {String} [testFilePrefix] Optionally contains the name of the file with the test
- *                                   data. If not specified, it defaults to the same value as `transformName`.
- *                                   This will be suffixed with ".input.js" for the input file and ".output.js"
- *                                   for the expected output. For example, if set to "foo", we will read the
- *                                   "foo.input.js" file, pass this to the transform, and expect its output to
- *                                   be equal to the contents of "foo.output.js".
- * @param  {any} transformObject     Object to be transformed with the transformations
- * @param  {String} action init, update or remove, decides how to format the AST
- * @return {Void} Jest makes sure to execute the globally defined functions
- */
-function defineTest(
-	dirName,
-	transformName,
-	testFilePrefix,
-	transformObject,
-	action
-) {
-	const testName = testFilePrefix
-		? `transforms correctly using "${testFilePrefix}" data`
-		: "transforms correctly";
-	describe(transformName, () => {
-		it(testName, () => {
-			const output = runSingleTransform(
-				dirName,
-				transformName,
-				testFilePrefix,
-				transformObject,
-				action
-			);
-			expect(output).toMatchSnapshot();
-		});
-	});
-}
-module.exports = defineTest;
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_hashtable.js.html b/docs/utils_hashtable.js.html deleted file mode 100644 index 160250596f8..00000000000 --- a/docs/utils_hashtable.js.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - JSDoc: Source: utils/hashtable.js - - - - - - - - - - -
- -

Source: utils/hashtable.js

- - - - - - -
-
-
/**
- * Combined hashtable that sorts duplicate elements
- * https://stackoverflow.com/questions/9229645/remove-duplicate-values-from-js-array
- *
- * @param {Array} a Array to lookup
- * @returns {Array} A sorted array with removed dupe elements
- */
-module.exports = function hashtable(a) {
-	const prims = { boolean: {}, number: {}, string: {} },
-		objs = [];
-
-	return a.filter(function(item) {
-		const type = typeof item;
-		if (type in prims)
-			return prims[type].hasOwnProperty(item)
-				? false
-				: (prims[type][item] = true);
-		else return objs.indexOf(item) >= 0 ? false : objs.push(item);
-	});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_is-local-path.js.html b/docs/utils_is-local-path.js.html deleted file mode 100644 index a33ef6659a4..00000000000 --- a/docs/utils_is-local-path.js.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - JSDoc: Source: utils/is-local-path.js - - - - - - - - - - -
- -

Source: utils/is-local-path.js

- - - - - - -
-
-
"use strict";
-
-const fs = require("fs");
-const path = require("path");
-
-/**
- * Attempts to detect whether the string is a local path regardless of its
- * existence by checking its format. The point is to distinguish between
- * paths and modules on the npm registry. This will fail for non-existent
- * local Windows paths that begin with a drive letter, e.g. C:..\generator.js,
- * but will succeed for any existing files and any absolute paths.
- *
- * @param {String} str - string to check
- * @returns {Boolean} whether the string could be a path to a local file or directory
- */
-
-module.exports = function(str) {
-	return path.isAbsolute(str) || /^\./.test(str) || fs.existsSync(str);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_modify-config-helper.js.html b/docs/utils_modify-config-helper.js.html deleted file mode 100644 index 21fa08ce483..00000000000 --- a/docs/utils_modify-config-helper.js.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - JSDoc: Source: utils/modify-config-helper.js - - - - - - - - - - -
- -

Source: utils/modify-config-helper.js

- - - - - - -
-
-
"use strict";
-
-const fs = require("fs");
-const path = require("path");
-const chalk = require("chalk");
-const yeoman = require("yeoman-environment");
-const runTransform = require("../init/index");
-const Generator = require("yeoman-generator");
-
-/**
- *
- * Looks up the webpack.config in the user's path and runs a given
- * generator scaffold followed up by a transform
- *
- * @param {String} action — action to be done (add, remove, update, init)
- * @param {Class} name - Name for the given function
- * @returns {Function} runTransform - Returns a transformation instance
- */
-
-module.exports = function modifyHelperUtil(action, generator, packages) {
-	let configPath = path.resolve(process.cwd(), "webpack.config.js");
-	const webpackConfigExists = fs.existsSync(configPath);
-	if (!webpackConfigExists) {
-		configPath = null;
-	}
-	const env = yeoman.createEnv("webpack", null);
-	const generatorName = `webpack-${action}-generator`;
-
-	if (!generator) {
-		generator = class extends Generator {
-			initializing() {
-				packages.forEach(pkgPath => {
-					return this.composeWith(require.resolve(pkgPath));
-				});
-			}
-		};
-	}
-	env.registerStub(generator, generatorName);
-
-	env.run(generatorName).on("end", () => {
-		let configModule;
-		try {
-			const configPath = path.resolve(process.cwd(), ".yo-rc.json");
-			configModule = require(configPath);
-			// Change structure of the config to be transformed
-			let tmpConfig = {};
-			Object.keys(configModule).forEach(prop => {
-				const configs = Object.keys(configModule[prop].configuration);
-				configs.forEach(config => {
-					tmpConfig[config] = configModule[prop].configuration[config];
-				});
-			});
-			configModule = tmpConfig;
-		} catch (err) {
-			console.error(
-				chalk.red("\nCould not find a yeoman configuration file.\n")
-			);
-			console.error(
-				chalk.red(
-					"\nPlease make sure to use 'this.config.set('configuration', this.configuration);' at the end of the generator.\n"
-				)
-			);
-			Error.stackTraceLimit = 0;
-			process.exitCode = -1;
-		}
-		const config = Object.assign(
-			{
-				configFile: !configPath ? null : fs.readFileSync(configPath, "utf8"),
-				configPath: configPath
-			},
-			configModule
-		);
-		return runTransform(config, action);
-	});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_npm-exists.js.html b/docs/utils_npm-exists.js.html deleted file mode 100644 index c93f7a77d2d..00000000000 --- a/docs/utils_npm-exists.js.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - JSDoc: Source: utils/npm-exists.js - - - - - - - - - - -
- -

Source: utils/npm-exists.js

- - - - - - -
-
-
"use strict";
-
-const got = require("got");
-const constant = value => _ => value;
-
-/**
- *
- * Checks if the given dependency/module is registered on npm
- *
- * @param {String} moduleName - The dependency to be checked
- * @returns {Promise} constant - Returns either true or false,
- * based on if it exists or not
- */
-
-module.exports = function npmExists(moduleName) {
-	const hostname = "https://www.npmjs.org";
-	const pkgUrl = `${hostname}/package/${moduleName}`;
-	return got(pkgUrl, {
-		method: "HEAD"
-	})
-		.then(constant(true))
-		.catch(constant(false));
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_npm-packages-exists.js.html b/docs/utils_npm-packages-exists.js.html deleted file mode 100644 index 8ac97216255..00000000000 --- a/docs/utils_npm-packages-exists.js.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - JSDoc: Source: utils/npm-packages-exists.js - - - - - - - - - - -
- -

Source: utils/npm-packages-exists.js

- - - - - - -
-
-
"use strict";
-const chalk = require("chalk");
-const isLocalPath = require("./is-local-path");
-const npmExists = require("./npm-exists");
-const resolvePackages = require("./resolve-packages").resolvePackages;
-
-const WEBPACK_ADDON_PREFIX = "webpack-addons";
-
-/**
- *
- * Loops through an array and checks if a package is registered
- * on npm and throws an error if it is not.
- *
- * @param {String[]} pkg - Array of packages to check existence of
- * @returns {Array} resolvePackages - Returns an process to install the packages
- */
-
-module.exports = function npmPackagesExists(pkg) {
-	let acceptedPackages = [];
-
-	function resolvePackagesIfReady() {
-		if (acceptedPackages.length === pkg.length)
-			return resolvePackages(acceptedPackages);
-	}
-
-	pkg.forEach(addon => {
-		if (isLocalPath(addon)) {
-			// If the addon is a path to a local folder, no name validation is necessary.
-			acceptedPackages.push(addon);
-			resolvePackagesIfReady();
-			return;
-		}
-
-		// The addon is on npm; validate name and existence
-		if (
-			addon.length <= WEBPACK_ADDON_PREFIX.length ||
-			addon.slice(0, WEBPACK_ADDON_PREFIX.length) !== WEBPACK_ADDON_PREFIX
-		) {
-			throw new TypeError(
-				chalk.bold(`${addon} isn't a valid name.\n`) +
-					chalk.red(
-						`\nIt should be prefixed with '${WEBPACK_ADDON_PREFIX}', but have different suffix.\n`
-					)
-			);
-		}
-
-		npmExists(addon)
-			.then(moduleExists => {
-				if (!moduleExists) {
-					Error.stackTraceLimit = 0;
-					throw new TypeError(`Cannot resolve location of package ${addon}.`);
-				}
-				if (moduleExists) {
-					acceptedPackages.push(addon);
-				}
-			})
-			.catch(err => {
-				console.error(err.stack || err);
-				process.exit(0);
-			})
-			.then(resolvePackagesIfReady);
-	});
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_package-manager.js.html b/docs/utils_package-manager.js.html deleted file mode 100644 index 4f92cb5a8ff..00000000000 --- a/docs/utils_package-manager.js.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - JSDoc: Source: utils/package-manager.js - - - - - - - - - - -
- -

Source: utils/package-manager.js

- - - - - - -
-
-
"use strict";
-
-const path = require("path");
-const fs = require("fs");
-const spawn = require("cross-spawn");
-const globalPath = require("global-modules");
-
-const SPAWN_FUNCTIONS = {
-	npm: spawnNPM,
-	yarn: spawnYarn
-};
-
-/**
- *
- * Spawns a new process using npm
- *
- * @param {String} pkg - The dependency to be installed
- * @param {Boolean} isNew - indicates if it needs to be updated or installed
- * @returns {Function} spawn - Installs the package
- */
-
-function spawnNPM(pkg, isNew) {
-	return spawn.sync("npm", [isNew ? "install" : "update", "-g", pkg], {
-		stdio: "inherit"
-	});
-}
-
-/**
- *
- * Spawns a new process using yarn
- *
- * @param {String} pkg - The dependency to be installed
- * @param {Boolean} isNew - indicates if it needs to be updated or installed
- * @returns {Function} spawn - Installs the package
- */
-
-function spawnYarn(pkg, isNew) {
-	return spawn.sync("yarn", ["global", isNew ? "add" : "upgrade", pkg], {
-		stdio: "inherit"
-	});
-}
-/**
- *
- * Spawns a new process that installs the addon/dependency
- *
- * @param {String} pkg - The dependency to be installed
- * @returns {Function} spawn - Installs the package
- */
-
-function spawnChild(pkg) {
-	const rootPath = getPathToGlobalPackages();
-	const pkgPath = path.resolve(rootPath, pkg);
-	const packageManager = getPackageManager();
-	const isNew = !fs.existsSync(pkgPath);
-
-	return SPAWN_FUNCTIONS[packageManager](pkg, isNew);
-}
-
-/**
- *
- * Returns the name of package manager to use,
- * preferring yarn over npm if available
- *
- * @returns {String} - The package manager name
- */
-
-function getPackageManager() {
-	if (spawn.sync("yarn", [" --version"], { stdio: "ignore" }).error) {
-		return "npm";
-	}
-
-	return "yarn";
-}
-
-/**
- *
- * Returns the path to globally installed
- * npm packages, depending on the available
- * package manager determined by `getPackageManager`
- *
- * @returns {String} path - Path to global node_modules folder
- */
-function getPathToGlobalPackages() {
-	const manager = getPackageManager();
-
-	if (manager === "yarn") {
-		try {
-			const yarnDir = spawn
-				.sync("yarn", ["global", "dir"])
-				.stdout.toString()
-				.trim();
-			return path.join(yarnDir, "node_modules");
-		} catch (e) {
-			// Default to the global npm path below
-		}
-	}
-
-	return globalPath;
-}
-
-module.exports = {
-	getPackageManager,
-	getPathToGlobalPackages,
-	spawnChild
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_prop-types.js.html b/docs/utils_prop-types.js.html deleted file mode 100644 index 1df6d2af6ae..00000000000 --- a/docs/utils_prop-types.js.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - JSDoc: Source: utils/prop-types.js - - - - - - - - - - -
- -

Source: utils/prop-types.js

- - - - - - -
-
-
/**
- *
- * A Set of all accepted properties
- *
- * @returns {Set} A new set with accepted webpack properties
- */
-
-module.exports = new Set([
-	"context",
-	"devServer",
-	"devtool",
-	"entry",
-	"externals",
-	"module",
-	"node",
-	"output",
-	"performance",
-	"plugins",
-	"resolve",
-	"target",
-	"watch",
-	"watchOptions",
-	"stats",
-	"mode",
-	"amd",
-	"bail",
-	"cache",
-	"profile",
-	"merge",
-	"parallelism",
-	"recordsInputPath",
-	"recordsOutputPath",
-	"recordsPath",
-	"resolveLoader"
-]);
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_resolve-packages.js.html b/docs/utils_resolve-packages.js.html deleted file mode 100644 index 52768bf6878..00000000000 --- a/docs/utils_resolve-packages.js.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - JSDoc: Source: utils/resolve-packages.js - - - - - - - - - - -
- -

Source: utils/resolve-packages.js

- - - - - - -
-
-
"use strict";
-
-const path = require("path");
-const chalk = require("chalk");
-
-const modifyConfigHelper = require("./modify-config-helper");
-
-const getPathToGlobalPackages = require("./package-manager")
-	.getPathToGlobalPackages;
-const isLocalPath = require("./is-local-path");
-const spawnChild = require("./package-manager").spawnChild;
-
-/**
- *
- * Attaches a promise to the installation of the package
- *
- * @param {Function} child - The function to attach a promise to
- * @returns {Promise} promise - Returns a promise to the installation
- */
-
-function processPromise(child) {
-	return new Promise(function(resolve, reject) {
-		//eslint-disable-line
-		if (child.status !== 0) {
-			reject();
-		} else {
-			resolve();
-		}
-	});
-}
-
-/**
- *
- * Resolves and installs the packages, later sending them to @creator
- *
- * @param {String[]} pkg - The dependencies to be installed
- * @returns {Function|Error} creator - Builds
- * a webpack configuration through yeoman or throws an error
- */
-
-function resolvePackages(pkg) {
-	Error.stackTraceLimit = 30;
-
-	let packageLocations = [];
-
-	function invokeGeneratorIfReady() {
-		if (packageLocations.length === pkg.length)
-			return modifyConfigHelper("init", null, packageLocations);
-	}
-
-	pkg.forEach(addon => {
-		// Resolve paths to modules on local filesystem
-		if (isLocalPath(addon)) {
-			let absolutePath = addon;
-
-			try {
-				absolutePath = path.resolve(process.cwd(), addon);
-				require.resolve(absolutePath);
-				packageLocations.push(absolutePath);
-			} catch (err) {
-				console.log(`Cannot find a generator at ${absolutePath}.`);
-				console.log("\nReason:\n");
-				console.error(chalk.bold.red(err));
-				process.exitCode = 1;
-			}
-
-			invokeGeneratorIfReady();
-			return;
-		}
-
-		// Resolve modules on npm registry
-		processPromise(spawnChild(addon))
-			.then(_ => {
-				try {
-					const globalPath = getPathToGlobalPackages();
-					packageLocations.push(path.resolve(globalPath, addon));
-				} catch (err) {
-					console.log("Package wasn't validated correctly..");
-					console.log("Submit an issue for", pkg, "if this persists");
-					console.log("\nReason: \n");
-					console.error(chalk.bold.red(err));
-					process.exitCode = 1;
-				}
-			})
-			.catch(err => {
-				console.log("Package couldn't be installed, aborting..");
-				console.log("\nReason: \n");
-				console.error(chalk.bold.red(err));
-				process.exitCode = 1;
-			})
-			.then(invokeGeneratorIfReady);
-	});
-}
-
-module.exports = {
-	resolvePackages,
-	processPromise
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/docs/utils_run-prettier.js.html b/docs/utils_run-prettier.js.html deleted file mode 100644 index 49ec136bed9..00000000000 --- a/docs/utils_run-prettier.js.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - JSDoc: Source: utils/run-prettier.js - - - - - - - - - - -
- -

Source: utils/run-prettier.js

- - - - - - -
-
-
"use strict";
-
-const prettier = require("prettier");
-const fs = require("fs");
-const chalk = require("chalk");
-
-/**
- *
- * Runs prettier and later prints the output configuration
- *
- * @param {String} outputPath - Path to write the config to
- * @param {Node} source - AST to write at the given path
- * @param {Function} cb - executes a callback after execution if supplied
- * @returns {Function} Writes a file at given location and prints messages accordingly
- */
-
-module.exports = function runPrettier(outputPath, source, cb) {
-	function validateConfig() {
-		let prettySource;
-		let error;
-		try {
-			prettySource = prettier.format(source, {
-				singleQuote: true,
-				useTabs: true,
-				tabWidth: 1
-			});
-		} catch (err) {
-			process.stdout.write(
-				"\n" +
-					chalk.yellow(
-						`WARNING: Could not apply prettier to ${outputPath}` +
-							" due validation error, but the file has been created\n"
-					)
-			);
-			prettySource = source;
-			error = err;
-		}
-		if (cb) {
-			return cb(error);
-		}
-		return fs.writeFileSync(outputPath, prettySource, "utf8");
-	}
-	return fs.writeFile(outputPath, source, "utf8", validateConfig);
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.5.5 on Sat Mar 10 2018 01:28:11 GMT+0100 (CET) -
- - - - - diff --git a/lib/ast/ast.test.js b/lib/ast/ast.test.js index 96e3fc299cb..320d84dbd4a 100644 --- a/lib/ast/ast.test.js +++ b/lib/ast/ast.test.js @@ -4,7 +4,6 @@ const defineTest = require("../utils/defineTest"); const propTypes = require("../utils/prop-types"); propTypes.forEach(prop => { - defineTest( __dirname, prop, diff --git a/lib/utils/__snapshots__/ast-utils.test.js.snap b/lib/utils/__snapshots__/ast-utils.test.js.snap index 7f4f8b579f6..96331a700a9 100644 --- a/lib/utils/__snapshots__/ast-utils.test.js.snap +++ b/lib/utils/__snapshots__/ast-utils.test.js.snap @@ -1,11 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`utils createArrayWithChildren should add props to a property 1`] = `"['bo']"`; - -exports[`utils createEmptyArrayProperty should create an array with no properties 1`] = `"its-lit: []"`; - -exports[`utils createExternalRegExp should create an regExp property that has been parsed by jscodeshift 1`] = `"\\"\\\\t\\""`; - exports[`utils createIdentifierOrLiteral should create basic literal 1`] = `"'stringLiteral'"`; exports[`utils createIdentifierOrLiteral should create boolean 1`] = `"true"`; @@ -68,9 +62,3 @@ exports[`utils createProperty should create properties for non-literal keys 1`] `; exports[`utils getRequire should create a require statement 1`] = `"const filesys = require(\\"fs\\");"`; - -exports[`utils pushObjectKeys should push object to an node using Object.keys 1`] = ` -"module.exports = { - pushMe: {} - }" -`; diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 20964c169cc..dd09399e967 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -143,7 +143,8 @@ function createIdentifierOrLiteral(j, val) { return j.literal(literalVal); } if (val.__paths) { - return createExternalRegExp(j, val); + let regExpVal = val.__paths[0].value.program.body[0].expression; + return j.literal(regExpVal.value); } else { // Use identifier instead // TODO: Check if literalVal is a valid Identifier! @@ -280,67 +281,6 @@ function getRequire(j, constName, packagePath) { ]); } -/** - * - * Creates an empty array - * @param {any} j — jscodeshift API - * @param {String} key - array name - * @returns {Array} arr - An empty array - */ -function createEmptyArrayProperty(j, key) { - return j.property("init", j.identifier(key), j.arrayExpression([])); -} - -/** - * - * Creates an array and iterates on an object with properties - * - * @param {any} j — jscodeshift API - * @param {String} key - object name - * @param {String} subProps - computed value of the property - * @param {Boolean} shouldDropKeys - bool to ask to use obj.keys or not - * @returns {Array} arr - An array with the object properties - */ - -function createArrayWithChildren(j, values) { - let arr = j.arrayExpression([]); - values.forEach(prop => { - return arr.elements.push(j(prop).toSource()); - }); - return arr; -} - -/** - * - * Finds a regexp property with an already parsed AST from the user - * @param {any} j — jscodeshift API - * @param {String} prop - property to find the value at - * @returns {Node} - A literal node with the found regexp - */ - -function createExternalRegExp(j, prop) { - let regExpProp = prop.__paths[0].value.program.body[0].expression; - return j.literal(regExpProp.value); -} - -/** - * - * @param {any} j — jscodeshift API - * @param {Node} p - path to push - * @param {Object} webpackProperties - The object to loop over - * @param {String} name - Key that will be the identifier we find and add values to - * @returns {Node | Function} Returns a function that will push a node if - * subProperty is an array, else it will invoke a function that will push a single node - */ - -function pushObjectKeys(j, p, values) { - let objExp = j.objectExpression([]); - Object.keys(values).forEach(prop => { - addProperty(j, objExp, prop, values[prop]); - }); - return objExp; -} - function addProperty(j, p, key, value) { let valForNode; if (!p) { @@ -397,9 +337,5 @@ module.exports = { createIdentifierOrLiteral, findObjWithOneOfKeys, getRequire, - createArrayWithChildren, - createEmptyArrayProperty, - createExternalRegExp, - pushObjectKeys, addProperty }; diff --git a/lib/utils/ast-utils.test.js b/lib/utils/ast-utils.test.js index af1a6f98825..618a128b6ae 100644 --- a/lib/utils/ast-utils.test.js +++ b/lib/utils/ast-utils.test.js @@ -186,49 +186,4 @@ const a = { plugs: [] } expect(j(require).toSource()).toMatchSnapshot(); }); }); - - describe("createArrayWithChildren", () => { - it("should add props to a property", () => { - const ast = j("{}"); - const arr = utils.createArrayWithChildren(j, ["'bo'"]); - ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); - describe("createEmptyArrayProperty", () => { - it("should create an array with no properties", () => { - const ast = j("{}"); - const arr = utils.createEmptyArrayProperty(j, "its-lit"); - ast.find(j.Program).forEach(node => j(node).replaceWith(arr)); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); - - describe("createExternalRegExp", () => { - it("should create an regExp property that has been parsed by jscodeshift", () => { - const ast = j("{}"); - const reg = j("'\t'"); - const prop = utils.createExternalRegExp(j, reg); - ast.find(j.Program).forEach(node => j(node).replaceWith(prop)); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); - describe("pushObjectKeys", () => { - it("should push object to an node using Object.keys", () => { - const ast = j(`module.exports = { - pushMe: {} - }`); - const webpackProperties = { - hello: { - world: { - its: "'great'" - } - } - }; - ast.find(j.ObjectExpression).forEach(node => { - utils.pushObjectKeys(j, node, webpackProperties, "pushMe"); - }); - expect(ast.toSource()).toMatchSnapshot(); - }); - }); }); From 6ff4248ed9d4b1773645c4875d45f6b610080336 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 20:01:52 +0200 Subject: [PATCH 12/17] chore(cli): remove unneded files --- docs/AddGenerator.html | 201 + docs/InitGenerator.html | 201 + docs/LoaderGenerator.html | 181 + docs/PluginGenerator.html | 181 + docs/commands_add.js.html | 67 + docs/commands_init.js.html | 73 + docs/commands_make.js.html | 63 + docs/commands_migrate.js.html | 203 + docs/commands_remove.js.html | 67 + docs/commands_serve.js.html | 224 + docs/commands_update.js.html | 67 + docs/fonts/OpenSans-Bold-webfont.eot | Bin 0 -> 19544 bytes docs/fonts/OpenSans-Bold-webfont.svg | 1830 +++++ docs/fonts/OpenSans-Bold-webfont.woff | Bin 0 -> 22432 bytes docs/fonts/OpenSans-BoldItalic-webfont.eot | Bin 0 -> 20133 bytes docs/fonts/OpenSans-BoldItalic-webfont.svg | 1830 +++++ docs/fonts/OpenSans-BoldItalic-webfont.woff | Bin 0 -> 23048 bytes docs/fonts/OpenSans-Italic-webfont.eot | Bin 0 -> 20265 bytes docs/fonts/OpenSans-Italic-webfont.svg | 1830 +++++ docs/fonts/OpenSans-Italic-webfont.woff | Bin 0 -> 23188 bytes docs/fonts/OpenSans-Light-webfont.eot | Bin 0 -> 19514 bytes docs/fonts/OpenSans-Light-webfont.svg | 1831 +++++ docs/fonts/OpenSans-Light-webfont.woff | Bin 0 -> 22248 bytes docs/fonts/OpenSans-LightItalic-webfont.eot | Bin 0 -> 20535 bytes docs/fonts/OpenSans-LightItalic-webfont.svg | 1835 +++++ docs/fonts/OpenSans-LightItalic-webfont.woff | Bin 0 -> 23400 bytes docs/fonts/OpenSans-Regular-webfont.eot | Bin 0 -> 19836 bytes docs/fonts/OpenSans-Regular-webfont.svg | 1831 +++++ docs/fonts/OpenSans-Regular-webfont.woff | Bin 0 -> 22660 bytes docs/generate-loader_index.js.html | 68 + docs/generate-plugin_index.js.html | 69 + docs/generators_add-generator.js.html | 501 ++ docs/generators_init-generator.js.html | 465 ++ docs/generators_loader-generator.js.html | 109 + docs/generators_plugin-generator.js.html | 90 + docs/generators_utils_entry.js.html | 141 + docs/generators_utils_module.js.html | 70 + docs/generators_utils_plugins.js.html | 65 + docs/generators_utils_tooltip.js.html | 107 + docs/generators_utils_validate.js.html | 68 + docs/generators_webpack-generator.js.html | 128 + docs/global.html | 6441 +++++++++++++++++ docs/index.html | 65 + docs/index.js.html | 111 + docs/init_index.js.html | 145 + .../migrate_bannerPlugin_bannerPlugin.js.html | 84 + ...xtractTextPlugin_extractTextPlugin.js.html | 109 + docs/migrate_index.js.html | 130 + ...rOptionsPlugin_loaderOptionsPlugin.js.html | 98 + docs/migrate_loaders_loaders.js.html | 430 ++ docs/migrate_outputPath_outputPath.js.html | 125 + ...tedPlugins_removeDeprecatedPlugins.js.html | 95 + ..._removeJsonLoader_removeJsonLoader.js.html | 120 + docs/migrate_resolve_resolve.js.html | 123 + ...rate_uglifyJsPlugin_uglifyJsPlugin.js.html | 84 + docs/scripts/linenumber.js | 25 + docs/scripts/prettify/Apache-License-2.0.txt | 202 + docs/scripts/prettify/lang-css.js | 2 + docs/scripts/prettify/prettify.js | 28 + docs/styles/jsdoc-default.css | 358 + docs/styles/prettify-jsdoc.css | 111 + docs/styles/prettify-tomorrow.css | 132 + docs/utils_ast-utils.js.html | 402 + docs/utils_copy-utils.js.html | 108 + docs/utils_defineTest.js.html | 168 + docs/utils_is-local-path.js.html | 70 + docs/utils_modify-config-helper.js.html | 126 + docs/utils_npm-exists.js.html | 74 + docs/utils_npm-packages-exists.js.html | 114 + docs/utils_package-manager.js.html | 155 + docs/utils_prop-types.js.html | 87 + docs/utils_resolve-packages.js.html | 149 + docs/utils_run-prettier.js.html | 95 + lib/utils/ast-utils.js | 10 + lib/utils/hashtable.js | 20 - 75 files changed, 24972 insertions(+), 20 deletions(-) create mode 100644 docs/AddGenerator.html create mode 100644 docs/InitGenerator.html create mode 100644 docs/LoaderGenerator.html create mode 100644 docs/PluginGenerator.html create mode 100644 docs/commands_add.js.html create mode 100644 docs/commands_init.js.html create mode 100644 docs/commands_make.js.html create mode 100644 docs/commands_migrate.js.html create mode 100644 docs/commands_remove.js.html create mode 100644 docs/commands_serve.js.html create mode 100644 docs/commands_update.js.html create mode 100644 docs/fonts/OpenSans-Bold-webfont.eot create mode 100644 docs/fonts/OpenSans-Bold-webfont.svg create mode 100644 docs/fonts/OpenSans-Bold-webfont.woff create mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.eot create mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.svg create mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.woff create mode 100644 docs/fonts/OpenSans-Italic-webfont.eot create mode 100644 docs/fonts/OpenSans-Italic-webfont.svg create mode 100644 docs/fonts/OpenSans-Italic-webfont.woff create mode 100644 docs/fonts/OpenSans-Light-webfont.eot create mode 100644 docs/fonts/OpenSans-Light-webfont.svg create mode 100644 docs/fonts/OpenSans-Light-webfont.woff create mode 100644 docs/fonts/OpenSans-LightItalic-webfont.eot create mode 100644 docs/fonts/OpenSans-LightItalic-webfont.svg create mode 100644 docs/fonts/OpenSans-LightItalic-webfont.woff create mode 100644 docs/fonts/OpenSans-Regular-webfont.eot create mode 100644 docs/fonts/OpenSans-Regular-webfont.svg create mode 100644 docs/fonts/OpenSans-Regular-webfont.woff create mode 100644 docs/generate-loader_index.js.html create mode 100644 docs/generate-plugin_index.js.html create mode 100644 docs/generators_add-generator.js.html create mode 100644 docs/generators_init-generator.js.html create mode 100644 docs/generators_loader-generator.js.html create mode 100644 docs/generators_plugin-generator.js.html create mode 100644 docs/generators_utils_entry.js.html create mode 100644 docs/generators_utils_module.js.html create mode 100644 docs/generators_utils_plugins.js.html create mode 100644 docs/generators_utils_tooltip.js.html create mode 100644 docs/generators_utils_validate.js.html create mode 100644 docs/generators_webpack-generator.js.html create mode 100644 docs/global.html create mode 100644 docs/index.html create mode 100644 docs/index.js.html create mode 100644 docs/init_index.js.html create mode 100644 docs/migrate_bannerPlugin_bannerPlugin.js.html create mode 100644 docs/migrate_extractTextPlugin_extractTextPlugin.js.html create mode 100644 docs/migrate_index.js.html create mode 100644 docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html create mode 100644 docs/migrate_loaders_loaders.js.html create mode 100644 docs/migrate_outputPath_outputPath.js.html create mode 100644 docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html create mode 100644 docs/migrate_removeJsonLoader_removeJsonLoader.js.html create mode 100644 docs/migrate_resolve_resolve.js.html create mode 100644 docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html create mode 100644 docs/scripts/linenumber.js create mode 100644 docs/scripts/prettify/Apache-License-2.0.txt create mode 100644 docs/scripts/prettify/lang-css.js create mode 100644 docs/scripts/prettify/prettify.js create mode 100644 docs/styles/jsdoc-default.css create mode 100644 docs/styles/prettify-jsdoc.css create mode 100644 docs/styles/prettify-tomorrow.css create mode 100644 docs/utils_ast-utils.js.html create mode 100644 docs/utils_copy-utils.js.html create mode 100644 docs/utils_defineTest.js.html create mode 100644 docs/utils_is-local-path.js.html create mode 100644 docs/utils_modify-config-helper.js.html create mode 100644 docs/utils_npm-exists.js.html create mode 100644 docs/utils_npm-packages-exists.js.html create mode 100644 docs/utils_package-manager.js.html create mode 100644 docs/utils_prop-types.js.html create mode 100644 docs/utils_resolve-packages.js.html create mode 100644 docs/utils_run-prettier.js.html delete mode 100644 lib/utils/hashtable.js diff --git a/docs/AddGenerator.html b/docs/AddGenerator.html new file mode 100644 index 00000000000..34c335f0770 --- /dev/null +++ b/docs/AddGenerator.html @@ -0,0 +1,201 @@ + + + + + JSDoc: Class: AddGenerator + + + + + + + + + + +
+ +

Class: AddGenerator

+ + + + + + +
+ +
+ +

AddGenerator() → {Void}

+ + +
+ +
+
+ + + + + + +

new AddGenerator() → {Void}

+ + + + + + +
+ Generator for adding properties +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ After execution, transforms are triggered +
+ + + +
+
+ Type +
+
+ +Void + + +
+
+ + + + + + + + +
+ + +

Extends

+ + + + +
    +
  • Generator
  • +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + \ No newline at end of file diff --git a/docs/InitGenerator.html b/docs/InitGenerator.html new file mode 100644 index 00000000000..1dc172759f7 --- /dev/null +++ b/docs/InitGenerator.html @@ -0,0 +1,201 @@ + + + + + JSDoc: Class: InitGenerator + + + + + + + + + + +
+ +

Class: InitGenerator

+ + + + + + +
+ +
+ +

InitGenerator() → {Void}

+ + +
+ +
+
+ + + + + + +

new InitGenerator() → {Void}

+ + + + + + +
+ Generator for initializing a webpack config +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ After execution, transforms are triggered +
+ + + +
+
+ Type +
+
+ +Void + + +
+
+ + + + + + + + +
+ + +

Extends

+ + + + +
    +
  • Generator
  • +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + \ No newline at end of file diff --git a/docs/LoaderGenerator.html b/docs/LoaderGenerator.html new file mode 100644 index 00000000000..ef603ed09d0 --- /dev/null +++ b/docs/LoaderGenerator.html @@ -0,0 +1,181 @@ + + + + + JSDoc: Class: LoaderGenerator + + + + + + + + + + +
+ +

Class: LoaderGenerator

+ + + + + + +
+ +
+ +

LoaderGenerator()

+ + +
+ +
+
+ + + + + + +

new LoaderGenerator()

+ + + + + + +
+ A yeoman generator class for creating a webpack +loader project. It adds some starter loader code +and runs `webpack-defaults`. +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ + +

Extends

+ + + + +
    +
  • Generator
  • +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + \ No newline at end of file diff --git a/docs/PluginGenerator.html b/docs/PluginGenerator.html new file mode 100644 index 00000000000..dddbf57179a --- /dev/null +++ b/docs/PluginGenerator.html @@ -0,0 +1,181 @@ + + + + + JSDoc: Class: PluginGenerator + + + + + + + + + + +
+ +

Class: PluginGenerator

+ + + + + + +
+ +
+ +

PluginGenerator()

+ + +
+ +
+
+ + + + + + +

new PluginGenerator()

+ + + + + + +
+ A yeoman generator class for creating a webpack +plugin project. It adds some starter plugin code +and runs `webpack-defaults`. +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ + +

Extends

+ + + + +
    +
  • Generator
  • +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + \ No newline at end of file diff --git a/docs/commands_add.js.html b/docs/commands_add.js.html new file mode 100644 index 00000000000..130a15eb196 --- /dev/null +++ b/docs/commands_add.js.html @@ -0,0 +1,67 @@ + + + + + JSDoc: Source: commands/add.js + + + + + + + + + + +
+ +

Source: commands/add.js

+ + + + + + +
+
+
"use strict";
+
+const defaultGenerator = require("../generators/add-generator");
+const modifyHelper = require("../utils/modify-config-helper");
+
+/**
+ * Is called and returns a scaffolding instance, adding properties
+ *
+ * @returns {Function} modifyHelper - A helper function that uses the action
+ * 	we're given on a generator
+ *
+ */
+
+module.exports = function add() {
+	return modifyHelper("add", defaultGenerator);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/commands_init.js.html b/docs/commands_init.js.html new file mode 100644 index 00000000000..294ed86bbc2 --- /dev/null +++ b/docs/commands_init.js.html @@ -0,0 +1,73 @@ + + + + + JSDoc: Source: commands/init.js + + + + + + + + + + +
+ +

Source: commands/init.js

+ + + + + + +
+
+
"use strict";
+
+const npmPackagesExists = require("../utils/npm-packages-exists");
+const defaultGenerator = require("../generators/init-generator");
+const modifyHelper = require("../utils/modify-config-helper");
+
+/**
+ *
+ * First function to be called after running the init flag. This is a check,
+ * if we are running the init command with no arguments or if we got dependencies
+ *
+ * @param {Object} pkg - packages included when running the init command
+ * @returns {Function} creator/npmPackagesExists - returns an installation of the package,
+ * followed up with a yeoman instance of that if there's packages. If not, it creates a defaultGenerator
+ */
+
+module.exports = function initializeInquirer(pkg) {
+	if (pkg.length === 0) {
+		return modifyHelper("init", defaultGenerator);
+	}
+	return npmPackagesExists(pkg);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/commands_make.js.html b/docs/commands_make.js.html new file mode 100644 index 00000000000..13f7d11cd83 --- /dev/null +++ b/docs/commands_make.js.html @@ -0,0 +1,63 @@ + + + + + JSDoc: Source: commands/make.js + + + + + + + + + + +
+ +

Source: commands/make.js

+ + + + + + +
+
+
"use strict";
+
+/**
+ * Is called and returns a scaffolding instance, adding properties
+ *
+ * @returns {Function} TBD
+ *
+ */
+
+module.exports = function make() {
+	return console.log("make me");
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/commands_migrate.js.html b/docs/commands_migrate.js.html new file mode 100644 index 00000000000..7823e26d52e --- /dev/null +++ b/docs/commands_migrate.js.html @@ -0,0 +1,203 @@ + + + + + JSDoc: Source: commands/migrate.js + + + + + + + + + + +
+ +

Source: commands/migrate.js

+ + + + + + +
+
+
"use strict";
+
+const fs = require("fs");
+const chalk = require("chalk");
+const diff = require("diff");
+const inquirer = require("inquirer");
+const PLazy = require("p-lazy");
+const Listr = require("listr");
+
+const validate = require("webpack").validate;
+const WebpackOptionsValidationError = require("webpack")
+	.WebpackOptionsValidationError;
+
+const runPrettier = require("../utils/run-prettier");
+
+/**
+*
+* Runs migration on a given configuration using AST's and promises
+* to sequentially transform a configuration file.
+*
+* @param {String} currentConfigPath - Location of the configuration to be migrated
+* @param {String} outputConfigPath - Location to where the configuration should be written
+* @param {Object} options - Any additional options regarding code style of the written configuration
+
+* @returns {Promise} Runs the migration using a promise that will throw any errors during each transform
+* or output if the user decides to abort the migration
+*/
+
+module.exports = function migrate(
+	currentConfigPath,
+	outputConfigPath,
+	options
+) {
+	const recastOptions = Object.assign(
+		{
+			quote: "single"
+		},
+		options
+	);
+	const tasks = new Listr([
+		{
+			title: "Reading webpack config",
+			task: ctx =>
+				new PLazy((resolve, reject) => {
+					fs.readFile(currentConfigPath, "utf8", (err, content) => {
+						if (err) {
+							reject(err);
+						}
+						try {
+							const jscodeshift = require("jscodeshift");
+							ctx.source = content;
+							ctx.ast = jscodeshift(content);
+							resolve();
+						} catch (err) {
+							reject("Error generating AST", err);
+						}
+					});
+				})
+		},
+		{
+			title: "Migrating config from v1 to v2",
+			task: ctx => {
+				const transformations = require("../migrate").transformations;
+				return new Listr(
+					Object.keys(transformations).map(key => {
+						const transform = transformations[key];
+						return {
+							title: key,
+							task: _ => transform(ctx.ast, ctx.source)
+						};
+					})
+				);
+			}
+		}
+	]);
+
+	tasks
+		.run()
+		.then(ctx => {
+			const result = ctx.ast.toSource(recastOptions);
+			const diffOutput = diff.diffLines(ctx.source, result);
+			diffOutput.forEach(diffLine => {
+				if (diffLine.added) {
+					process.stdout.write(chalk.green(`+ ${diffLine.value}`));
+				} else if (diffLine.removed) {
+					process.stdout.write(chalk.red(`- ${diffLine.value}`));
+				}
+			});
+			return inquirer
+				.prompt([
+					{
+						type: "confirm",
+						name: "confirmMigration",
+						message: "Are you sure these changes are fine?",
+						default: "Y"
+					}
+				])
+				.then(answers => {
+					if (answers["confirmMigration"]) {
+						return inquirer.prompt([
+							{
+								type: "confirm",
+								name: "confirmValidation",
+								message:
+									"Do you want to validate your configuration? " +
+									"(If you're using webpack merge, validation isn't useful)",
+								default: "Y"
+							}
+						]);
+					} else {
+						console.log(chalk.red("✖ Migration aborted"));
+					}
+				})
+				.then(answer => {
+					if (!answer) return;
+
+					runPrettier(outputConfigPath, result, err => {
+						if (err) {
+							throw err;
+						}
+					});
+
+					if (answer["confirmValidation"]) {
+						const webpackOptionsValidationErrors = validate(
+							require(outputConfigPath)
+						);
+						if (webpackOptionsValidationErrors.length) {
+							console.log(
+								chalk.red(
+									"\n✖ Your configuration validation wasn't successful \n"
+								)
+							);
+							console.error(
+								new WebpackOptionsValidationError(
+									webpackOptionsValidationErrors
+								).message
+							);
+						}
+					}
+					console.log(
+						chalk.green(
+							`\n ✔︎ New webpack v2 config file is at ${outputConfigPath}`
+						)
+					);
+				});
+		})
+		.catch(err => {
+			console.log(chalk.red("✖ ︎Migration aborted due to some errors"));
+			console.error(err);
+			process.exitCode = 1;
+		});
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/commands_remove.js.html b/docs/commands_remove.js.html new file mode 100644 index 00000000000..b2cb38459d2 --- /dev/null +++ b/docs/commands_remove.js.html @@ -0,0 +1,67 @@ + + + + + JSDoc: Source: commands/remove.js + + + + + + + + + + +
+ +

Source: commands/remove.js

+ + + + + + +
+
+
"use strict";
+
+const defaultGenerator = require("../generators/remove-generator");
+const modifyHelper = require("../utils/modify-config-helper");
+
+/**
+ * Is called and returns a scaffolding instance, removing properties
+ *
+ * @returns {Function} modifyHelper - A helper function that uses the action
+ * 	we're given on a generator
+ *
+ */
+
+module.exports = function() {
+	return modifyHelper("remove", defaultGenerator);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/commands_serve.js.html b/docs/commands_serve.js.html new file mode 100644 index 00000000000..60b272c73fb --- /dev/null +++ b/docs/commands_serve.js.html @@ -0,0 +1,224 @@ + + + + + JSDoc: Source: commands/serve.js + + + + + + + + + + +
+ +

Source: commands/serve.js

+ + + + + + +
+
+
"use strict";
+
+const inquirer = require("inquirer");
+const path = require("path");
+const chalk = require("chalk");
+const spawn = require("cross-spawn");
+const List = require("webpack-addons").List;
+const processPromise = require("../utils/resolve-packages").processPromise;
+
+/**
+ *
+ * Installs WDS using NPM with --save --dev etc
+ *
+ * @param {Object} cmd - arg to spawn with
+ * @returns {Void}
+ */
+
+const spawnNPMWithArg = cmd =>
+	spawn.sync("npm", ["install", "webpack-dev-server", cmd], {
+		stdio: "inherit"
+	});
+
+/**
+ *
+ * Installs WDS using Yarn with add etc
+ *
+ * @param {Object} cmd - arg to spawn with
+ * @returns {Void}
+ */
+
+const spawnYarnWithArg = cmd =>
+	spawn.sync("yarn", ["add", "webpack-dev-server", cmd], {
+		stdio: "inherit"
+	});
+
+/**
+ *
+ * Find the path of a given module
+ *
+ * @param {Object} dep - dependency to find
+ * @returns {String} string with given path
+ */
+
+const getRootPathModule = dep => path.resolve(process.cwd(), dep);
+
+/**
+ *
+ * Prompts for installing the devServer and running it
+ *
+ * @param {Object} args - args processed from the CLI
+ * @returns {Function} invokes the devServer API
+ */
+
+function serve() {
+	let packageJSONPath = getRootPathModule("package.json");
+	if (!packageJSONPath) {
+		console.log(
+			"\n",
+			chalk.red("✖ Could not find your package.json file"),
+			"\n"
+		);
+		process.exit(1);
+	}
+	let packageJSON = require(packageJSONPath);
+	/*
+	 * We gotta do this, cause some configs might not have devdep,
+	 * dep or optional dep, so we'd need sanity checks for each
+	*/
+	let hasDevServerDep = packageJSON
+		? Object.keys(packageJSON).filter(p => packageJSON[p]["webpack-dev-server"])
+		: [];
+
+	if (hasDevServerDep.length) {
+		let WDSPath = getRootPathModule(
+			"node_modules/webpack-dev-server/bin/webpack-dev-server.js"
+		);
+		if (!WDSPath) {
+			console.log(
+				"\n",
+				chalk.red(
+					"✖ Could not find the webpack-dev-server dependency in node_modules root path"
+				)
+			);
+			console.log(
+				chalk.bold.green(" ✔︎"),
+				"Try this command:",
+				chalk.bold.green("rm -rf node_modules && npm install")
+			);
+			process.exit(1);
+		}
+		return require(WDSPath);
+	} else {
+		process.stdout.write(
+			"\n" +
+				chalk.bold(
+					"✖ We didn't find any webpack-dev-server dependency in your project,"
+				) +
+				"\n" +
+				chalk.bold.green("  'webpack serve'") +
+				" " +
+				chalk.bold("requires you to have it installed ") +
+				"\n\n"
+		);
+		return inquirer
+			.prompt([
+				{
+					type: "confirm",
+					name: "confirmDevserver",
+					message: "Do you want to install it? (default: Y)",
+					default: "Y"
+				}
+			])
+			.then(answer => {
+				if (answer["confirmDevserver"]) {
+					return inquirer
+						.prompt(
+							List(
+								"confirmDepType",
+								"What kind of dependency do you want it to be under? (default: devDependency)",
+								["devDependency", "optionalDependency", "dependency"]
+							)
+						)
+						.then(depTypeAns => {
+							const packager = getRootPathModule("package-lock.json")
+								? "npm"
+								: "yarn";
+							let spawnAction;
+							if (depTypeAns["confirmDepType"] === "devDependency") {
+								if (packager === "yarn") {
+									spawnAction = _ => spawnYarnWithArg("--dev");
+								} else {
+									spawnAction = _ => spawnNPMWithArg("--save-dev");
+								}
+							}
+							if (depTypeAns["confirmDepType"] === "dependency") {
+								if (packager === "yarn") {
+									spawnAction = _ => spawnYarnWithArg(" ");
+								} else {
+									spawnAction = _ => spawnNPMWithArg("--save");
+								}
+							}
+							if (depTypeAns["confirmDepType"] === "optionalDependency") {
+								if (packager === "yarn") {
+									spawnAction = _ => spawnYarnWithArg("--optional");
+								} else {
+									spawnAction = _ => spawnNPMWithArg("--save-optional");
+								}
+							}
+							return processPromise(spawnAction()).then(_ => {
+								// Recursion doesn't work well with require call being cached
+								delete require.cache[require.resolve(packageJSONPath)];
+								return serve();
+							});
+						});
+				} else {
+					console.log(chalk.bold.red("✖ Serve aborted due cancelling"));
+					process.exitCode = 1;
+				}
+			})
+			.catch(err => {
+				console.log(chalk.red("✖ Serve aborted due to some errors"));
+				console.error(err);
+				process.exitCode = 1;
+			});
+	}
+}
+
+module.exports = {
+	serve,
+	getRootPathModule,
+	spawnNPMWithArg,
+	spawnYarnWithArg
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/commands_update.js.html b/docs/commands_update.js.html new file mode 100644 index 00000000000..f2a45833250 --- /dev/null +++ b/docs/commands_update.js.html @@ -0,0 +1,67 @@ + + + + + JSDoc: Source: commands/update.js + + + + + + + + + + +
+ +

Source: commands/update.js

+ + + + + + +
+
+
"use strict";
+
+const defaultGenerator = require("../generators/update-generator");
+const modifyHelper = require("../utils/modify-config-helper");
+
+/**
+ * Is called and returns a scaffolding instance, updating properties
+ *
+ * @returns {Function} modifyHelper - A helper function that uses the action
+ * 	we're given on a generator
+ *
+ */
+
+module.exports = function() {
+	return modifyHelper("update", defaultGenerator);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/fonts/OpenSans-Bold-webfont.eot b/docs/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..5d20d916338a5890a033952e2e07ba7380f5a7d3 GIT binary patch literal 19544 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/OpenSans-Bold-webfont.svg b/docs/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 00000000000..3ed7be4bc5b --- /dev/null +++ b/docs/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/OpenSans-Bold-webfont.woff b/docs/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..1205787b0ed50db71ebd4f8a7f85d106721ff258 GIT binary patch literal 22432 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 ig3W + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/OpenSans-BoldItalic-webfont.woff b/docs/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ed760c0628b6a0026041f5b8bba466a0471fd2e0 GIT binary patch literal 23048 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/OpenSans-Italic-webfont.woff b/docs/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ff652e64356b538c001423b6aedefcf1ee66cd17 GIT binary patch literal 23188 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/OpenSans-Light-webfont.svg b/docs/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 00000000000..11a472ca8a5 --- /dev/null +++ b/docs/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/OpenSans-Light-webfont.woff b/docs/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..e786074813a27d0a7a249047832988d5bf0fe756 GIT binary patch literal 22248 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 literal 0 HcmV?d00001 diff --git a/docs/fonts/OpenSans-LightItalic-webfont.eot b/docs/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..8f445929ffb03b50e98c2a2f7d831a0cb1b276a2 GIT binary patch literal 20535 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 Z%0#`NexefPFV?Xj51H#Y#AC7WXn+Jg($4?@ literal 0 HcmV?d00001 diff --git a/docs/fonts/OpenSans-LightItalic-webfont.svg b/docs/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 00000000000..431d7e35463 --- /dev/null +++ b/docs/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/OpenSans-LightItalic-webfont.woff b/docs/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..43e8b9e6cc061ff17fd2903075cbde12715512b3 GIT binary patch literal 23400 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 + + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generate-plugin_index.js.html b/docs/generate-plugin_index.js.html new file mode 100644 index 00000000000..12e568423d4 --- /dev/null +++ b/docs/generate-plugin_index.js.html @@ -0,0 +1,69 @@ + + + + + JSDoc: Source: generate-plugin/index.js + + + + + + + + + + +
+ +

Source: generate-plugin/index.js

+ + + + + + +
+
+
const yeoman = require("yeoman-environment");
+const PluginGenerator = require("../generators/plugin-generator")
+	.PluginGenerator;
+
+/**
+ * Runs a yeoman generator to create a new webpack plugin project
+ * @returns {void}
+ */
+function pluginCreator() {
+	const env = yeoman.createEnv();
+	const generatorName = "webpack-plugin-generator";
+
+	env.registerStub(PluginGenerator, generatorName);
+
+	env.run(generatorName);
+}
+
+module.exports = pluginCreator;
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_add-generator.js.html b/docs/generators_add-generator.js.html new file mode 100644 index 00000000000..9db17a20dae --- /dev/null +++ b/docs/generators_add-generator.js.html @@ -0,0 +1,501 @@ + + + + + JSDoc: Source: generators/add-generator.js + + + + + + + + + + +
+ +

Source: generators/add-generator.js

+ + + + + + +
+
+
const Generator = require("yeoman-generator");
+const glob = require("glob-all");
+const path = require("path");
+const Confirm = require("webpack-addons").Confirm;
+const List = require("webpack-addons").List;
+const Input = require("webpack-addons").Input;
+
+const webpackSchema = require("webpack/schemas/WebpackOptions");
+const webpackDevServerSchema = require("webpack-dev-server/lib/optionsSchema.json");
+const PROP_TYPES = require("../utils/prop-types");
+
+const getPackageManager = require("../utils/package-manager").getPackageManager;
+const npmExists = require("../utils/npm-exists");
+const entryQuestions = require("./utils/entry");
+
+/**
+ *
+ * Replaces the string with a substring at the given index
+ * https://gist.github.com/efenacigiray/9367920
+ *
+ * @param {String} string - string to be modified
+ * @param {Number} index - index to replace from
+ * @param {String} replace - string to replace starting from index
+ *
+ * @returns {String} string - The newly mutated string
+ *
+ */
+function replaceAt(string, index, replace) {
+	return string.substring(0, index) + replace + string.substring(index + 1);
+}
+
+/**
+ *
+ * Checks if the given array has a given property
+ *
+ * @param {Array} arr - array to check
+ * @param {String} prop - property to check existence of
+ *
+ * @returns {Boolean} hasProp - Boolean indicating if the property
+ * is present
+ */
+const traverseAndGetProperties = (arr, prop) => {
+	let hasProp = false;
+	arr.forEach(p => {
+		if (p[prop]) {
+			hasProp = true;
+		}
+	});
+	return hasProp;
+};
+
+/**
+ *
+ * Generator for adding properties
+ * @class AddGenerator
+ * @extends Generator
+ * @returns {Void} After execution, transforms are triggered
+ *
+ */
+
+module.exports = class AddGenerator extends Generator {
+	constructor(args, opts) {
+		super(args, opts);
+		this.dependencies = [];
+		this.configuration = {
+			config: {
+				webpackOptions: {},
+				topScope: ["const webpack = require('webpack')"]
+			}
+		};
+	}
+
+	prompting() {
+		let done = this.async();
+		let action;
+		let self = this;
+		let manualOrListInput = action =>
+			Input("actionAnswer", `what do you want to add to ${action}?`);
+		// first index indicates if it has a deep prop, 2nd indicates what kind of
+		let isDeepProp = [false, false];
+
+		return this.prompt([
+			List(
+				"actionType",
+				"What property do you want to add to?",
+				Array.from(PROP_TYPES.keys())
+			)
+		])
+			.then(actionTypeAnswer => {
+				// Set initial prop, like devtool
+				this.configuration.config.webpackOptions[
+					actionTypeAnswer.actionType
+				] = null;
+				// update the action variable, we're using it later
+				action = actionTypeAnswer.actionType;
+			})
+			.then(() => {
+				if (action === "entry") {
+					return this.prompt([
+						Confirm("entryType", "Will your application have multiple bundles?")
+					])
+						.then(entryTypeAnswer => {
+							// Ask different questions for entry points
+							return entryQuestions(self, entryTypeAnswer);
+						})
+						.then(entryOptions => {
+							this.configuration.config.webpackOptions[action] = entryOptions;
+							this.configuration.config.item = action;
+						});
+				}
+				let temp = action;
+				if (action === "resolveLoader") {
+					action = "resolve";
+				}
+				const webpackSchemaProp = webpackSchema.definitions[action];
+				/*
+				 * https://github.com/webpack/webpack/blob/next/schemas/WebpackOptions.json
+				 * Find the properties directly in the properties prop, or the anyOf prop
+				 */
+				let defOrPropDescription = webpackSchemaProp
+					? webpackSchemaProp.properties
+					: webpackSchema.properties[action].properties
+						? webpackSchema.properties[action].properties
+						: webpackSchema.properties[action].anyOf
+							? webpackSchema.properties[action].anyOf.filter(
+								p => p.properties || p.enum
+							  ) // eslint-disable-line
+							: null;
+				if (Array.isArray(defOrPropDescription)) {
+					// Todo: Generalize these to go through the array, then merge enum with props if needed
+					const hasPropertiesProp = traverseAndGetProperties(
+						defOrPropDescription,
+						"properties"
+					);
+					const hasEnumProp = traverseAndGetProperties(
+						defOrPropDescription,
+						"enum"
+					);
+					/* as we know he schema only has two arrays that might hold our values,
+					 * check them for either having arr.enum or arr.properties
+					*/
+					if (hasPropertiesProp) {
+						defOrPropDescription =
+							defOrPropDescription[0].properties ||
+							defOrPropDescription[1].properties;
+						if (!defOrPropDescription) {
+							defOrPropDescription = defOrPropDescription[0].enum;
+						}
+						// TODO: manually implement stats and devtools like sourcemaps
+					} else if (hasEnumProp) {
+						const originalPropDesc = defOrPropDescription[0].enum;
+						// Array -> Object -> Merge objects into one for compat in manualOrListInput
+						defOrPropDescription = Object.keys(defOrPropDescription[0].enum)
+							.map(p => {
+								return Object.assign(
+									{},
+									{
+										[originalPropDesc[p]]: "noop"
+									}
+								);
+							})
+							.reduce((result, currentObject) => {
+								for (let key in currentObject) {
+									if (currentObject.hasOwnProperty(key)) {
+										result[key] = currentObject[key];
+									}
+								}
+								return result;
+							}, {});
+					}
+				}
+				// WDS has its own schema, so we gonna need to check that too
+				const webpackDevserverSchemaProp =
+					action === "devServer" ? webpackDevServerSchema : null;
+				// Watch has a boolean arg, but we need to append to it manually
+				if (action === "watch") {
+					defOrPropDescription = {
+						true: {},
+						false: {}
+					};
+				}
+				if (action === "mode") {
+					defOrPropDescription = {
+						development: {},
+						production: {}
+					};
+				}
+				action = temp;
+				if (action === "resolveLoader") {
+					defOrPropDescription = Object.assign(defOrPropDescription, {
+						moduleExtensions: {}
+					});
+				}
+				// If we've got a schema prop or devServer Schema Prop
+				if (defOrPropDescription || webpackDevserverSchemaProp) {
+					// Check for properties in definitions[action] or properties[action]
+					if (defOrPropDescription) {
+						if (action !== "devtool") {
+							// Add the option of adding an own variable if the user wants
+							defOrPropDescription = Object.assign(defOrPropDescription, {
+								other: {}
+							});
+						} else {
+							// The schema doesn't have the source maps we can prompt, so add those
+							defOrPropDescription = Object.assign(defOrPropDescription, {
+								eval: {},
+								"cheap-eval-source-map": {},
+								"cheap-module-eval-source-map": {},
+								"eval-source-map": {},
+								"cheap-source-map": {},
+								"cheap-module-source-map": {},
+								"inline-cheap-source-map": {},
+								"inline-cheap-module-source-map": {},
+								"source-map": {},
+								"inline-source-map": {},
+								"hidden-source-map": {},
+								"nosources-source-map": {}
+							});
+						}
+						manualOrListInput = List(
+							"actionAnswer",
+							`what do you want to add to ${action}?`,
+							Object.keys(defOrPropDescription)
+						);
+						// We know we're gonna append some deep prop like module.rule
+						isDeepProp[0] = true;
+					} else if (webpackDevserverSchemaProp) {
+						// Append the custom property option
+						webpackDevserverSchemaProp.properties = Object.assign(
+							webpackDevserverSchemaProp.properties,
+							{
+								other: {}
+							}
+						);
+						manualOrListInput = List(
+							"actionAnswer",
+							`what do you want to add to ${action}?`,
+							Object.keys(webpackDevserverSchemaProp.properties)
+						);
+						// We know we are in a devServer.prop scenario
+						isDeepProp[0] = true;
+					} else {
+						// manual input if non-existent
+						manualOrListInput = manualOrListInput(action);
+					}
+				} else {
+					manualOrListInput = manualOrListInput(action);
+				}
+				return this.prompt([manualOrListInput]);
+			})
+			.then(answerToAction => {
+				if (!answerToAction) {
+					done();
+					return;
+				}
+				/*
+				 * Plugins got their own logic,
+				 * find the names of each natively plugin and check if it matches
+				*/
+				if (action === "plugins") {
+					const pluginExist = glob
+						.sync([
+							"node_modules/webpack/lib/*Plugin.js",
+							"node_modules/webpack/lib/**/*Plugin.js"
+						])
+						.map(p =>
+							p
+								.split("/")
+								.pop()
+								.replace(".js", "")
+						)
+						.find(
+							p => p.toLowerCase().indexOf(answerToAction.actionAnswer) >= 0
+						);
+					if (pluginExist) {
+						this.configuration.config.item = pluginExist;
+						const pluginsSchemaPath = glob
+							.sync([
+								"node_modules/webpack/schemas/plugins/*Plugin.json",
+								"node_modules/webpack/schemas/plugins/**/*Plugin.json"
+							])
+							.find(
+								p =>
+									p
+										.split("/")
+										.pop()
+										.replace(".json", "")
+										.toLowerCase()
+										.indexOf(answerToAction.actionAnswer) >= 0
+							);
+						if (pluginsSchemaPath) {
+							const constructorPrefix =
+								pluginsSchemaPath.indexOf("optimize") >= 0
+									? "webpack.optimize"
+									: "webpack";
+							const resolvePluginsPath = path.resolve(pluginsSchemaPath);
+							const pluginSchema = resolvePluginsPath
+								? require(resolvePluginsPath)
+								: null;
+							let pluginsSchemaProps = ["other"];
+							if (pluginSchema) {
+								Object.keys(pluginSchema)
+									.filter(p => Array.isArray(pluginSchema[p]))
+									.forEach(p => {
+										Object.keys(pluginSchema[p]).forEach(n => {
+											if (pluginSchema[p][n].properties) {
+												pluginsSchemaProps = Object.keys(
+													pluginSchema[p][n].properties
+												);
+											}
+										});
+									});
+							}
+
+							return this.prompt([
+								List(
+									"pluginsPropType",
+									`What property do you want to add ${pluginExist}?`,
+									pluginsSchemaProps
+								)
+							]).then(pluginsPropAnswer => {
+								return this.prompt([
+									Input(
+										"pluginsPropTypeVal",
+										`What value should ${pluginExist}.${
+											pluginsPropAnswer.pluginsPropType
+										} have?`
+									)
+								]).then(valForProp => {
+									this.configuration.config.webpackOptions[action] = {
+										[`${constructorPrefix}.${pluginExist}`]: {
+											[pluginsPropAnswer.pluginsPropType]:
+												valForProp.pluginsPropTypeVal
+										}
+									};
+									done();
+								});
+							});
+						} else {
+							this.configuration.config.webpackOptions[
+								action
+							] = `new webpack.${pluginExist}`;
+							done();
+						}
+					} else {
+						// If its not in webpack, check npm
+						npmExists(answerToAction.actionAnswer).then(p => {
+							if (p) {
+								this.dependencies.push(answerToAction.actionAnswer);
+								const normalizePluginName = answerToAction.actionAnswer.replace(
+									"-webpack-plugin",
+									"Plugin"
+								);
+								const pluginName = replaceAt(
+									normalizePluginName,
+									0,
+									normalizePluginName.charAt(0).toUpperCase()
+								);
+								this.configuration.config.topScope.push(
+									`const ${pluginName} = require("${
+										answerToAction.actionAnswer
+									}")`
+								);
+								this.configuration.config.webpackOptions[
+									action
+								] = `new ${pluginName}`;
+								this.configuration.config.item = answerToAction.actionAnswer;
+								done();
+								this.runInstall(getPackageManager(), this.dependencies, {
+									"save-dev": true
+								});
+							} else {
+								console.error(
+									answerToAction.actionAnswer,
+									"doesn't exist on NPM or is built in webpack, please check for any misspellings."
+								);
+								process.exit(0);
+							}
+						});
+					}
+				} else {
+					// If we're in the scenario with a deep-property
+					if (isDeepProp[0]) {
+						isDeepProp[1] = answerToAction.actionAnswer;
+						if (
+							isDeepProp[1] !== "other" &&
+							(action === "devtool" || action === "watch" || action === "mode")
+						) {
+							this.configuration.config.item = action;
+							this.configuration.config.webpackOptions[action] =
+								answerToAction.actionAnswer;
+							done();
+							return;
+						}
+						// Either we are adding directly at the property, else we're in a prop.theOne scenario
+						const actionMessage =
+							isDeepProp[1] === "other"
+								? `what do you want the key on ${action} to be? (press enter if you want it directly as a value on the property)`
+								: `what do you want the value of ${isDeepProp[1]} to be?`;
+
+						this.prompt([Input("deepProp", actionMessage)]).then(
+							deepPropAns => {
+								// The other option needs to be validated of either being empty or not
+								if (isDeepProp[1] === "other") {
+									let othersDeepPropKey = deepPropAns.deepProp
+										? `what do you want the value of ${
+											deepPropAns.deepProp
+										  } to be?` // eslint-disable-line
+										: `what do you want to be the value of ${action} to be?`;
+									// Push the answer to the array we have created, so we can use it later
+									isDeepProp.push(deepPropAns.deepProp);
+									this.prompt([Input("deepProp", othersDeepPropKey)]).then(
+										deepPropAns => {
+											// Check length, if it has none, add the prop directly on the given action
+											if (isDeepProp[2].length === 0) {
+												this.configuration.config.item = action;
+												this.configuration.config.webpackOptions[action] =
+													deepPropAns.deepProp;
+											} else {
+												// If not, we're adding to something like devServer.myProp
+												this.configuration.config.item =
+													action + "." + isDeepProp[2];
+												this.configuration.config.webpackOptions[action] = {
+													[isDeepProp[2]]: deepPropAns.deepProp
+												};
+											}
+											done();
+										}
+									);
+								} else {
+									// We got the schema prop, we've correctly prompted it, and can add it directly
+									this.configuration.config.item = action + "." + isDeepProp[1];
+									this.configuration.config.webpackOptions[action] = {
+										[isDeepProp[1]]: deepPropAns.deepProp
+									};
+									done();
+								}
+							}
+						);
+					} else {
+						// We're asking for input-only
+						this.configuration.config.item = action;
+						this.configuration.config.webpackOptions[action] =
+							answerToAction.actionAnswer;
+						done();
+					}
+				}
+			});
+	}
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_init-generator.js.html b/docs/generators_init-generator.js.html new file mode 100644 index 00000000000..3b3dcd49609 --- /dev/null +++ b/docs/generators_init-generator.js.html @@ -0,0 +1,465 @@ + + + + + JSDoc: Source: generators/init-generator.js + + + + + + + + + + +
+ +

Source: generators/init-generator.js

+ + + + + + +
+
+
"use strict";
+
+const Generator = require("yeoman-generator");
+const chalk = require("chalk");
+const logSymbols = require("log-symbols");
+
+const createCommonsChunkPlugin = require("webpack-addons")
+	.createCommonsChunkPlugin;
+
+const Input = require("webpack-addons").Input;
+const Confirm = require("webpack-addons").Confirm;
+const List = require("webpack-addons").List;
+
+//const getPackageManager = require("../utils/package-manager").getPackageManager;
+
+const entryQuestions = require("./utils/entry");
+const getBabelPlugin = require("./utils/module");
+const getDefaultPlugins = require("./utils/plugins");
+const tooltip = require("./utils/tooltip");
+
+/**
+ *
+ * Generator for initializing a webpack config
+ *
+ * @class 	InitGenerator
+ * @extends Generator
+ * @returns {Void} After execution, transforms are triggered
+ *
+ */
+module.exports = class InitGenerator extends Generator {
+	constructor(args, opts) {
+		super(args, opts);
+		this.isProd = false;
+		this.dependencies = ["webpack", "uglifyjs-webpack-plugin"];
+		this.configuration = {
+			config: {
+				webpackOptions: {},
+				topScope: []
+			}
+		};
+	}
+
+	prompting() {
+		const done = this.async();
+		const self = this;
+		let oneOrMoreEntries;
+		let regExpForStyles;
+		let ExtractUseProps;
+		let outputPath = "dist";
+		process.stdout.write(
+			"\n" +
+				logSymbols.info +
+				chalk.blue(" INFO ") +
+				"For more information and a detailed description of each question, have a look at " +
+				chalk.bold.green(
+					"https://github.com/webpack/webpack-cli/blob/master/INIT.md"
+				) +
+				"\n"
+		);
+		process.stdout.write(
+			logSymbols.info +
+				chalk.blue(" INFO ") +
+				"Alternatively, run `webpack(-cli) --help` for usage info." +
+				"\n\n"
+		);
+		this.configuration.config.webpackOptions.module = {
+			rules: []
+		};
+		this.configuration.config.webpackOptions.plugins = getDefaultPlugins();
+		this.configuration.config.topScope.push(
+			"const webpack = require('webpack')",
+			"const path = require('path')",
+			tooltip.uglify(),
+			"const UglifyJSPlugin = require('uglifyjs-webpack-plugin');",
+			"\n"
+		);
+
+		this.prompt([
+			Confirm("entryType", "Will your application have multiple bundles?")
+		])
+			.then(entryTypeAnswer => {
+				// Ask different questions for entry points
+				return entryQuestions(self, entryTypeAnswer);
+			})
+			.then(entryOptions => {
+				this.configuration.config.webpackOptions.entry = entryOptions;
+				oneOrMoreEntries = Object.keys(entryOptions);
+
+				return this.prompt([
+					Input(
+						"outputType",
+						"Which folder will your generated bundles be in? [default: dist]:"
+					)
+				]);
+			})
+			.then(outputTypeAnswer => {
+				if (!this.configuration.config.webpackOptions.entry.length) {
+					this.configuration.config.topScope.push(tooltip.commonsChunk());
+					this.configuration.config.webpackOptions.output = {
+						filename: "'[name].[chunkhash].js'",
+						chunkFilename: "'[name].[chunkhash].js'"
+					};
+				} else {
+					this.configuration.config.webpackOptions.output = {
+						filename: "'[name].bundle.js'"
+					};
+				}
+				if (outputTypeAnswer["outputType"].length) {
+					outputPath = outputTypeAnswer["outputType"];
+				}
+				this.configuration.config.webpackOptions.output.path = `path.resolve(__dirname, '${outputPath}')`;
+			})
+			.then(() => {
+				return this.prompt([
+					Confirm("prodConfirm", "Are you going to use this in production?")
+				]);
+			})
+			.then(
+				prodConfirmAnswer => (this.isProd = prodConfirmAnswer["prodConfirm"])
+			)
+			.then(() => {
+				return this.prompt([
+					Confirm("babelConfirm", "Will you be using ES2015?")
+				]);
+			})
+			.then(babelConfirmAnswer => {
+				if (babelConfirmAnswer["babelConfirm"] === true) {
+					this.configuration.config.webpackOptions.module.rules.push(
+						getBabelPlugin()
+					);
+					this.dependencies.push(
+						"babel-core",
+						"babel-loader",
+						"babel-preset-env"
+					);
+				}
+			})
+			.then(() => {
+				return this.prompt([
+					List("stylingType", "Will you use one of the below CSS solutions?", [
+						"SASS",
+						"LESS",
+						"CSS",
+						"PostCSS",
+						"No"
+					])
+				]);
+			})
+			.then(stylingTypeAnswer => {
+				if (!this.isProd) {
+					ExtractUseProps = [];
+				}
+				switch (stylingTypeAnswer["stylingType"]) {
+					case "SASS":
+						this.dependencies.push(
+							"sass-loader",
+							"node-sass",
+							"style-loader",
+							"css-loader"
+						);
+						regExpForStyles = new RegExp(/\.(scss|css)$/);
+						if (this.isProd) {
+							ExtractUseProps = `
+								use: [{
+									loader: "css-loader",
+									options: {
+										sourceMap: true
+									}
+								}, {
+									loader: "sass-loader",
+									options: {
+										sourceMap: true
+									}
+								}],
+								fallback: "style-loader"
+							`;
+						} else {
+							ExtractUseProps.push(
+								{
+									loader: "'style-loader'"
+								},
+								{
+									loader: "'css-loader'"
+								},
+								{
+									loader: "'sass-loader'"
+								}
+							);
+						}
+						break;
+					case "LESS":
+						regExpForStyles = new RegExp(/\.(less|css)$/);
+						this.dependencies.push(
+							"less-loader",
+							"less",
+							"style-loader",
+							"css-loader"
+						);
+						if (this.isProd) {
+							ExtractUseProps = `
+								use: [{
+									loader: "css-loader",
+									options: {
+										sourceMap: true
+									}
+								}, {
+									loader: "less-loader",
+									options: {
+										sourceMap: true
+									}
+								}],
+								fallback: "style-loader"
+							`;
+						} else {
+							ExtractUseProps.push(
+								{
+									loader: "'css-loader'",
+									options: {
+										sourceMap: true
+									}
+								},
+								{
+									loader: "'less-loader'",
+									options: {
+										sourceMap: true
+									}
+								}
+							);
+						}
+						break;
+					case "PostCSS":
+						this.configuration.config.topScope.push(
+							tooltip.postcss(),
+							"const autoprefixer = require('autoprefixer');",
+							"const precss = require('precss');",
+							"\n"
+						);
+						this.dependencies.push(
+							"style-loader",
+							"css-loader",
+							"postcss-loader",
+							"precss",
+							"autoprefixer"
+						);
+						regExpForStyles = new RegExp(/\.css$/);
+						if (this.isProd) {
+							ExtractUseProps = `
+								use: [{
+									loader: "style-loader"
+								},{
+									loader: "css-loader",
+									options: {
+										sourceMap: true,
+										importLoaders: 1
+									}
+								}, {
+									loader: "postcss-loader",
+									options: {
+										plugins: function () {
+											return [
+												precss,
+												autoprefixer
+											];
+										}
+									}
+								}],
+								fallback: "style-loader"
+							`;
+						} else {
+							ExtractUseProps.push(
+								{
+									loader: "'style-loader'"
+								},
+								{
+									loader: "'css-loader'",
+									options: {
+										sourceMap: true,
+										importLoaders: 1
+									}
+								},
+								{
+									loader: "'postcss-loader'",
+									options: {
+										plugins: `function () {
+											return [
+												precss,
+												autoprefixer
+											];
+										}`
+									}
+								}
+							);
+						}
+						break;
+					case "CSS":
+						this.dependencies.push("style-loader", "css-loader");
+						regExpForStyles = new RegExp(/\.css$/);
+						if (this.isProd) {
+							ExtractUseProps = `
+								use: [{
+									loader: "css-loader",
+									options: {
+										sourceMap: true
+									}
+								}],
+								fallback: "style-loader"
+							`;
+						} else {
+							ExtractUseProps.push(
+								{
+									loader: "'style-loader'",
+									options: {
+										sourceMap: true
+									}
+								},
+								{
+									loader: "'css-loader'"
+								}
+							);
+						}
+						break;
+					default:
+						regExpForStyles = null;
+				}
+			})
+			.then(() => {
+				// Ask if the user wants to use extractPlugin
+				return this.prompt([
+					Input(
+						"extractPlugin",
+						"If you want to bundle your CSS files, what will you name the bundle? (press enter to skip)"
+					)
+				]);
+			})
+			.then(extractPluginAnswer => {
+				const cssBundleName = extractPluginAnswer["extractPlugin"];
+				if (regExpForStyles) {
+					if (this.isProd) {
+						this.configuration.config.topScope.push(tooltip.cssPlugin());
+						// TODO: Replace with regular version once v.4 is out
+						this.dependencies.push("extract-text-webpack-plugin@next");
+
+						if (cssBundleName.length !== 0) {
+							this.configuration.config.webpackOptions.plugins.push(
+								`new ExtractTextPlugin('${cssBundleName}.[contentHash].css')`
+							);
+						} else {
+							this.configuration.config.webpackOptions.plugins.push(
+								"new ExtractTextPlugin('style.css')"
+							);
+						}
+
+						const moduleRulesObj = {
+							test: regExpForStyles,
+							use: `ExtractTextPlugin.extract({ ${ExtractUseProps} })`
+						};
+
+						this.configuration.config.webpackOptions.module.rules.push(
+							moduleRulesObj
+						);
+						this.configuration.config.topScope.push(
+							"const ExtractTextPlugin = require('extract-text-webpack-plugin');",
+							"\n"
+						);
+					} else {
+						const moduleRulesObj = {
+							test: regExpForStyles,
+							use: ExtractUseProps
+						};
+
+						this.configuration.config.webpackOptions.module.rules.push(
+							moduleRulesObj
+						);
+					}
+				}
+			})
+			.then(() => {
+				if (this.configuration.config.webpackOptions.entry.length === 0) {
+					oneOrMoreEntries.forEach(prop => {
+						this.configuration.config.webpackOptions.plugins.push(
+							createCommonsChunkPlugin(prop)
+						);
+					});
+				}
+				done();
+			});
+	}
+	/*
+	installPlugins() {
+		const asyncNamePrompt = this.async();
+		const defaultName = this.isProd ? "prod" : "config";
+		this.prompt([
+			Input(
+				"nameType",
+				`Name your 'webpack.[name].js?' [default: '${defaultName}']:`
+			)
+		])
+			.then(nameTypeAnswer => {
+				this.configuration.config.configName = nameTypeAnswer["nameType"].length ?
+					nameTypeAnswer["nameType"] : defaultName;
+			})
+			.then(() => {
+				asyncNamePrompt();
+				this.runInstall(getPackageManager(), this.dependencies, {
+					"save-dev": true
+				});
+			});
+	}
+
+	writing() {
+		this.config.set("configuration", this.configuration);
+	}
+	*/
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_loader-generator.js.html b/docs/generators_loader-generator.js.html new file mode 100644 index 00000000000..10f01f77ac8 --- /dev/null +++ b/docs/generators_loader-generator.js.html @@ -0,0 +1,109 @@ + + + + + JSDoc: Source: generators/loader-generator.js + + + + + + + + + + +
+ +

Source: generators/loader-generator.js

+ + + + + + +
+
+
const path = require("path");
+const _ = require("lodash");
+const webpackGenerator = require("./webpack-generator");
+
+/**
+ * Formats a string into webpack loader format
+ * (eg: 'style-loader', 'raw-loader')
+ *
+ * @param {string} name A loader name to be formatted
+ * @returns {string} The formatted string
+ */
+function makeLoaderName(name) {
+	name = _.kebabCase(name);
+	if (!/loader$/.test(name)) {
+		name += "-loader";
+	}
+	return name;
+}
+
+/**
+ * A yeoman generator class for creating a webpack
+ * loader project. It adds some starter loader code
+ * and runs `webpack-defaults`.
+ *
+ * @class LoaderGenerator
+ * @extends {Generator}
+ */
+const LoaderGenerator = webpackGenerator(
+	[
+		{
+			type: "input",
+			name: "name",
+			message: "Loader name",
+			default: "my-loader",
+			filter: makeLoaderName,
+			validate: str => str.length > 0
+		}
+	],
+	path.join(__dirname, "templates"),
+	[
+		"src/cjs.js.tpl",
+		"test/test-utils.js.tpl",
+		"test/unit.test.js.tpl",
+		"test/functional.test.js.tpl",
+		"test/fixtures/simple-file.js.tpl",
+		"examples/simple/webpack.config.js.tpl",
+		"examples/simple/src/index.js.tpl",
+		"examples/simple/src/lazy-module.js.tpl",
+		"examples/simple/src/static-esm-module.js.tpl"
+	],
+	["src/_index.js.tpl"],
+	gen => ({ name: gen.props.name })
+);
+
+module.exports = {
+	makeLoaderName,
+	LoaderGenerator
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_plugin-generator.js.html b/docs/generators_plugin-generator.js.html new file mode 100644 index 00000000000..af6edcde75e --- /dev/null +++ b/docs/generators_plugin-generator.js.html @@ -0,0 +1,90 @@ + + + + + JSDoc: Source: generators/plugin-generator.js + + + + + + + + + + +
+ +

Source: generators/plugin-generator.js

+ + + + + + +
+
+
const path = require("path");
+const _ = require("lodash");
+const webpackGenerator = require("./webpack-generator");
+
+/**
+ * A yeoman generator class for creating a webpack
+ * plugin project. It adds some starter plugin code
+ * and runs `webpack-defaults`.
+ *
+ * @class PluginGenerator
+ * @extends {Generator}
+ */
+const PluginGenerator = webpackGenerator(
+	[
+		{
+			type: "input",
+			name: "name",
+			message: "Plugin name",
+			default: "my-webpack-plugin",
+			filter: _.kebabCase,
+			validate: str => str.length > 0
+		}
+	],
+	path.join(__dirname, "templates"),
+	[
+		"src/cjs.js.tpl",
+		"test/test-utils.js.tpl",
+		"test/functional.test.js.tpl",
+		"examples/simple/src/index.js.tpl",
+		"examples/simple/src/lazy-module.js.tpl",
+		"examples/simple/src/static-esm-module.js.tpl"
+	],
+	["src/_index.js.tpl", "examples/simple/_webpack.config.js.tpl"],
+	gen => ({ name: _.upperFirst(_.camelCase(gen.props.name)) })
+);
+
+module.exports = {
+	PluginGenerator
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_utils_entry.js.html b/docs/generators_utils_entry.js.html new file mode 100644 index 00000000000..1239a97dd19 --- /dev/null +++ b/docs/generators_utils_entry.js.html @@ -0,0 +1,141 @@ + + + + + JSDoc: Source: generators/utils/entry.js + + + + + + + + + + +
+ +

Source: generators/utils/entry.js

+ + + + + + +
+
+
"use strict";
+
+const InputValidate = require("webpack-addons").InputValidate;
+const validate = require("./validate");
+
+/**
+ *
+ * Prompts for entry points, either if it has multiple or one entry
+ *
+ * @param {Object} self - A variable holding the instance of the prompting
+ * @param {Object} answer - Previous answer from asking if the user wants single or multiple entries
+ * @returns {Object} An Object that holds the answers given by the user, later used to scaffold
+ */
+
+module.exports = (self, answer) => {
+	let entryIdentifiers;
+	let result;
+	if (answer["entryType"] === true) {
+		result = self
+			.prompt([
+				InputValidate(
+					"multipleEntries",
+					"Type the names you want for your modules (entry files), separated by comma [example: 'app,vendor']",
+					validate
+				)
+			])
+			.then(multipleEntriesAnswer => {
+				let webpackEntryPoint = {};
+				entryIdentifiers = multipleEntriesAnswer["multipleEntries"].split(",");
+				function forEachPromise(obj, fn) {
+					return obj.reduce(function(promise, prop) {
+						const trimmedProp = prop.trim();
+						return promise.then(n => {
+							if (n) {
+								Object.keys(n).forEach(val => {
+									if (
+										n[val].charAt(0) !== "(" &&
+										n[val].charAt(0) !== "[" &&
+										n[val].indexOf("function") < 0 &&
+										n[val].indexOf("path") < 0 &&
+										n[val].indexOf("process") < 0
+									) {
+										n[val] = `"${n[val]}.js"`;
+									}
+									webpackEntryPoint[val] = n[val];
+								});
+							} else {
+								n = {};
+							}
+							return fn(trimmedProp);
+						});
+					}, Promise.resolve());
+				}
+				return forEachPromise(entryIdentifiers, entryProp =>
+					self.prompt([
+						InputValidate(
+							`${entryProp}`,
+							`What is the location of "${entryProp}"? [example: "./src/${entryProp}"]`,
+							validate
+						)
+					])
+				).then(propAns => {
+					Object.keys(propAns).forEach(val => {
+						if (
+							propAns[val].charAt(0) !== "(" &&
+							propAns[val].charAt(0) !== "[" &&
+							propAns[val].indexOf("function") < 0 &&
+							propAns[val].indexOf("path") < 0 &&
+							propAns[val].indexOf("process") < 0
+						) {
+							propAns[val] = `"${propAns[val]}.js"`;
+						}
+						webpackEntryPoint[val] = propAns[val];
+					});
+					return webpackEntryPoint;
+				});
+			});
+	} else {
+		result = self
+			.prompt([
+				InputValidate(
+					"singularEntry",
+					"Which module will be the first to enter the application? [example: './src/index']",
+					validate
+				)
+			])
+			.then(singularAnswer => `"${singularAnswer["singularEntry"]}"`);
+	}
+	return result;
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_utils_module.js.html b/docs/generators_utils_module.js.html new file mode 100644 index 00000000000..7dd351a64c1 --- /dev/null +++ b/docs/generators_utils_module.js.html @@ -0,0 +1,70 @@ + + + + + JSDoc: Source: generators/utils/module.js + + + + + + + + + + +
+ +

Source: generators/utils/module.js

+ + + + + + +
+
+
"use strict";
+
+/**
+ *
+ * Returns an module.rule object that has the babel loader if invoked
+ *
+ * @param {Void} _ - void value
+ * @returns {Function} A callable function that adds the babel-loader with env preset
+ */
+module.exports = _ => {
+	return {
+		test: new RegExp(/\.js$/),
+		exclude: "/node_modules/",
+		loader: "'babel-loader'",
+		options: {
+			presets: ["'env'"]
+		}
+	};
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_utils_plugins.js.html b/docs/generators_utils_plugins.js.html new file mode 100644 index 00000000000..f6acf7f0b4e --- /dev/null +++ b/docs/generators_utils_plugins.js.html @@ -0,0 +1,65 @@ + + + + + JSDoc: Source: generators/utils/plugins.js + + + + + + + + + + +
+ +

Source: generators/utils/plugins.js

+ + + + + + +
+
+
"use strict";
+
+/**
+ *
+ * Callable function with the initial plugins
+ *
+ * @param {Void} _ - void value
+ * @returns {Function} An function that returns an array
+ * that consists of the uglify plugin
+ */
+
+module.exports = _ => {
+	return ["new UglifyJSPlugin()"];
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_utils_tooltip.js.html b/docs/generators_utils_tooltip.js.html new file mode 100644 index 00000000000..92cf6f03a70 --- /dev/null +++ b/docs/generators_utils_tooltip.js.html @@ -0,0 +1,107 @@ + + + + + JSDoc: Source: generators/utils/tooltip.js + + + + + + + + + + +
+ +

Source: generators/utils/tooltip.js

+ + + + + + +
+
+
"use strict";
+/**
+ *
+ * Tooltip object that consists of tooltips for various of
+ * features
+ *
+ * @returns {Object} An Object that consists of tooltip methods to be invoked
+ */
+
+module.exports = {
+	uglify: _ => {
+		return `/*
+ * We've enabled UglifyJSPlugin for you! This minifies your app
+ * in order to load faster and run less javascript.
+ *
+ * https://github.com/webpack-contrib/uglifyjs-webpack-plugin
+ *
+ */`;
+	},
+	commonsChunk: _ => {
+		return `/*
+ * We've enabled commonsChunkPlugin for you. This allows your app to
+ * load faster and it splits the modules you provided as entries across
+ * different bundles!
+ *
+ * https://webpack.js.org/plugins/commons-chunk-plugin/
+ *
+ */`;
+	},
+	cssPlugin: _ => {
+		return `/*
+ * We've enabled ExtractTextPlugin for you. This allows your app to
+ * use css modules that will be moved into a separate CSS file instead of inside
+ * one of your module entries!
+ *
+ * https://github.com/webpack-contrib/extract-text-webpack-plugin
+ *
+ */`;
+	},
+	postcss: _ => {
+		return `/*
+ * We've enabled Postcss, autoprefixer and precss for you. This allows your app
+ * to lint  CSS, support variables and mixins, transpile future CSS syntax,
+ * inline images, and more!
+ *
+ * To enable SASS or LESS, add the respective loaders to module.rules
+ *
+ * https://github.com/postcss/postcss
+ *
+ * https://github.com/postcss/autoprefixer
+ *
+ * https://github.com/jonathantneal/precss
+ *
+ */`;
+	}
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_utils_validate.js.html b/docs/generators_utils_validate.js.html new file mode 100644 index 00000000000..23108d2e6cf --- /dev/null +++ b/docs/generators_utils_validate.js.html @@ -0,0 +1,68 @@ + + + + + JSDoc: Source: generators/utils/validate.js + + + + + + + + + + +
+ +

Source: generators/utils/validate.js

+ + + + + + +
+
+
"use strict";
+
+/**
+ *
+ * Validates an input to check if an input is provided
+ *
+ * @param {String} value - The input string to validate
+ * @returns {String | Boolean } Returns truthy if its long enough
+ * Or a string if the user hasn't written anything
+ */
+module.exports = value => {
+	const pass = value.length;
+	if (pass) {
+		return true;
+	}
+	return "Please specify an answer!";
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/generators_webpack-generator.js.html b/docs/generators_webpack-generator.js.html new file mode 100644 index 00000000000..c852a18e8c7 --- /dev/null +++ b/docs/generators_webpack-generator.js.html @@ -0,0 +1,128 @@ + + + + + JSDoc: Source: generators/webpack-generator.js + + + + + + + + + + +
+ +

Source: generators/webpack-generator.js

+ + + + + + +
+
+
const path = require("path");
+const mkdirp = require("mkdirp");
+const Generator = require("yeoman-generator");
+const copyUtils = require("../utils/copy-utils");
+
+/**
+ * Creates a Yeoman Generator that generates a project conforming
+ * to webpack-defaults.
+ *
+ * @param {any[]} prompts An array of Yeoman prompt objects
+ *
+ * @param {string} templateDir Absolute path to template directory
+ *
+ * @param {string[]} copyFiles An array of file paths (relative to `./templates`)
+ * of files to be copied to the generated project. File paths should be of the
+ * form `path/to/file.js.tpl`.
+ *
+ * @param {string[]} copyTemplateFiles An array of file paths (relative to
+ * `./templates`) of files to be copied to the generated project. Template
+ * file paths should be of the form `path/to/_file.js.tpl`.
+ *
+ * @param {Function} templateFn A function that is passed a generator instance and
+ * returns an object containing data to be supplied to the template files.
+ *
+ * @returns {Generator} A class extending Generator
+ */
+function webpackGenerator(
+	prompts,
+	templateDir,
+	copyFiles,
+	copyTemplateFiles,
+	templateFn
+) {
+	//eslint-disable-next-line
+	return class extends Generator {
+		prompting() {
+			return this.prompt(prompts).then(props => {
+				this.props = props;
+			});
+		}
+
+		default() {
+			const currentDirName = path.basename(this.destinationPath());
+			if (currentDirName !== this.props.name) {
+				this.log(`
+				Your project must be inside a folder named ${this.props.name}
+				I will create this folder for you.
+				`);
+				mkdirp(this.props.name);
+				const pathToProjectDir = this.destinationPath(this.props.name);
+				this.destinationRoot(pathToProjectDir);
+			}
+		}
+
+		writing() {
+			this.copy = copyUtils.generatorCopy(this, templateDir);
+			this.copyTpl = copyUtils.generatorCopyTpl(
+				this,
+				templateDir,
+				templateFn(this)
+			);
+
+			copyFiles.forEach(this.copy);
+			copyTemplateFiles.forEach(this.copyTpl);
+		}
+
+		install() {
+			this.npmInstall(["webpack-defaults", "bluebird"], {
+				"save-dev": true
+			}).then(() => {
+				this.spawnCommand("npm", ["run", "webpack-defaults"]);
+			});
+		}
+	};
+}
+
+module.exports = webpackGenerator;
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/global.html b/docs/global.html new file mode 100644 index 00000000000..e9d2092e3d6 --- /dev/null +++ b/docs/global.html @@ -0,0 +1,6441 @@ + + + + + JSDoc: Global + + + + + + + + + + +
+ +

Global

+ + + + + + +
+ +
+ +

+ + +
+ +
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + +

Methods

+ + + + + + + +

addProperty(j, p, key, value) → {Node}

+ + + + + + +
+ Recursively adds an object/property to a node +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
p + + +Node + + + + AST node
key + + +String + + + + key of a key/val object
value + + +Any + + + + Any type of object
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ - the created ast +
+ + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

createIdentifierOrLiteral(j, val) → {Node}

+ + + + + + +
+ Creates an appropriate identifier or literal property +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
val + + +String +| + +Boolean +| + +Number + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

createLiteral(j, val) → {Node}

+ + + + + + +
+ Creates an appropriate literal property +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
val + + +String +| + +Boolean +| + +Number + + + +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

createOrUpdatePluginByName(j, rootNodePath, pluginName, options) → {Void}

+ + + + + + +
+ Finds or creates a node for a given plugin name string with options object +If plugin declaration already exist, options are merged. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
rootNodePath + + +Node + + + + `plugins: []` NodePath where plugin should be added. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
pluginName + + +String + + + + ex. `webpack.LoaderOptionsPlugin`
options + + +Object + + + + plugin options
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Void + + +
+
+ + + + + + + + + + + + + +

createProperty(j, key, value) → {Node}

+ + + + + + +
+ Creates an Object's property with a given key and value +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
key + + +String +| + +Number + + + + Property key
value + + +String +| + +Number +| + +Boolean + + + + Property value
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

defineTest(dirName, transformName, testFilePrefixopt, transformObject, action) → {Void}

+ + + + + + +
+ Handles some boilerplate around defining a simple jest/Jasmine test for a +jscodeshift transform. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDescription
dirName + + +String + + + + + + + + + + contains the name of the directory the test is located in. This + should normally be passed via __dirname.
transformName + + +String + + + + + + + + + + contains the filename of the transform being tested, + excluding the .js extension.
testFilePrefix + + +String + + + + + + <optional>
+ + + + + +
Optionally contains the name of the file with the test + data. If not specified, it defaults to the same value as `transformName`. + This will be suffixed with ".input.js" for the input file and ".output.js" + for the expected output. For example, if set to "foo", we will read the + "foo.input.js" file, pass this to the transform, and expect its output to + be equal to the contents of "foo.output.js".
transformObject + + +any + + + + + + + + + + Object to be transformed with the transformations
action + + +String + + + + + + + + + + init, update or remove, decides how to format the AST
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ Jest makes sure to execute the globally defined functions +
+ + + +
+
+ Type +
+
+ +Void + + +
+
+ + + + + + + + + + + + + +

findInvocation(j, node, pluginName) → {Boolean}

+ + + + + + +
+ Check whether `node` is the invocation of the plugin denoted by `pluginName` +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +Object + + + + jscodeshift top-level import
node + + +Node + + + + ast node to check
pluginName + + +String + + + + name of the plugin
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ isPluginInvocation - whether `node` is the invocation of the plugin denoted by `pluginName` +
+ + + +
+
+ Type +
+
+ +Boolean + + +
+
+ + + + + + + + + + + + + +

findPluginsByName(j, node, pluginNamesArray) → {Node}

+ + + + + + +
+ Find paths that match `new name.space.PluginName()` for a +given array of plugin names +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
node + + +Node + + + + Node to start search from
pluginNamesArray + + +Array.<String> + + + + Array of plugin names like `webpack.LoaderOptionsPlugin`
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ Node that has the pluginName +
+ + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

findRootNodesByName(j, node, propName) → {Node}

+ + + + + + +
+ Finds the path to the `name: []` node +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
node + + +Node + + + + Node to start search from
propName + + +String + + + + property to search for
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ found node and +
+ + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

findVariableToPlugin(j, rootNode, pluginPackageName) → {String}

+ + + + + + +
+ Finds the variable to which a third party plugin is assigned to +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
rootNode + + +Node + + + + `plugins: []` Root Node. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
pluginPackageName + + +String + + + + ex. `extract-text-plugin`
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ variable name - ex. 'const s = require(s) gives "s"` +
+ + + +
+
+ Type +
+
+ +String + + +
+
+ + + + + + + + + + + + + +

generatorCopy(generator, templateDir) → {function}

+ + + + + + +
+ Takes in a file path in the `./templates` directory. Copies that +file to the destination, with the `.tpl` extension stripped. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
generator + + +Generator + + + + A Yeoman Generator instance
templateDir + + +string + + + + Absolute path to template directory
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ A curried function that takes a file path and copies it +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

generatorCopyTpl(generator, templateDir, templateData) → {function}

+ + + + + + +
+ Takes in a file path in the `./templates` directory. Copies that +file to the destination, with the `.tpl` extension and `_` prefix +stripped. Passes `this.props` to the template. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
generator + + +Generator + + + + A Yeoman Generator instance
templateDir + + +string + + + + Absolute path to template directory
templateData + + +any + + + + An object containing the data passed to +the template files.
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ A curried function that takes a file path and copies it +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

getPackageManager() → {String}

+ + + + + + +
+ Returns the name of package manager to use, +preferring yarn over npm if available +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ - The package manager name +
+ + + +
+
+ Type +
+
+ +String + + +
+
+ + + + + + + + + + + + + +

getPathToGlobalPackages() → {String}

+ + + + + + +
+ Returns the path to globally installed +npm packages, depending on the available +package manager determined by `getPackageManager` +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ path - Path to global node_modules folder +
+ + + +
+
+ Type +
+
+ +String + + +
+
+ + + + + + + + + + + + + +

getRequire(j, constName, packagePath) → {Node}

+ + + + + + +
+ Returns constructed require symbol +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
j + + +any + + + + — jscodeshift API
constName + + +String + + + + Name of require
packagePath + + +String + + + + path of required package
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ - the created ast +
+ + + +
+
+ Type +
+
+ +Node + + +
+
+ + + + + + + + + + + + + +

getRootPathModule(dep) → {String}

+ + + + + + +
+ Find the path of a given module +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
dep + + +Object + + + + dependency to find
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ string with given path +
+ + + +
+
+ Type +
+
+ +String + + +
+
+ + + + + + + + + + + + + +

isType(path, type) → {Boolean}

+ + + + + + +
+ Returns true if type is given type +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
path + + +Node + + + + pathNode
type + + +String + + + + node type
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Boolean + + +
+
+ + + + + + + + + + + + + +

loaderCreator() → {void}

+ + + + + + +
+ Runs a yeoman generator to create a new webpack loader project +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +void + + +
+
+ + + + + + + + + + + + + +

makeLoaderName(name) → {string}

+ + + + + + +
+ Formats a string into webpack loader format +(eg: 'style-loader', 'raw-loader') +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + A loader name to be formatted
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ The formatted string +
+ + + +
+
+ Type +
+
+ +string + + +
+
+ + + + + + + + + + + + + +

mapOptionsToTransform(transformObject, config) → {Object}

+ + + + + + +
+ Maps back transforms that needs to be run using the configuration +provided. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
transformObject + + +Object + + + + An Object with all transformations
config + + +Object + + + + Configuration to transform
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ - An Object with the transformations to be run +
+ + + +
+
+ Type +
+
+ +Object + + +
+
+ + + + + + + + + + + + + +

pluginCreator() → {void}

+ + + + + + +
+ Runs a yeoman generator to create a new webpack plugin project +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +void + + +
+
+ + + + + + + + + + + + + +

processPromise(child) → {Promise}

+ + + + + + +
+ Attaches a promise to the installation of the package +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
child + + +function + + + + The function to attach a promise to
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ promise - Returns a promise to the installation +
+ + + +
+
+ Type +
+
+ +Promise + + +
+
+ + + + + + + + + + + + + +

replaceAt(string, index, replace) → {String}

+ + + + + + +
+ Replaces the string with a substring at the given index +https://gist.github.com/efenacigiray/9367920 +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
string + + +String + + + + string to be modified
index + + +Number + + + + index to replace from
replace + + +String + + + + string to replace starting from index
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ string - The newly mutated string +
+ + + +
+
+ Type +
+
+ +String + + +
+
+ + + + + + + + + + + + + +

resolvePackages(pkg) → {function|Error}

+ + + + + + +
+ Resolves and installs the packages, later sending them to @creator +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
pkg + + +Array.<String> + + + + The dependencies to be installed
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ creator - Builds +a webpack configuration through yeoman or throws an error +
+ + + +
+
+ Type +
+
+ +function +| + +Error + + +
+
+ + + + + + + + + + + + + +

runSingleTransform(dirName, transformName, testFilePrefixopt, initOptions, action) → {function}

+ + + + + + +
+ Utility function to run a jscodeshift script within a unit test. +This makes several assumptions about the environment. + +Notes: +- The test should be located in a subdirectory next to the transform itself. + Commonly tests are located in a directory called __tests__. + +- Test data should be located in a directory called __testfixtures__ + alongside the transform and __tests__ directory. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDescription
dirName + + +String + + + + + + + + + + contains the name of the directory the test is located in. This + should normally be passed via __dirname.
transformName + + +String + + + + + + + + + + contains the filename of the transform being tested, + excluding the .js extension.
testFilePrefix + + +String + + + + + + <optional>
+ + + + + +
Optionally contains the name of the file with the test + data. If not specified, it defaults to the same value as `transformName`. + This will be suffixed with ".input.js" for the input file and ".output.js" + for the expected output. For example, if set to "foo", we will read the + "foo.input.js" file, pass this to the transform, and expect its output to + be equal to the contents of "foo.output.js".
initOptions + + +Object +| + +Boolean +| + +String + + + + + + + + + + TBD
action + + +String + + + + + + + + + + init, update or remove, decides how to format the AST
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ Function that fires of the transforms +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

serve(args) → {function}

+ + + + + + +
+ Prompts for installing the devServer and running it +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
args + + +Object + + + + args processed from the CLI
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ invokes the devServer API +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

spawnChild(pkg) → {function}

+ + + + + + +
+ Spawns a new process that installs the addon/dependency +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
pkg + + +String + + + + The dependency to be installed
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ spawn - Installs the package +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

spawnNPM(pkg, isNew) → {function}

+ + + + + + +
+ Spawns a new process using npm +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
pkg + + +String + + + + The dependency to be installed
isNew + + +Boolean + + + + indicates if it needs to be updated or installed
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ spawn - Installs the package +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

spawnNPMWithArg(cmd) → {Void}

+ + + + + + +
+ Installs WDS using NPM with --save --dev etc +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
cmd + + +Object + + + + arg to spawn with
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Void + + +
+
+ + + + + + + + + + + + + +

spawnYarn(pkg, isNew) → {function}

+ + + + + + +
+ Spawns a new process using yarn +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
pkg + + +String + + + + The dependency to be installed
isNew + + +Boolean + + + + indicates if it needs to be updated or installed
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ spawn - Installs the package +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

spawnYarnWithArg(cmd) → {Void}

+ + + + + + +
+ Installs WDS using Yarn with add etc +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
cmd + + +Object + + + + arg to spawn with
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Void + + +
+
+ + + + + + + + + + + + + +

transform(source, transformsopt, optionsopt) → {String}

+ + + + + + +
+ Transforms a given piece of source code by applying selected transformations to the AST. +By default, transforms a webpack version 1 configuration file into a webpack version 2 +configuration file. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDescription
source + + +String + + + + + + + + + + source file contents
transforms + + +Array.<function()> + + + + + + <optional>
+ + + + + +
List of transformation functions, defined in the +order to apply them in. By default, all defined transformations.
options + + +Object + + + + + + <optional>
+ + + + + +
recast formatting options
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ source — transformed source code +
+ + + +
+
+ Type +
+
+ +String + + +
+
+ + + + + + + + + + + + + +

traverseAndGetProperties(arr, prop) → {Boolean}

+ + + + + + +
+ Checks if the given array has a given property +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
arr + + +Array + + + + array to check
prop + + +String + + + + property to check existence of
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ hasProp - Boolean indicating if the property +is present +
+ + + +
+
+ Type +
+
+ +Boolean + + +
+
+ + + + + + + + + + + + + +

webpackGenerator(prompts, templateDir, copyFiles, copyTemplateFiles, templateFn) → {Generator}

+ + + + + + +
+ Creates a Yeoman Generator that generates a project conforming +to webpack-defaults. +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
prompts + + +Array.<any> + + + + An array of Yeoman prompt objects
templateDir + + +string + + + + Absolute path to template directory
copyFiles + + +Array.<string> + + + + An array of file paths (relative to `./templates`) +of files to be copied to the generated project. File paths should be of the +form `path/to/file.js.tpl`.
copyTemplateFiles + + +Array.<string> + + + + An array of file paths (relative to +`./templates`) of files to be copied to the generated project. Template +file paths should be of the form `path/to/_file.js.tpl`.
templateFn + + +function + + + + A function that is passed a generator instance and +returns an object containing data to be supplied to the template files.
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + +
Returns:
+ + +
+ A class extending Generator +
+ + + +
+
+ Type +
+
+ +Generator + + +
+
+ + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000000..026d60b1ab6 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,65 @@ + + + + + JSDoc: Home + + + + + + + + + + +
+ +

Home

+ + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + \ No newline at end of file diff --git a/docs/index.js.html b/docs/index.js.html new file mode 100644 index 00000000000..ff905b55df3 --- /dev/null +++ b/docs/index.js.html @@ -0,0 +1,111 @@ + + + + + JSDoc: Source: index.js + + + + + + + + + + +
+ +

Source: index.js

+ + + + + + +
+
+
"use strict";
+
+const path = require("path");
+
+/**
+ *
+ * First function to be called after running a flag. This is a check,
+ * to match the flag with the respective require.
+ *
+ * @param {String} command - which feature to use
+ * @param {Object} args - arguments from the CLI
+ * @returns {Function} invokes the module with the supplied command
+ *
+ */
+
+module.exports = function initialize(command, args) {
+	const popArgs = args ? args.slice(2).pop() : null;
+	switch (command) {
+		case "init": {
+			const initPkgs = args.slice(2).length === 1 ? [] : [popArgs];
+			//eslint-disable-next-line
+			return require("./commands/init.js")(initPkgs);
+		}
+		case "migrate": {
+			const filePaths = args.slice(2).length === 1 ? [] : [popArgs];
+			if (!filePaths.length) {
+				throw new Error("Please specify a path to your webpack config");
+			}
+			const inputConfigPath = path.resolve(process.cwd(), filePaths[0]);
+			//eslint-disable-next-line
+			return require("./commands/migrate.js")(inputConfigPath, inputConfigPath);
+		}
+		case "add": {
+			//eslint-disable-next-line
+			return require("./commands/add")();
+		}
+		case "remove": {
+			//eslint-disable-next-line
+			return require("./commands/remove")();
+		}
+		case "update": {
+			return require("./commands/update")();
+		}
+		case "serve": {
+			return require("./commands/serve").serve();
+		}
+		case "make": {
+			return require("./commands/make")();
+		}
+		case "generate-loader": {
+			return require("./generate-loader/index.js")();
+		}
+		case "generate-plugin": {
+			return require("./generate-plugin/index.js")();
+		}
+		default: {
+			throw new Error(`Unknown command ${command} found`);
+		}
+	}
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/init_index.js.html b/docs/init_index.js.html new file mode 100644 index 00000000000..e2bb5be0d23 --- /dev/null +++ b/docs/init_index.js.html @@ -0,0 +1,145 @@ + + + + + JSDoc: Source: init/index.js + + + + + + + + + + +
+ +

Source: init/index.js

+ + + + + + +
+
+
"use strict";
+
+const path = require("path");
+const j = require("jscodeshift");
+const chalk = require("chalk");
+const pEachSeries = require("p-each-series");
+
+const runPrettier = require("../utils/run-prettier");
+const astTransform = require("../ast");
+const propTypes = require("../utils/prop-types");
+
+/**
+ *
+ * Maps back transforms that needs to be run using the configuration
+ * provided.
+ *
+ * @param {Object} transformObject - An Object with all transformations
+ * @param {Object} config - Configuration to transform
+ * @returns {Object} - An Object with the transformations to be run
+ */
+
+function mapOptionsToTransform(config) {
+	return Object.keys(config.webpackOptions).filter(k => propTypes.has(k));
+}
+
+/**
+ *
+ * Runs the transformations from an object we get from yeoman
+ *
+ * @param {Object} webpackProperties - Configuration to transform
+ * @param {String} action - Action to be done on the given ast
+ * @returns {Promise} - A promise that writes each transform, runs prettier
+ * and writes the file
+ */
+
+module.exports = function runTransform(webpackProperties, action) {
+	// webpackOptions.name sent to nameTransform if match
+	const webpackConfig = Object.keys(webpackProperties).filter(p => {
+		return p !== "configFile" && p !== "configPath";
+	});
+	const initActionNotDefined = action && action !== "init" ? true : false;
+
+	webpackConfig.forEach(scaffoldPiece => {
+		const config = webpackProperties[scaffoldPiece];
+		const transformations = mapOptionsToTransform(config);
+		const ast = j(
+			initActionNotDefined
+				? webpackProperties.configFile
+				: "module.exports = {}"
+		);
+		const transformAction = action || null;
+
+		return pEachSeries(transformations, f => {
+			return astTransform(j, ast, config.webpackOptions[f], transformAction, f);
+		})
+			.then(_ => {
+				let configurationName;
+				if (!config.configName) {
+					configurationName = "webpack.config.js";
+				} else {
+					configurationName = "webpack." + config.configName + ".js";
+				}
+
+				const outputPath = initActionNotDefined
+					? webpackProperties.configPath
+					: path.join(process.cwd(), configurationName);
+				const source = ast.toSource({
+					quote: "single"
+				});
+
+				runPrettier(outputPath, source);
+			})
+			.catch(err => {
+				console.error(err.message ? err.message : err);
+			});
+	});
+	if (initActionNotDefined && webpackProperties.config.item) {
+		process.stdout.write(
+			"\n" +
+				chalk.green(
+					`Congratulations! ${
+						webpackProperties.config.item
+					} has been ${action}ed!\n`
+				)
+		);
+	} else {
+		process.stdout.write(
+			"\n" +
+				chalk.green(
+					"Congratulations! Your new webpack configuration file has been created!\n"
+				)
+		);
+	}
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_bannerPlugin_bannerPlugin.js.html b/docs/migrate_bannerPlugin_bannerPlugin.js.html new file mode 100644 index 00000000000..e9926bf3ab2 --- /dev/null +++ b/docs/migrate_bannerPlugin_bannerPlugin.js.html @@ -0,0 +1,84 @@ + + + + + JSDoc: Source: migrate/bannerPlugin/bannerPlugin.js + + + + + + + + + + +
+ +

Source: migrate/bannerPlugin/bannerPlugin.js

+ + + + + + +
+
+
const utils = require("../../utils/ast-utils");
+
+/**
+ *
+ * Transform for BannerPlugin arguments. Consolidates first and second argument (if
+ * both are present) into single options object.
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast) {
+	return utils
+		.findPluginsByName(j, ast, ["webpack.BannerPlugin"])
+		.forEach(path => {
+			const args = path.value.arguments; // any node
+			// If the first argument is a literal replace it with object notation
+			// See https://webpack.js.org/guides/migrating/#bannerplugin-breaking-change
+			if (args && args.length > 1 && args[0].type === j.Literal.name) {
+				// and remove the first argument
+				path.value.arguments = [path.value.arguments[1]];
+				utils.createOrUpdatePluginByName(
+					j,
+					path.parent,
+					"webpack.BannerPlugin",
+					{
+						banner: args[0].value
+					}
+				);
+			}
+		});
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_extractTextPlugin_extractTextPlugin.js.html b/docs/migrate_extractTextPlugin_extractTextPlugin.js.html new file mode 100644 index 00000000000..8bf2f084635 --- /dev/null +++ b/docs/migrate_extractTextPlugin_extractTextPlugin.js.html @@ -0,0 +1,109 @@ + + + + + JSDoc: Source: migrate/extractTextPlugin/extractTextPlugin.js + + + + + + + + + + +
+ +

Source: migrate/extractTextPlugin/extractTextPlugin.js

+ + + + + + +
+
+
const utils = require("../../utils/ast-utils");
+
+/**
+ *
+ * Check whether `node` is the invocation of the plugin denoted by `pluginName`
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} node - ast node to check
+ * @param {String} pluginName - name of the plugin
+ * @returns {Boolean} isPluginInvocation - whether `node` is the invocation of the plugin denoted by `pluginName`
+ */
+
+function findInvocation(j, node, pluginName) {
+	let found = false;
+	found =
+		j(node)
+			.find(j.MemberExpression)
+			.filter(p => p.get("object").value.name === pluginName)
+			.size() > 0;
+	return found;
+}
+
+/**
+ *
+ * Transform for ExtractTextPlugin arguments. Consolidates arguments into single options object.
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast) {
+	const changeArguments = function(p) {
+		const args = p.value.arguments;
+
+		const literalArgs = args.filter(p => utils.isType(p, "Literal"));
+		if (literalArgs && literalArgs.length > 1) {
+			const newArgs = j.objectExpression(
+				literalArgs.map((p, index) =>
+					utils.createProperty(j, index === 0 ? "fallback" : "use", p.value)
+				)
+			);
+			p.value.arguments = [newArgs];
+		}
+		return p;
+	};
+	const name = utils.findVariableToPlugin(
+		j,
+		ast,
+		"extract-text-webpack-plugin"
+	);
+	if (!name) return ast;
+
+	return ast
+		.find(j.CallExpression)
+		.filter(p => findInvocation(j, p, name))
+		.forEach(changeArguments);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_index.js.html b/docs/migrate_index.js.html new file mode 100644 index 00000000000..de45d38c97c --- /dev/null +++ b/docs/migrate_index.js.html @@ -0,0 +1,130 @@ + + + + + JSDoc: Source: migrate/index.js + + + + + + + + + + +
+ +

Source: migrate/index.js

+ + + + + + +
+
+
const jscodeshift = require("jscodeshift");
+const pEachSeries = require("p-each-series");
+const PLazy = require("p-lazy");
+
+const loadersTransform = require("./loaders/loaders");
+const resolveTransform = require("./resolve/resolve");
+const removeJsonLoaderTransform = require("./removeJsonLoader/removeJsonLoader");
+const uglifyJsPluginTransform = require("./uglifyJsPlugin/uglifyJsPlugin");
+const loaderOptionsPluginTransform = require("./loaderOptionsPlugin/loaderOptionsPlugin");
+const bannerPluginTransform = require("./bannerPlugin/bannerPlugin");
+const extractTextPluginTransform = require("./extractTextPlugin/extractTextPlugin");
+const removeDeprecatedPluginsTransform = require("./removeDeprecatedPlugins/removeDeprecatedPlugins");
+
+const transformsObject = {
+	loadersTransform,
+	resolveTransform,
+	removeJsonLoaderTransform,
+	uglifyJsPluginTransform,
+	loaderOptionsPluginTransform,
+	bannerPluginTransform,
+	extractTextPluginTransform,
+	removeDeprecatedPluginsTransform
+};
+
+const transformations = Object.keys(transformsObject).reduce((res, key) => {
+	res[key] = (ast, source) =>
+		transformSingleAST(ast, source, transformsObject[key]);
+	return res;
+}, {});
+
+function transformSingleAST(ast, source, transformFunction) {
+	return new PLazy((resolve, reject) => {
+		setTimeout(_ => {
+			try {
+				resolve(transformFunction(jscodeshift, ast, source));
+			} catch (err) {
+				reject(err);
+			}
+		}, 0);
+	});
+}
+
+/**
+ *
+ * Transforms a given piece of source code by applying selected transformations to the AST.
+ * By default, transforms a webpack version 1 configuration file into a webpack version 2
+ * configuration file.
+ *
+ * @param {String} source - source file contents
+ * @param {Function[]} [transforms] - List of transformation functions, defined in the
+ * order to apply them in. By default, all defined transformations.
+ * @param {Object} [options] - recast formatting options
+ * @returns {String} source — transformed source code
+ */
+
+function transform(source, transforms, options) {
+	const ast = jscodeshift(source);
+	const recastOptions = Object.assign(
+		{
+			quote: "single"
+		},
+		options
+	);
+	transforms =
+		transforms || Object.keys(transformations).map(k => transformations[k]);
+	return pEachSeries(transforms, f => f(ast, source))
+		.then(_ => {
+			return ast.toSource(recastOptions);
+		})
+		.catch(err => {
+			console.error(err);
+		});
+}
+
+module.exports = {
+	transform,
+	transformSingleAST,
+	transformations
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html b/docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html new file mode 100644 index 00000000000..9e0c754a815 --- /dev/null +++ b/docs/migrate_loaderOptionsPlugin_loaderOptionsPlugin.js.html @@ -0,0 +1,98 @@ + + + + + JSDoc: Source: migrate/loaderOptionsPlugin/loaderOptionsPlugin.js + + + + + + + + + + +
+ +

Source: migrate/loaderOptionsPlugin/loaderOptionsPlugin.js

+ + + + + + +
+
+
const isEmpty = require("lodash/isEmpty");
+const findPluginsByName = require("../../utils/ast-utils").findPluginsByName;
+const createOrUpdatePluginByName = require("../../utils/ast-utils")
+	.createOrUpdatePluginByName;
+const safeTraverse = require("../../utils/ast-utils").safeTraverse;
+
+/**
+ *
+ * Transform which adds context information for old loaders by injecting a `LoaderOptionsPlugin`
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ *
+ */
+
+module.exports = function(j, ast) {
+	const loaderOptions = {};
+
+	// If there is debug: true, set debug: true in the plugin
+	// TODO: remove global debug setting
+	// TODO: I can't figure out how to find the topmost `debug: true`. help!
+	if (ast.find(j.Identifier, { name: "debug" }).size()) {
+		loaderOptions.debug = true;
+	}
+
+	// If there is UglifyJsPlugin, set minimize: true
+	if (findPluginsByName(j, ast, ["webpack.optimize.UglifyJsPlugin"]).size()) {
+		loaderOptions.minimize = true;
+	}
+
+	return ast
+		.find(j.ArrayExpression)
+		.filter(
+			path =>
+				safeTraverse(path, ["parent", "value", "key", "name"]) === "plugins"
+		)
+		.forEach(path => {
+			!isEmpty(loaderOptions) &&
+				createOrUpdatePluginByName(
+					j,
+					path,
+					"webpack.LoaderOptionsPlugin",
+					loaderOptions
+				);
+		});
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_loaders_loaders.js.html b/docs/migrate_loaders_loaders.js.html new file mode 100644 index 00000000000..9358f21bd6b --- /dev/null +++ b/docs/migrate_loaders_loaders.js.html @@ -0,0 +1,430 @@ + + + + + JSDoc: Source: migrate/loaders/loaders.js + + + + + + + + + + +
+ +

Source: migrate/loaders/loaders.js

+ + + + + + +
+
+
const utils = require("../../utils/ast-utils");
+
+/**
+ *
+ * Transform for loaders. Transforms pre- and postLoaders into enforce options,
+ * moves loader configuration into rules array, transforms query strings and
+ * props into loader options, and adds -loader suffix to loader names.
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast) {
+	/**
+	 * Creates an Array expression out of loaders string
+	 *
+	 *
+	 * For syntaxes like
+	 *
+	 * {
+	 *   loader: 'style!css`
+	 * }
+	 *
+	 * or
+	 *
+	 * {
+	 *   loaders: ['style', 'css']
+	 * }
+	 *
+	 * or
+	 *
+	 * loaders: [{
+	 *   loader: 'style'
+	 * },
+	 * {
+	 *   loader: 'css',
+	 * }]
+	 *
+	 * it should generate
+	 *
+	 * {
+	 *   use: [{
+	 *     loader: 'style'
+	 *   },
+	 *   {
+	 *     loader: 'css'
+	 *   }]
+	 * }
+	 *
+	 * @param  {Node} path - object expression ast
+	 * @returns {Node} path - object expression ast with array expression instead of loaders string
+	 */
+
+	const createArrayExpressionFromArray = function(path) {
+		const value = path.value;
+		// Find paths with `loaders` keys in the given Object
+		const paths = value.properties.filter(prop =>
+			prop.key.name.startsWith("loader")
+		);
+		// For each pair of key and value
+		paths.forEach(pair => {
+			// Replace 'loaders' Identifier with 'use'
+			pair.key.name = "use";
+			// If the value is an Array
+			if (pair.value.type === j.ArrayExpression.name) {
+				// replace its elements
+				const pairValue = pair.value;
+				pair.value = j.arrayExpression(
+					pairValue.elements.map(arrElement => {
+						// If items of the array are Strings
+						if (arrElement.type === j.Literal.name) {
+							// Replace with `{ loader: LOADER }` Object
+							return j.objectExpression([
+								utils.createProperty(j, "loader", arrElement.value)
+							]);
+						}
+						// otherwise keep the existing element
+						return arrElement;
+					})
+				);
+				//	If the value is String of loaders like 'style!css'
+			} else if (pair.value.type === j.Literal.name) {
+				// Replace it with Array expression of loaders
+				const literalValue = pair.value;
+				pair.value = j.arrayExpression(
+					literalValue.value.split("!").map(loader => {
+						return j.objectExpression([
+							utils.createProperty(j, "loader", loader)
+						]);
+					})
+				);
+			}
+		});
+		return path;
+	};
+
+	/**
+	 *
+	 * Puts query parameters from loader value into options object
+	 *
+	 * @param {Node} p - object expression ast for loader object
+	 * @returns {Node} objectExpression - an new object expression ast containing the query parameters
+	 */
+
+	const createLoaderWithQuery = p => {
+		let properties = p.value.properties;
+		let loaderValue = properties.reduce(
+			(val, prop) => (prop.key.name === "loader" ? prop.value.value : val),
+			""
+		);
+		let loader = loaderValue.split("?")[0];
+		let query = loaderValue.split("?")[1];
+		let options = query.split("&").map(option => {
+			const param = option.split("=");
+			const key = param[0];
+			const val = param[1] || true; // No value in query string means it is truthy value
+			return j.objectProperty(j.identifier(key), utils.createLiteral(j, val));
+		});
+		let loaderProp = utils.createProperty(j, "loader", loader);
+		let queryProp = j.property(
+			"init",
+			j.identifier("options"),
+			j.objectExpression(options)
+		);
+		return j.objectExpression([loaderProp, queryProp]);
+	};
+
+	/**
+	 *
+	 * Determine whether a loader has a query string
+	 *
+	 * @param {Node} p - object expression ast for loader object
+	 * @returns {Boolean} hasLoaderQueryString - whether the loader object contains a query string
+	 */
+
+	const findLoaderWithQueryString = p => {
+		return p.value.properties.reduce((predicate, prop) => {
+			return (
+				(utils.safeTraverse(prop, ["value", "value", "indexOf"]) &&
+					prop.value.value.indexOf("?") > -1) ||
+				predicate
+			);
+		}, false);
+	};
+
+	/**
+	 * Check if the identifier is the `loaders` prop in the `module` object.
+	 * If the path value is `loaders` and it’s located in `module` object
+	 * we assume it’s the loader's section.
+	 *
+	 * @param {Node} path - identifier ast
+	 * @returns {Boolean} isLoadersProp - whether the identifier is the `loaders` prop in the `module` object
+	 */
+
+	const checkForLoader = path =>
+		path.value.name === "loaders" &&
+		utils.safeTraverse(path, [
+			"parent",
+			"parent",
+			"parent",
+			"node",
+			"key",
+			"name"
+		]) === "module";
+
+	/**
+	 * Puts pre- or postLoader into `loaders` object and adds the appropriate `enforce` property
+	 *
+	 * @param {Node} p - object expression ast that has a key for either 'preLoaders' or 'postLoaders'
+	 * @returns {Node} p - object expression with a `loaders` object and appropriate `enforce` properties
+	 */
+
+	const fitIntoLoaders = p => {
+		let loaders;
+		p.value.properties.map(prop => {
+			const keyName = prop.key.name;
+			if (keyName === "loaders") {
+				loaders = prop.value;
+			}
+		});
+		p.value.properties.map(prop => {
+			const keyName = prop.key.name;
+			if (keyName !== "loaders") {
+				const enforceVal = keyName === "preLoaders" ? "pre" : "post";
+				prop.value.elements.map(elem => {
+					elem.properties.push(utils.createProperty(j, "enforce", enforceVal));
+					if (loaders && loaders.type === "ArrayExpression") {
+						loaders.elements.push(elem);
+					} else {
+						prop.key.name = "loaders";
+					}
+				});
+			}
+		});
+		if (loaders) {
+			p.value.properties = p.value.properties.filter(
+				prop => prop.key.name === "loaders"
+			);
+		}
+		return p;
+	};
+
+	/**
+	 * Find pre and postLoaders in the ast and put them into the `loaders` array
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const prepostLoaders = () =>
+		ast
+			.find(j.ObjectExpression)
+			.filter(p => utils.findObjWithOneOfKeys(p, ["preLoaders", "postLoaders"]))
+			.forEach(fitIntoLoaders);
+
+	/**
+	 * Convert top level `loaders` to `rules`
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const loadersToRules = () =>
+		ast
+			.find(j.Identifier)
+			.filter(checkForLoader)
+			.forEach(p => (p.value.name = "rules"));
+
+	/**
+	 * Convert `loader` and `loaders` to Array of {Rule.Use}
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const loadersToArrayExpression = () =>
+		ast
+			.find(j.ObjectExpression)
+			.filter(path => utils.findObjWithOneOfKeys(path, ["loader", "loaders"]))
+			.filter(
+				path =>
+					utils.safeTraverse(path, [
+						"parent",
+						"parent",
+						"node",
+						"key",
+						"name"
+					]) === "rules"
+			)
+			.forEach(createArrayExpressionFromArray);
+
+	/**
+	 * Find loaders with options encoded as a query string and replace the string with an options object
+	 *
+	 * i.e. for loader like
+	 *
+	 * {
+	 *   loader: 'css?modules&importLoaders=1&string=test123'
+	 * }
+	 *
+	 * it should generate
+	 * {
+	 *   loader: 'css-loader',
+	 *   options: {
+	 *     modules: true,
+	 *     importLoaders: 1,
+	 *     string: 'test123'
+	 *   }
+	 * }
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const loaderWithQueryParam = () =>
+		ast
+			.find(j.ObjectExpression)
+			.filter(p => utils.findObjWithOneOfKeys(p, ["loader"]))
+			.filter(findLoaderWithQueryString)
+			.replaceWith(createLoaderWithQuery);
+
+	/**
+	 * Find nodes with a `query` key and replace it with `options`
+	 *
+	 * i.e. for
+	 * {
+	 *   query: { ... }
+	 * }
+	 *
+	 * it should generate
+	 *
+	 * {
+	 *   options: { ... }
+	 * }
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const loaderWithQueryProp = () =>
+		ast
+			.find(j.Identifier)
+			.filter(p => p.value.name === "query")
+			.replaceWith(j.identifier("options"));
+
+	/**
+	 * Add required `-loader` suffix to a loader with missing suffix
+	 * e.g. for `babel` it should generate `babel-loader`
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const addLoaderSuffix = () =>
+		ast.find(j.ObjectExpression).forEach(path => {
+			path.value.properties.forEach(prop => {
+				if (
+					prop.key.name === "loader" &&
+					utils.safeTraverse(prop, ["value", "value"]) &&
+					!prop.value.value.endsWith("-loader")
+				) {
+					prop.value = j.literal(prop.value.value + "-loader");
+				}
+			});
+		});
+
+	/**
+	 *
+	 * Puts options object outside use object into use object
+	 *
+	 * @param {Node} p - object expression ast that has a key for either 'options' or 'use'
+	 * @returns {Node} objectExpression - an use object expression ast containing the options and loader
+	 */
+
+	const fitOptionsToUse = p => {
+		let options;
+		p.value.properties.forEach(prop => {
+			const keyName = prop.key.name;
+			if (keyName === "options") {
+				options = prop;
+			}
+		});
+
+		if (options) {
+			p.value.properties = p.value.properties.filter(
+				prop => prop.key.name !== "options"
+			);
+
+			p.value.properties.forEach(prop => {
+				const keyName = prop.key.name;
+				if (keyName === "use") {
+					prop.value.elements[0].properties.push(options);
+				}
+			});
+		}
+
+		return p;
+	};
+
+	/**
+	 * Move `options` inside the Array of {Rule.Use}
+	 *
+	 * @returns {Node} ast - jscodeshift ast
+	 */
+
+	const moveOptionsToUse = () =>
+		ast
+			.find(j.ObjectExpression)
+			.filter(p => utils.findObjWithOneOfKeys(p, ["use"]))
+			.forEach(fitOptionsToUse);
+
+	const transforms = [
+		prepostLoaders,
+		loadersToRules,
+		loadersToArrayExpression,
+		loaderWithQueryParam,
+		loaderWithQueryProp,
+		addLoaderSuffix,
+		moveOptionsToUse
+	];
+	transforms.forEach(t => t());
+
+	return ast;
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_outputPath_outputPath.js.html b/docs/migrate_outputPath_outputPath.js.html new file mode 100644 index 00000000000..d57f6d132f3 --- /dev/null +++ b/docs/migrate_outputPath_outputPath.js.html @@ -0,0 +1,125 @@ + + + + + JSDoc: Source: migrate/outputPath/outputPath.js + + + + + + + + + + +
+ +

Source: migrate/outputPath/outputPath.js

+ + + + + + +
+
+
const utils = require("../../utils/ast-utils");
+
+/**
+ *
+ * Transform which adds `path.join` call to `output.path` literals
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast) {
+	const literalOutputPath = ast
+		.find(j.ObjectExpression)
+		.filter(
+			p =>
+				utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) ===
+				"output"
+		)
+		.find(j.Property)
+		.filter(
+			p =>
+				utils.safeTraverse(p, ["value", "key", "name"]) === "path" &&
+				utils.safeTraverse(p, ["value", "value", "type"]) === "Literal"
+		);
+
+	if (literalOutputPath) {
+		let pathVarName = "path";
+		let isPathPresent = false;
+		const pathDeclaration = ast
+			.find(j.VariableDeclarator)
+			.filter(
+				p =>
+					utils.safeTraverse(p, ["value", "init", "callee", "name"]) ===
+					"require"
+			)
+			.filter(
+				p =>
+					utils.safeTraverse(p, ["value", "init", "arguments"]) &&
+					p.value.init.arguments.reduce((isPresent, a) => {
+						return (a.type === "Literal" && a.value === "path") || isPresent;
+					}, false)
+			);
+
+		if (pathDeclaration) {
+			isPathPresent = true;
+			pathDeclaration.forEach(p => {
+				pathVarName = utils.safeTraverse(p, ["value", "id", "name"]);
+			});
+		}
+		const finalPathName = pathVarName;
+		literalOutputPath
+			.find(j.Literal)
+			.replaceWith(p => replaceWithPath(j, p, finalPathName));
+
+		if (!isPathPresent) {
+			const pathRequire = utils.getRequire(j, "path", "path");
+			return ast
+				.find(j.Program)
+				.replaceWith(p =>
+					j.program([].concat(pathRequire).concat(p.value.body))
+				);
+		}
+	}
+	return ast;
+};
+
+function replaceWithPath(j, p, pathVarName) {
+	const convertedPath = j.callExpression(
+		j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false),
+		[j.identifier("__dirname"), p.value]
+	);
+	return convertedPath;
+}
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html b/docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html new file mode 100644 index 00000000000..211fc876846 --- /dev/null +++ b/docs/migrate_removeDeprecatedPlugins_removeDeprecatedPlugins.js.html @@ -0,0 +1,95 @@ + + + + + JSDoc: Source: migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.js + + + + + + + + + + +
+ +

Source: migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.js

+ + + + + + +
+
+
const chalk = require("chalk");
+const utils = require("../../utils/ast-utils");
+
+/**
+ *
+ * Find deprecated plugins and remove them from the `plugins` array, if possible.
+ * Otherwise, warn the user about removing deprecated plugins manually.
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast, source) {
+	// List of deprecated plugins to remove
+	// each item refers to webpack.optimize.[NAME] construct
+	const deprecatedPlugingsList = [
+		"webpack.optimize.OccurrenceOrderPlugin",
+		"webpack.optimize.DedupePlugin"
+	];
+
+	return utils
+		.findPluginsByName(j, ast, deprecatedPlugingsList)
+		.forEach(path => {
+			// For now we only support the case where plugins are defined in an Array
+			const arrayPath = utils.safeTraverse(path, ["parent", "value"]);
+			if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) {
+				// Check how many plugins are defined and
+				// if there is only last plugin left remove `plugins: []` node
+				const arrayElementsPath = utils.safeTraverse(arrayPath, ["elements"]);
+				if (arrayElementsPath && arrayElementsPath.length === 1) {
+					j(path.parent.parent).remove();
+				} else {
+					j(path).remove();
+				}
+			} else {
+				console.log(`
+${chalk.red("Please remove deprecated plugins manually. ")}
+See ${chalk.underline(
+		"https://webpack.js.org/guides/migrating/"
+	)} for more information.`);
+			}
+		});
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_removeJsonLoader_removeJsonLoader.js.html b/docs/migrate_removeJsonLoader_removeJsonLoader.js.html new file mode 100644 index 00000000000..65ff0819c85 --- /dev/null +++ b/docs/migrate_removeJsonLoader_removeJsonLoader.js.html @@ -0,0 +1,120 @@ + + + + + JSDoc: Source: migrate/removeJsonLoader/removeJsonLoader.js + + + + + + + + + + +
+ +

Source: migrate/removeJsonLoader/removeJsonLoader.js

+ + + + + + +
+
+
const utils = require("../../utils/ast-utils");
+
+/**
+ *
+ * Transform which removes the json loader from all possible declarations
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast) {
+	/**
+	 *
+	 * Remove the loader with name `name` from the given NodePath
+	 *
+	 * @param {Node} path - ast to remove the loader from
+	 * @param {String} name - the name of the loader to remove
+	 *
+	 */
+
+	function removeLoaderByName(path, name) {
+		const loadersNode = path.value.value;
+		switch (loadersNode.type) {
+			case j.ArrayExpression.name: {
+				let loaders = loadersNode.elements.map(p => {
+					return utils.safeTraverse(p, ["properties", "0", "value", "value"]);
+				});
+				const loaderIndex = loaders.indexOf(name);
+				if (loaders.length && loaderIndex > -1) {
+					// Remove loader from the array
+					loaders.splice(loaderIndex, 1);
+					// and from AST
+					loadersNode.elements.splice(loaderIndex, 1);
+				}
+
+				// If there are no loaders left, remove the whole Rule object
+				if (loaders.length === 0) {
+					j(path.parent).remove();
+				}
+				break;
+			}
+			case j.Literal.name: {
+				// If only the loader with the matching name was used
+				// we can remove the whole Property node completely
+				if (loadersNode.value === name) {
+					j(path.parent).remove();
+				}
+				break;
+			}
+		}
+	}
+
+	function removeLoaders(ast) {
+		ast
+			.find(j.Property, { key: { name: "use" } })
+			.forEach(path => removeLoaderByName(path, "json-loader"));
+
+		ast
+			.find(j.Property, { key: { name: "loader" } })
+			.forEach(path => removeLoaderByName(path, "json-loader"));
+	}
+
+	const transforms = [removeLoaders];
+
+	transforms.forEach(t => t(ast));
+
+	return ast;
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_resolve_resolve.js.html b/docs/migrate_resolve_resolve.js.html new file mode 100644 index 00000000000..6941fe70335 --- /dev/null +++ b/docs/migrate_resolve_resolve.js.html @@ -0,0 +1,123 @@ + + + + + JSDoc: Source: migrate/resolve/resolve.js + + + + + + + + + + +
+ +

Source: migrate/resolve/resolve.js

+ + + + + + +
+
+
/**
+ *
+ * Transform which consolidates the `resolve.root` configuration option into the `resolve.modules` array
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function transformer(j, ast) {
+	const getRootVal = p => {
+		return p.node.value.properties.filter(prop => prop.key.name === "root")[0];
+	};
+
+	const getRootIndex = p => {
+		return p.node.value.properties.reduce((rootIndex, prop, index) => {
+			return prop.key.name === "root" ? index : rootIndex;
+		}, -1);
+	};
+
+	const isModulePresent = p => {
+		const modules = p.node.value.properties.filter(
+			prop => prop.key.name === "modules"
+		);
+		return modules.length > 0 && modules[0];
+	};
+
+	/**
+	 *
+	 * Add a `modules` property to the `resolve` object or update the existing one
+	 * based on what is already in `resolve.root`
+	 *
+	 * @param {Node} p - ast node that represents the `resolve` property
+	 * @returns {Node} p - ast node that represents the updated `resolve` property
+	 */
+
+	const createModuleArray = p => {
+		const rootVal = getRootVal(p);
+		let modulesVal = null;
+		if (rootVal.value.type === "ArrayExpression") {
+			modulesVal = rootVal.value.elements;
+		} else {
+			modulesVal = [rootVal.value];
+		}
+		let module = isModulePresent(p);
+
+		if (!module) {
+			module = j.property(
+				"init",
+				j.identifier("modules"),
+				j.arrayExpression(modulesVal)
+			);
+			p.node.value.properties = p.node.value.properties.concat([module]);
+		} else {
+			module.value.elements = module.value.elements.concat(modulesVal);
+		}
+		const rootIndex = getRootIndex(p);
+		p.node.value.properties.splice(rootIndex, 1);
+		return p;
+	};
+
+	return ast
+		.find(j.Property)
+		.filter(p => {
+			return (
+				p.node.key.name === "resolve" &&
+				p.node.value.properties.filter(prop => prop.key.name === "root")
+					.length === 1
+			);
+		})
+		.forEach(createModuleArray);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html b/docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html new file mode 100644 index 00000000000..983a99f9845 --- /dev/null +++ b/docs/migrate_uglifyJsPlugin_uglifyJsPlugin.js.html @@ -0,0 +1,84 @@ + + + + + JSDoc: Source: migrate/uglifyJsPlugin/uglifyJsPlugin.js + + + + + + + + + + +
+ +

Source: migrate/uglifyJsPlugin/uglifyJsPlugin.js

+ + + + + + +
+
+
const findPluginsByName = require("../../utils/ast-utils").findPluginsByName;
+
+/**
+ *
+ * Transform which adds a `sourceMap: true` option to instantiations of the UglifyJsPlugin
+ *
+ * @param {Object} j - jscodeshift top-level import
+ * @param {Node} ast - jscodeshift ast to transform
+ * @returns {Node} ast - jscodeshift ast
+ */
+
+module.exports = function(j, ast) {
+	function createSourceMapsProperty() {
+		return j.property("init", j.identifier("sourceMap"), j.identifier("true"));
+	}
+
+	return findPluginsByName(j, ast, ["webpack.optimize.UglifyJsPlugin"]).forEach(
+		path => {
+			const args = path.value.arguments;
+
+			if (args.length) {
+				// Plugin is called with object as arguments
+				j(path)
+					.find(j.ObjectExpression)
+					.get("properties")
+					.value.push(createSourceMapsProperty());
+			} else {
+				// Plugin is called without arguments
+				args.push(j.objectExpression([createSourceMapsProperty()]));
+			}
+		}
+	);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js new file mode 100644 index 00000000000..8d52f7eafdb --- /dev/null +++ b/docs/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(function() { + var source = document.getElementsByClassName('prettyprint source linenums'); + var i = 0; + var lineNumber = 0; + var lineId; + var lines; + var totalLines; + var anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = 'line' + lineNumber; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/docs/scripts/prettify/Apache-License-2.0.txt b/docs/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/docs/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js new file mode 100644 index 00000000000..041e1f59067 --- /dev/null +++ b/docs/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js new file mode 100644 index 00000000000..eef5ad7e6a0 --- /dev/null +++ b/docs/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.prettyprint +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.prettyprint code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/docs/styles/prettify-jsdoc.css b/docs/styles/prettify-jsdoc.css new file mode 100644 index 00000000000..5a2526e3748 --- /dev/null +++ b/docs/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/docs/styles/prettify-tomorrow.css b/docs/styles/prettify-tomorrow.css new file mode 100644 index 00000000000..b6f92a78db9 --- /dev/null +++ b/docs/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/docs/utils_ast-utils.js.html b/docs/utils_ast-utils.js.html new file mode 100644 index 00000000000..10e306953b6 --- /dev/null +++ b/docs/utils_ast-utils.js.html @@ -0,0 +1,402 @@ + + + + + JSDoc: Source: utils/ast-utils.js + + + + + + + + + + +
+ +

Source: utils/ast-utils.js

+ + + + + + +
+
+
function safeTraverse(obj, paths) {
+	let val = obj;
+	let idx = 0;
+
+	while (idx < paths.length) {
+		if (!val) {
+			return null;
+		}
+		val = val[paths[idx]];
+		idx++;
+	}
+	return val;
+}
+
+// Convert nested MemberExpressions to strings like webpack.optimize.DedupePlugin
+function memberExpressionToPathString(path) {
+	if (path && path.object) {
+		return [memberExpressionToPathString(path.object), path.property.name].join(
+			"."
+		);
+	}
+	return path.name;
+}
+
+// Convert Array<string> like ['webpack', 'optimize', 'DedupePlugin'] to nested MemberExpressions
+function pathsToMemberExpression(j, paths) {
+	if (!paths.length) {
+		return null;
+	} else if (paths.length === 1) {
+		return j.identifier(paths[0]);
+	} else {
+		const first = paths.slice(0, 1);
+		const rest = paths.slice(1);
+		return j.memberExpression(
+			pathsToMemberExpression(j, rest),
+			pathsToMemberExpression(j, first)
+		);
+	}
+}
+
+/**
+ *
+ * Find paths that match `new name.space.PluginName()` for a
+ * given array of plugin names
+ *
+ * @param {any} j — jscodeshift API
+ * @param {Node} node - Node to start search from
+ * @param {String[]} pluginNamesArray - Array of plugin names like `webpack.LoaderOptionsPlugin`
+ * @returns {Node} Node that has the pluginName
+ */
+
+function findPluginsByName(j, node, pluginNamesArray) {
+	return node.find(j.NewExpression).filter(path => {
+		return pluginNamesArray.some(
+			plugin =>
+				memberExpressionToPathString(path.get("callee").value) === plugin
+		);
+	});
+}
+
+/**
+ *
+ * Finds the path to the `name: []` node
+ *
+ * @param {any} j — jscodeshift API
+ * @param {Node} node - Node to start search from
+ * @param {String} propName - property to search for
+ * @returns {Node} found node and
+ */
+
+function findRootNodesByName(j, node, propName) {
+	return node.find(j.Property, { key: { name: propName } });
+}
+
+/**
+ *
+ * Creates an Object's property with a given key and value
+ *
+ * @param {any} j — jscodeshift API
+ * @param {String | Number} key - Property key
+ * @param {String | Number | Boolean} value - Property value
+ * @returns {Node}
+ */
+
+function createProperty(j, key, value) {
+	return j.property(
+		"init",
+		createIdentifierOrLiteral(j, key),
+		createLiteral(j, value)
+	);
+}
+
+/**
+ *
+ * Creates an appropriate literal property
+ *
+ * @param {any} j — jscodeshift API
+ * @param {String | Boolean | Number} val
+ * @returns {Node}
+ */
+
+function createLiteral(j, val) {
+	let literalVal = val;
+	// We'll need String to native type conversions
+	if (typeof val === "string") {
+		// 'true' => true
+		if (val === "true") literalVal = true;
+		// 'false' => false
+		if (val === "false") literalVal = false;
+		// '1' => 1
+		if (!isNaN(Number(val))) literalVal = Number(val);
+	}
+	return j.literal(literalVal);
+}
+
+/**
+ *
+ * Creates an appropriate identifier or literal property
+ *
+ * @param {any} j — jscodeshift API
+ * @param {String | Boolean | Number} val
+ * @returns {Node}
+ */
+
+function createIdentifierOrLiteral(j, val) {
+	// IPath<IIdentifier> | IPath<ILiteral> doesn't work, find another way
+	let literalVal = val;
+	// We'll need String to native type conversions
+	if (typeof val === "string" || val.__paths) {
+		// 'true' => true
+		if (val === "true") {
+			literalVal = true;
+			return j.literal(literalVal);
+		}
+		// 'false' => false
+		if (val === "false") {
+			literalVal = false;
+			return j.literal(literalVal);
+		}
+		// '1' => 1
+		if (!isNaN(Number(val))) {
+			literalVal = Number(val);
+			return j.literal(literalVal);
+		}
+		if (val.__paths) {
+			let regExpVal = val.__paths[0].value.program.body[0].expression;
+			return j.literal(regExpVal.value);
+		} else {
+			// Use identifier instead
+			// TODO: Check if literalVal is a valid Identifier!
+			return j.identifier(literalVal);
+		}
+	}
+	return j.literal(literalVal);
+}
+
+/**
+ *
+ * Finds or creates a node for a given plugin name string with options object
+ * If plugin declaration already exist, options are merged.
+ *
+ * @param {any} j — jscodeshift API
+ * @param {Node} rootNodePath - `plugins: []` NodePath where plugin should be added. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
+ * @param {String} pluginName - ex. `webpack.LoaderOptionsPlugin`
+ * @param {Object} options - plugin options
+ * @returns {Void}
+ */
+
+function createOrUpdatePluginByName(j, rootNodePath, pluginName, options) {
+	const pluginInstancePath = findPluginsByName(j, j(rootNodePath), [
+		pluginName
+	]);
+	let optionsProps;
+	if (options) {
+		optionsProps = Object.keys(options).map(key => {
+			return createProperty(j, key, options[key]);
+		});
+	}
+
+	// If plugin declaration already exist
+	if (pluginInstancePath.size()) {
+		pluginInstancePath.forEach(path => {
+			// There are options we want to pass as argument
+			if (optionsProps) {
+				const args = path.value.arguments;
+				if (args.length) {
+					// Plugin is called with object as arguments
+					// we will merge those objects
+					let currentProps = j(path)
+						.find(j.ObjectExpression)
+						.get("properties");
+
+					optionsProps.forEach(opt => {
+						// Search for same keys in the existing object
+						const existingProps = j(currentProps)
+							.find(j.Identifier)
+							.filter(path => opt.key.value === path.value.name);
+
+						if (existingProps.size()) {
+							// Replacing values for the same key
+							existingProps.forEach(path => {
+								j(path.parent).replaceWith(opt);
+							});
+						} else {
+							// Adding new key:values
+							currentProps.value.push(opt);
+						}
+					});
+				} else {
+					// Plugin is called without arguments
+					args.push(j.objectExpression(optionsProps));
+				}
+			}
+		});
+	} else {
+		let argumentsArray = [];
+		if (optionsProps) {
+			argumentsArray = [j.objectExpression(optionsProps)];
+		}
+		const loaderPluginInstance = j.newExpression(
+			pathsToMemberExpression(j, pluginName.split(".").reverse()),
+			argumentsArray
+		);
+		rootNodePath.value.elements.push(loaderPluginInstance);
+	}
+}
+
+/**
+ *
+ * Finds the variable to which a third party plugin is assigned to
+ *
+ * @param {any} j — jscodeshift API
+ * @param {Node} rootNode - `plugins: []` Root Node. See https://github.com/facebook/jscodeshift/wiki/jscodeshift-Documentation#nodepaths
+ * @param {String} pluginPackageName - ex. `extract-text-plugin`
+ * @returns {String} variable name - ex. 'const s = require(s) gives "s"`
+ */
+
+function findVariableToPlugin(j, rootNode, pluginPackageName) {
+	const moduleVarNames = rootNode
+		.find(j.VariableDeclarator)
+		.filter(j.filters.VariableDeclarator.requiresModule(pluginPackageName))
+		.nodes();
+	if (moduleVarNames.length === 0) return null;
+	return moduleVarNames.pop().id.name;
+}
+
+/**
+ *
+ * Returns true if type is given type
+ * @param {Node} path - pathNode
+ * @param {String} type - node type
+ * @returns {Boolean}
+ */
+
+function isType(path, type) {
+	return path.type === type;
+}
+
+function findObjWithOneOfKeys(p, keyNames) {
+	return p.value.properties.reduce((predicate, prop) => {
+		const name = prop.key.name;
+		return keyNames.indexOf(name) > -1 || predicate;
+	}, false);
+}
+
+/**
+ *
+ * Returns constructed require symbol
+ * @param {any} j — jscodeshift API
+ * @param {String} constName - Name of require
+ * @param {String} packagePath - path of required package
+ * @returns {Node} - the created ast
+ */
+
+function getRequire(j, constName, packagePath) {
+	return j.variableDeclaration("const", [
+		j.variableDeclarator(
+			j.identifier(constName),
+			j.callExpression(j.identifier("require"), [j.literal(packagePath)])
+		)
+	]);
+}
+
+/**
+ *
+ * Recursively adds an object/property to a node
+ * @param {any} j — jscodeshift API
+ * @param {Node} p - AST node
+ * @param {String} key - key of a key/val object
+ * @param {Any} value - Any type of object
+ * @returns {Node} - the created ast
+ */
+
+function addProperty(j, p, key, value) {
+	let valForNode;
+	if (!p) {
+		return;
+	}
+	if (Array.isArray(value)) {
+		const arr = j.arrayExpression([]);
+		value.filter(val => val).forEach(val => {
+			addProperty(j, arr, null, val);
+		});
+		valForNode = arr;
+	} else if (
+		typeof value === "object" &&
+		!(value.__paths || value instanceof RegExp)
+	) {
+		// object -> loop through it
+		let objectExp = j.objectExpression([]);
+		Object.keys(value).forEach(prop => {
+			addProperty(j, objectExp, prop, value[prop]);
+		});
+		valForNode = objectExp;
+	} else {
+		valForNode = createIdentifierOrLiteral(j, value);
+	}
+	let pushVal;
+	if (key) {
+		pushVal = j.property("init", j.identifier(key), valForNode);
+	} else {
+		pushVal = valForNode;
+	}
+	if (p.properties) {
+		p.properties.push(pushVal);
+		return p;
+	}
+	if (p.value && p.value.properties) {
+		p.value.properties.push(pushVal);
+		return p;
+	}
+	if (p.elements) {
+		p.elements.push(pushVal);
+		return p;
+	}
+	return;
+}
+module.exports = {
+	safeTraverse,
+	createProperty,
+	findPluginsByName,
+	findRootNodesByName,
+	createOrUpdatePluginByName,
+	findVariableToPlugin,
+	isType,
+	createLiteral,
+	createIdentifierOrLiteral,
+	findObjWithOneOfKeys,
+	getRequire,
+	addProperty
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_copy-utils.js.html b/docs/utils_copy-utils.js.html new file mode 100644 index 00000000000..fe3d6218f03 --- /dev/null +++ b/docs/utils_copy-utils.js.html @@ -0,0 +1,108 @@ + + + + + JSDoc: Source: utils/copy-utils.js + + + + + + + + + + +
+ +

Source: utils/copy-utils.js

+ + + + + + +
+
+
const path = require("path");
+
+/**
+ * Takes in a file path in the `./templates` directory. Copies that
+ * file to the destination, with the `.tpl` extension stripped.
+ *
+ * @param {Generator} generator A Yeoman Generator instance
+ * @param {string} templateDir Absolute path to template directory
+ * @returns {Function} A curried function that takes a file path and copies it
+ */
+const generatorCopy = (
+	generator,
+	templateDir
+) => /** @param {string} filePath */ filePath => {
+	const sourceParts = templateDir.split(path.delimiter);
+	sourceParts.push.apply(sourceParts, filePath.split("/"));
+	const targetParts = path.dirname(filePath).split("/");
+	targetParts.push(path.basename(filePath, ".tpl"));
+
+	generator.fs.copy(
+		path.join.apply(null, sourceParts),
+		generator.destinationPath(path.join.apply(null, targetParts))
+	);
+};
+
+/**
+ * Takes in a file path in the `./templates` directory. Copies that
+ * file to the destination, with the `.tpl` extension and `_` prefix
+ * stripped. Passes `this.props` to the template.
+ *
+ * @param {Generator} generator A Yeoman Generator instance
+ * @param {string} templateDir Absolute path to template directory
+ * @param {any} templateData An object containing the data passed to
+ * the template files.
+ * @returns {Function} A curried function that takes a file path and copies it
+ */
+const generatorCopyTpl = (
+	generator,
+	templateDir,
+	templateData
+) => /** @param {string} filePath */ filePath => {
+	const sourceParts = templateDir.split(path.delimiter);
+	sourceParts.push.apply(sourceParts, filePath.split("/"));
+	const targetParts = path.dirname(filePath).split("/");
+	targetParts.push(path.basename(filePath, ".tpl").slice(1));
+
+	generator.fs.copyTpl(
+		path.join.apply(null, sourceParts),
+		generator.destinationPath(path.join.apply(null, targetParts)),
+		templateData
+	);
+};
+
+module.exports = {
+	generatorCopy,
+	generatorCopyTpl
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_defineTest.js.html b/docs/utils_defineTest.js.html new file mode 100644 index 00000000000..54e35b20f32 --- /dev/null +++ b/docs/utils_defineTest.js.html @@ -0,0 +1,168 @@ + + + + + JSDoc: Source: utils/defineTest.js + + + + + + + + + + +
+ +

Source: utils/defineTest.js

+ + + + + + +
+
+
"use strict";
+
+const fs = require("fs");
+const path = require("path");
+
+/**
+ * Utility function to run a jscodeshift script within a unit test.
+ * This makes several assumptions about the environment.
+ *
+ * Notes:
+ * - The test should be located in a subdirectory next to the transform itself.
+ *   Commonly tests are located in a directory called __tests__.
+ *
+ * - Test data should be located in a directory called __testfixtures__
+ *   alongside the transform and __tests__ directory.
+ * @param  {String} dirName          contains the name of the directory the test is located in. This
+ *                                   should normally be passed via __dirname.
+ * @param  {String} transformName    contains the filename of the transform being tested,
+ *                                   excluding the .js extension.
+ * @param  {String} [testFilePrefix] Optionally contains the name of the file with the test
+ *                                   data. If not specified, it defaults to the same value as `transformName`.
+ *                                   This will be suffixed with ".input.js" for the input file and ".output.js"
+ *                                   for the expected output. For example, if set to "foo", we will read the
+ *                                   "foo.input.js" file, pass this to the transform, and expect its output to
+ *                                   be equal to the contents of "foo.output.js".
+ * @param  {Object|Boolean|String} initOptions TBD
+ * @param  {String} action init, update or remove, decides how to format the AST
+ * @return {Function} Function that fires of the transforms
+ */
+function runSingleTransform(
+	dirName,
+	transformName,
+	testFilePrefix,
+	initOptions,
+	action
+) {
+	if (!testFilePrefix) {
+		testFilePrefix = transformName;
+	}
+	const fixtureDir = path.join(dirName, "__testfixtures__");
+	const inputPath = path.join(fixtureDir, testFilePrefix + ".input.js");
+	const source = fs.readFileSync(inputPath, "utf8");
+
+	let module;
+	// Assumes transform and test are on the same level
+	if (action) {
+		module = require(path.join(dirName, "index.js"));
+	} else {
+		module = require(path.join(dirName, transformName + ".js"));
+	}
+	// Handle ES6 modules using default export for the transform
+	const transform = module.default ? module.default : module;
+
+	// Jest resets the module registry after each test, so we need to always get
+	// a fresh copy of jscodeshift on every test run.
+	let jscodeshift = require("jscodeshift/dist/core");
+	if (module.parser) {
+		jscodeshift = jscodeshift.withParser(module.parser);
+	}
+	const ast = jscodeshift(source);
+	if (initOptions || typeof initOptions === "boolean") {
+		return transform(
+			jscodeshift,
+			ast,
+			initOptions,
+			action,
+			transformName
+		).toSource({
+			quote: "single"
+		});
+	}
+	return transform(jscodeshift, ast, source, action).toSource({
+		quote: "single"
+	});
+}
+
+/**
+ * Handles some boilerplate around defining a simple jest/Jasmine test for a
+ * jscodeshift transform.
+ * @param  {String} dirName          contains the name of the directory the test is located in. This
+ *                                   should normally be passed via __dirname.
+ * @param  {String} transformName    contains the filename of the transform being tested,
+ *                                   excluding the .js extension.
+ * @param  {String} [testFilePrefix] Optionally contains the name of the file with the test
+ *                                   data. If not specified, it defaults to the same value as `transformName`.
+ *                                   This will be suffixed with ".input.js" for the input file and ".output.js"
+ *                                   for the expected output. For example, if set to "foo", we will read the
+ *                                   "foo.input.js" file, pass this to the transform, and expect its output to
+ *                                   be equal to the contents of "foo.output.js".
+ * @param  {any} transformObject     Object to be transformed with the transformations
+ * @param  {String} action init, update or remove, decides how to format the AST
+ * @return {Void} Jest makes sure to execute the globally defined functions
+ */
+function defineTest(
+	dirName,
+	transformName,
+	testFilePrefix,
+	transformObject,
+	action
+) {
+	const testName = testFilePrefix
+		? `transforms correctly using "${testFilePrefix}" data`
+		: "transforms correctly";
+	describe(transformName, () => {
+		it(testName, () => {
+			const output = runSingleTransform(
+				dirName,
+				transformName,
+				testFilePrefix,
+				transformObject,
+				action
+			);
+			expect(output).toMatchSnapshot();
+		});
+	});
+}
+module.exports = defineTest;
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_is-local-path.js.html b/docs/utils_is-local-path.js.html new file mode 100644 index 00000000000..3ef422062d9 --- /dev/null +++ b/docs/utils_is-local-path.js.html @@ -0,0 +1,70 @@ + + + + + JSDoc: Source: utils/is-local-path.js + + + + + + + + + + +
+ +

Source: utils/is-local-path.js

+ + + + + + +
+
+
"use strict";
+
+const fs = require("fs");
+const path = require("path");
+
+/**
+ * Attempts to detect whether the string is a local path regardless of its
+ * existence by checking its format. The point is to distinguish between
+ * paths and modules on the npm registry. This will fail for non-existent
+ * local Windows paths that begin with a drive letter, e.g. C:..\generator.js,
+ * but will succeed for any existing files and any absolute paths.
+ *
+ * @param {String} str - string to check
+ * @returns {Boolean} whether the string could be a path to a local file or directory
+ */
+
+module.exports = function(str) {
+	return path.isAbsolute(str) || /^\./.test(str) || fs.existsSync(str);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_modify-config-helper.js.html b/docs/utils_modify-config-helper.js.html new file mode 100644 index 00000000000..15f9365cbc8 --- /dev/null +++ b/docs/utils_modify-config-helper.js.html @@ -0,0 +1,126 @@ + + + + + JSDoc: Source: utils/modify-config-helper.js + + + + + + + + + + +
+ +

Source: utils/modify-config-helper.js

+ + + + + + +
+
+
"use strict";
+
+const fs = require("fs");
+const path = require("path");
+const chalk = require("chalk");
+const yeoman = require("yeoman-environment");
+const runTransform = require("../init/index");
+const Generator = require("yeoman-generator");
+
+/**
+ *
+ * Looks up the webpack.config in the user's path and runs a given
+ * generator scaffold followed up by a transform
+ *
+ * @param {String} action — action to be done (add, remove, update, init)
+ * @param {Class} name - Name for the given function
+ * @returns {Function} runTransform - Returns a transformation instance
+ */
+
+module.exports = function modifyHelperUtil(action, generator, packages) {
+	let configPath = path.resolve(process.cwd(), "webpack.config.js");
+	const webpackConfigExists = fs.existsSync(configPath);
+	if (!webpackConfigExists) {
+		configPath = null;
+	}
+	const env = yeoman.createEnv("webpack", null);
+	const generatorName = `webpack-${action}-generator`;
+
+	if (!generator) {
+		generator = class extends Generator {
+			initializing() {
+				packages.forEach(pkgPath => {
+					return this.composeWith(require.resolve(pkgPath));
+				});
+			}
+		};
+	}
+	env.registerStub(generator, generatorName);
+
+	env.run(generatorName).on("end", () => {
+		let configModule;
+		try {
+			const configPath = path.resolve(process.cwd(), ".yo-rc.json");
+			configModule = require(configPath);
+			// Change structure of the config to be transformed
+			let tmpConfig = {};
+			Object.keys(configModule).forEach(prop => {
+				const configs = Object.keys(configModule[prop].configuration);
+				configs.forEach(config => {
+					tmpConfig[config] = configModule[prop].configuration[config];
+				});
+			});
+			configModule = tmpConfig;
+		} catch (err) {
+			console.error(
+				chalk.red("\nCould not find a yeoman configuration file.\n")
+			);
+			console.error(
+				chalk.red(
+					"\nPlease make sure to use 'this.config.set('configuration', this.configuration);' at the end of the generator.\n"
+				)
+			);
+			Error.stackTraceLimit = 0;
+			process.exitCode = -1;
+		}
+		const config = Object.assign(
+			{
+				configFile: !configPath ? null : fs.readFileSync(configPath, "utf8"),
+				configPath: configPath
+			},
+			configModule
+		);
+		return runTransform(config, action);
+	});
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_npm-exists.js.html b/docs/utils_npm-exists.js.html new file mode 100644 index 00000000000..0a2f9ae2b8f --- /dev/null +++ b/docs/utils_npm-exists.js.html @@ -0,0 +1,74 @@ + + + + + JSDoc: Source: utils/npm-exists.js + + + + + + + + + + +
+ +

Source: utils/npm-exists.js

+ + + + + + +
+
+
"use strict";
+
+const got = require("got");
+const constant = value => _ => value;
+
+/**
+ *
+ * Checks if the given dependency/module is registered on npm
+ *
+ * @param {String} moduleName - The dependency to be checked
+ * @returns {Promise} constant - Returns either true or false,
+ * based on if it exists or not
+ */
+
+module.exports = function npmExists(moduleName) {
+	const hostname = "https://www.npmjs.org";
+	const pkgUrl = `${hostname}/package/${moduleName}`;
+	return got(pkgUrl, {
+		method: "HEAD"
+	})
+		.then(constant(true))
+		.catch(constant(false));
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_npm-packages-exists.js.html b/docs/utils_npm-packages-exists.js.html new file mode 100644 index 00000000000..ab30566a68a --- /dev/null +++ b/docs/utils_npm-packages-exists.js.html @@ -0,0 +1,114 @@ + + + + + JSDoc: Source: utils/npm-packages-exists.js + + + + + + + + + + +
+ +

Source: utils/npm-packages-exists.js

+ + + + + + +
+
+
"use strict";
+const chalk = require("chalk");
+const isLocalPath = require("./is-local-path");
+const npmExists = require("./npm-exists");
+const resolvePackages = require("./resolve-packages").resolvePackages;
+
+const WEBPACK_ADDON_PREFIX = "webpack-addons";
+
+/**
+ *
+ * Loops through an array and checks if a package is registered
+ * on npm and throws an error if it is not.
+ *
+ * @param {String[]} pkg - Array of packages to check existence of
+ * @returns {Array} resolvePackages - Returns an process to install the packages
+ */
+
+module.exports = function npmPackagesExists(pkg) {
+	let acceptedPackages = [];
+
+	function resolvePackagesIfReady() {
+		if (acceptedPackages.length === pkg.length)
+			return resolvePackages(acceptedPackages);
+	}
+
+	pkg.forEach(addon => {
+		if (isLocalPath(addon)) {
+			// If the addon is a path to a local folder, no name validation is necessary.
+			acceptedPackages.push(addon);
+			resolvePackagesIfReady();
+			return;
+		}
+
+		// The addon is on npm; validate name and existence
+		if (
+			addon.length <= WEBPACK_ADDON_PREFIX.length ||
+			addon.slice(0, WEBPACK_ADDON_PREFIX.length) !== WEBPACK_ADDON_PREFIX
+		) {
+			throw new TypeError(
+				chalk.bold(`${addon} isn't a valid name.\n`) +
+					chalk.red(
+						`\nIt should be prefixed with '${WEBPACK_ADDON_PREFIX}', but have different suffix.\n`
+					)
+			);
+		}
+
+		npmExists(addon)
+			.then(moduleExists => {
+				if (!moduleExists) {
+					Error.stackTraceLimit = 0;
+					throw new TypeError(`Cannot resolve location of package ${addon}.`);
+				}
+				if (moduleExists) {
+					acceptedPackages.push(addon);
+				}
+			})
+			.catch(err => {
+				console.error(err.stack || err);
+				process.exit(0);
+			})
+			.then(resolvePackagesIfReady);
+	});
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_package-manager.js.html b/docs/utils_package-manager.js.html new file mode 100644 index 00000000000..ef26d3cbfee --- /dev/null +++ b/docs/utils_package-manager.js.html @@ -0,0 +1,155 @@ + + + + + JSDoc: Source: utils/package-manager.js + + + + + + + + + + +
+ +

Source: utils/package-manager.js

+ + + + + + +
+
+
"use strict";
+
+const path = require("path");
+const fs = require("fs");
+const spawn = require("cross-spawn");
+
+const SPAWN_FUNCTIONS = {
+	npm: spawnNPM,
+	yarn: spawnYarn
+};
+
+/**
+ *
+ * Spawns a new process using npm
+ *
+ * @param {String} pkg - The dependency to be installed
+ * @param {Boolean} isNew - indicates if it needs to be updated or installed
+ * @returns {Function} spawn - Installs the package
+ */
+
+function spawnNPM(pkg, isNew) {
+	return spawn.sync("npm", [isNew ? "install" : "update", "-g", pkg], {
+		stdio: "inherit"
+	});
+}
+
+/**
+ *
+ * Spawns a new process using yarn
+ *
+ * @param {String} pkg - The dependency to be installed
+ * @param {Boolean} isNew - indicates if it needs to be updated or installed
+ * @returns {Function} spawn - Installs the package
+ */
+
+function spawnYarn(pkg, isNew) {
+	return spawn.sync("yarn", ["global", isNew ? "add" : "upgrade", pkg], {
+		stdio: "inherit"
+	});
+}
+/**
+ *
+ * Spawns a new process that installs the addon/dependency
+ *
+ * @param {String} pkg - The dependency to be installed
+ * @returns {Function} spawn - Installs the package
+ */
+
+function spawnChild(pkg) {
+	const rootPath = getPathToGlobalPackages();
+	const pkgPath = path.resolve(rootPath, pkg);
+	const packageManager = getPackageManager();
+	const isNew = !fs.existsSync(pkgPath);
+
+	return SPAWN_FUNCTIONS[packageManager](pkg, isNew);
+}
+
+/**
+ *
+ * Returns the name of package manager to use,
+ * preferring yarn over npm if available
+ *
+ * @returns {String} - The package manager name
+ */
+
+function getPackageManager() {
+	if (spawn.sync("yarn", [" --version"], { stdio: "ignore" }).error) {
+		return "npm";
+	}
+
+	return "yarn";
+}
+
+/**
+ *
+ * Returns the path to globally installed
+ * npm packages, depending on the available
+ * package manager determined by `getPackageManager`
+ *
+ * @returns {String} path - Path to global node_modules folder
+ */
+function getPathToGlobalPackages() {
+	const manager = getPackageManager();
+
+	if (manager === "yarn") {
+		try {
+			const yarnDir = spawn
+				.sync("yarn", ["global", "dir"])
+				.stdout.toString()
+				.trim();
+			return path.join(yarnDir, "node_modules");
+		} catch (e) {
+			// Default to the global npm path below
+		}
+	}
+
+	return require("global-modules");
+}
+
+module.exports = {
+	getPackageManager,
+	getPathToGlobalPackages,
+	spawnChild
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_prop-types.js.html b/docs/utils_prop-types.js.html new file mode 100644 index 00000000000..0a642a66791 --- /dev/null +++ b/docs/utils_prop-types.js.html @@ -0,0 +1,87 @@ + + + + + JSDoc: Source: utils/prop-types.js + + + + + + + + + + +
+ +

Source: utils/prop-types.js

+ + + + + + +
+
+
/**
+ *
+ * A Set of all accepted properties
+ *
+ * @returns {Set} A new set with accepted webpack properties
+ */
+
+module.exports = new Set([
+	"context",
+	"devServer",
+	"devtool",
+	"entry",
+	"externals",
+	"module",
+	"node",
+	"output",
+	"performance",
+	"plugins",
+	"resolve",
+	"target",
+	"watch",
+	"watchOptions",
+	"stats",
+	"mode",
+	"amd",
+	"bail",
+	"cache",
+	"profile",
+	"merge",
+	"parallelism",
+	"recordsInputPath",
+	"recordsOutputPath",
+	"recordsPath",
+	"resolveLoader",
+	"topScope"
+]);
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_resolve-packages.js.html b/docs/utils_resolve-packages.js.html new file mode 100644 index 00000000000..68a5c15cf09 --- /dev/null +++ b/docs/utils_resolve-packages.js.html @@ -0,0 +1,149 @@ + + + + + JSDoc: Source: utils/resolve-packages.js + + + + + + + + + + +
+ +

Source: utils/resolve-packages.js

+ + + + + + +
+
+
"use strict";
+
+const path = require("path");
+const chalk = require("chalk");
+
+const modifyConfigHelper = require("./modify-config-helper");
+
+const getPathToGlobalPackages = require("./package-manager")
+	.getPathToGlobalPackages;
+const isLocalPath = require("./is-local-path");
+const spawnChild = require("./package-manager").spawnChild;
+
+/**
+ *
+ * Attaches a promise to the installation of the package
+ *
+ * @param {Function} child - The function to attach a promise to
+ * @returns {Promise} promise - Returns a promise to the installation
+ */
+
+function processPromise(child) {
+	return new Promise(function(resolve, reject) {
+		//eslint-disable-line
+		if (child.status !== 0) {
+			reject();
+		} else {
+			resolve();
+		}
+	});
+}
+
+/**
+ *
+ * Resolves and installs the packages, later sending them to @creator
+ *
+ * @param {String[]} pkg - The dependencies to be installed
+ * @returns {Function|Error} creator - Builds
+ * a webpack configuration through yeoman or throws an error
+ */
+
+function resolvePackages(pkg) {
+	Error.stackTraceLimit = 30;
+
+	let packageLocations = [];
+
+	function invokeGeneratorIfReady() {
+		if (packageLocations.length === pkg.length)
+			return modifyConfigHelper("init", null, packageLocations);
+	}
+
+	pkg.forEach(addon => {
+		// Resolve paths to modules on local filesystem
+		if (isLocalPath(addon)) {
+			let absolutePath = addon;
+
+			try {
+				absolutePath = path.resolve(process.cwd(), addon);
+				require.resolve(absolutePath);
+				packageLocations.push(absolutePath);
+			} catch (err) {
+				console.log(`Cannot find a generator at ${absolutePath}.`);
+				console.log("\nReason:\n");
+				console.error(chalk.bold.red(err));
+				process.exitCode = 1;
+			}
+
+			invokeGeneratorIfReady();
+			return;
+		}
+
+		// Resolve modules on npm registry
+		processPromise(spawnChild(addon))
+			.then(_ => {
+				try {
+					const globalPath = getPathToGlobalPackages();
+					packageLocations.push(path.resolve(globalPath, addon));
+				} catch (err) {
+					console.log("Package wasn't validated correctly..");
+					console.log("Submit an issue for", pkg, "if this persists");
+					console.log("\nReason: \n");
+					console.error(chalk.bold.red(err));
+					process.exitCode = 1;
+				}
+			})
+			.catch(err => {
+				console.log("Package couldn't be installed, aborting..");
+				console.log("\nReason: \n");
+				console.error(chalk.bold.red(err));
+				process.exitCode = 1;
+			})
+			.then(invokeGeneratorIfReady);
+	});
+}
+
+module.exports = {
+	resolvePackages,
+	processPromise
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/docs/utils_run-prettier.js.html b/docs/utils_run-prettier.js.html new file mode 100644 index 00000000000..2f3b3dcea58 --- /dev/null +++ b/docs/utils_run-prettier.js.html @@ -0,0 +1,95 @@ + + + + + JSDoc: Source: utils/run-prettier.js + + + + + + + + + + +
+ +

Source: utils/run-prettier.js

+ + + + + + +
+
+
"use strict";
+
+const prettier = require("prettier");
+const fs = require("fs");
+const chalk = require("chalk");
+
+/**
+ *
+ * Runs prettier and later prints the output configuration
+ *
+ * @param {String} outputPath - Path to write the config to
+ * @param {Node} source - AST to write at the given path
+ * @param {Function} cb - executes a callback after execution if supplied
+ * @returns {Function} Writes a file at given location and prints messages accordingly
+ */
+
+module.exports = function runPrettier(outputPath, source, cb) {
+	function validateConfig() {
+		let prettySource;
+		let error;
+		try {
+			prettySource = prettier.format(source, {
+				singleQuote: true,
+				useTabs: true,
+				tabWidth: 1
+			});
+		} catch (err) {
+			process.stdout.write(
+				"\n" +
+					chalk.yellow(
+						`WARNING: Could not apply prettier to ${outputPath}` +
+							" due validation error, but the file has been created\n"
+					)
+			);
+			prettySource = source;
+			error = err;
+		}
+		if (cb) {
+			return cb(error);
+		}
+		return fs.writeFileSync(outputPath, prettySource, "utf8");
+	}
+	return fs.writeFile(outputPath, source, "utf8", validateConfig);
+};
+
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 3.5.5 on Fri Apr 27 2018 20:01:34 GMT+0200 (CEST) +
+ + + + + diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index dd09399e967..0db43ce6b13 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -281,6 +281,16 @@ function getRequire(j, constName, packagePath) { ]); } +/** + * + * Recursively adds an object/property to a node + * @param {any} j — jscodeshift API + * @param {Node} p - AST node + * @param {String} key - key of a key/val object + * @param {Any} value - Any type of object + * @returns {Node} - the created ast + */ + function addProperty(j, p, key, value) { let valForNode; if (!p) { diff --git a/lib/utils/hashtable.js b/lib/utils/hashtable.js deleted file mode 100644 index 2073b3b935e..00000000000 --- a/lib/utils/hashtable.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Combined hashtable that sorts duplicate elements - * https://stackoverflow.com/questions/9229645/remove-duplicate-values-from-js-array - * - * @param {Array} a Array to lookup - * @returns {Array} A sorted array with removed dupe elements - */ -module.exports = function hashtable(a) { - const prims = { boolean: {}, number: {}, string: {} }, - objs = []; - - return a.filter(function(item) { - const type = typeof item; - if (type in prims) - return prims[type].hasOwnProperty(item) - ? false - : (prims[type][item] = true); - else return objs.indexOf(item) >= 0 ? false : objs.push(item); - }); -}; From 2b1f1d5672353d03b44e224980137041a80b56db Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Fri, 27 Apr 2018 20:33:54 +0200 Subject: [PATCH 13/17] chore(git): add gitignore to yeoman file --- .gitignore | 3 +++ .yo-rc.json | 23 ----------------------- 2 files changed, 3 insertions(+), 23 deletions(-) delete mode 100644 .yo-rc.json diff --git a/.gitignore b/.gitignore index c1681d6062d..625b6179761 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ yarn-error.log # Test Compilation test/js/* + +# Yeoman file +.yo-rc.json \ No newline at end of file diff --git a/.yo-rc.json b/.yo-rc.json deleted file mode 100644 index 2034c613586..00000000000 --- a/.yo-rc.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "webpack-addons-demo": { - "configuration": { - "dev": { - "webpackOptions": { - "entry": "ok", - "output": { - "filename": "'[name].js'" - }, - "context": "path.join(__dirname, \"src\")", - "plugins": [ - "new webpack.optimize.CommonsChunkPlugin({name:'k',filename:'k-[hash].min.js'})" - ] - }, - "topScope": [ - "const path = require(\"path\")", - "const webpack = require(\"webpack\")" - ], - "configName": "pengwings" - } - } - } -} \ No newline at end of file From 0ce8138a6a631aaabcc9f4dfb588476bcce0afd8 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Sat, 28 Apr 2018 14:39:47 +0200 Subject: [PATCH 14/17] chore(deps): update pkg.json --- package-lock.json | 5103 +++++++++++++++++---------------------------- 1 file changed, 1899 insertions(+), 3204 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0c75ce9715b..1efcaf73aa4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,18 +5,18 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz", - "integrity": "sha512-eVXQSbu/RimU6OKcK2/gDJVTFcxXJI4sHbIqw2mhwMZeQ2as/8AhS9DGkEDoHMBBNJZ5B0US63lF56x+KDcxiA==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", + "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.40" + "@babel/highlight": "7.0.0-beta.46" } }, "@babel/highlight": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.40.tgz", - "integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==", + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.46.tgz", + "integrity": "sha512-r4snW6Q8ICL3Y8hGzYJRvyG/+sc+kvkewXNedG9tQjoHmUFMwMSv/o45GWQUQswevGnWghiGkpRPivFfOuMsOA==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -180,17 +180,6 @@ "meow": "3.7.0" }, "dependencies": { - "cross-spawn": { - "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.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "execa": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", @@ -204,6 +193,19 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "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.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } } } @@ -280,17 +282,6 @@ "execa": "0.9.0" }, "dependencies": { - "cross-spawn": { - "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.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "execa": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", @@ -304,6 +295,19 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "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.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } } } @@ -450,9 +454,9 @@ "dev": true }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" }, "ansi-html": { "version": "0.0.7", @@ -562,6 +566,46 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "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.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-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.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-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -641,43 +685,32 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "^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" - } - } + "kind-of": "^6.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=", + "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": "^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" - } - } + "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-number": { @@ -935,9 +968,9 @@ "dev": true }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "aws-sign2": { @@ -947,9 +980,9 @@ "dev": true }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", "dev": true }, "axios": { @@ -1010,9 +1043,9 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "requires": { "babel-code-frame": "^6.26.0", "babel-generator": "^6.26.0", @@ -1024,15 +1057,15 @@ "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "babylon": "^6.18.0", - "convert-source-map": "^1.5.0", - "debug": "^2.6.8", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", "json5": "^0.5.1", "lodash": "^4.17.4", "minimatch": "^3.0.4", "path-is-absolute": "^1.0.1", - "private": "^0.1.7", + "private": "^0.1.8", "slash": "^1.0.0", - "source-map": "^0.5.6" + "source-map": "^0.5.7" }, "dependencies": { "babylon": { @@ -1469,9 +1502,9 @@ } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "requires": { "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", @@ -1572,18 +1605,6 @@ "babel-helper-regex": "^6.24.1", "babel-runtime": "^6.22.0", "regexpu-core": "^2.0.0" - }, - "dependencies": { - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - } } }, "babel-plugin-transform-exponentiation-operator": { @@ -1810,9 +1831,9 @@ } }, "babylon": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.40.tgz", - "integrity": "sha512-AVxF2EcxvGD5hhOuLTOLAXBb0VhwWpEX0HyHdAI2zU+AAP4qEwtQj8voz1JR3uclGai0rfcE+dCTHnNMOnimFg==" + "version": "7.0.0-beta.46", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.46.tgz", + "integrity": "sha512-WFJlg2WatdkXRFMpk7BN/Uzzkjkcjk+WaqnrSCpay+RYl4ypW9ZetZyT9kNt22IH/BQNst3M6PaaBn9IXsUNrg==" }, "balanced-match": { "version": "1.0.0", @@ -1843,11 +1864,46 @@ "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.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.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" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "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==", + "dev": true } } }, @@ -1890,12 +1946,13 @@ "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==" }, "bl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "^2.0.5" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "block-stream": { @@ -1935,6 +1992,14 @@ "qs": "6.5.1", "raw-body": "2.3.2", "type-is": "~1.6.15" + }, + "dependencies": { + "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==", + "dev": true + } } }, "bonjour": { @@ -2114,6 +2179,28 @@ "isarray": "^1.0.0" } }, + "buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^0.1.0", + "buffer-fill": "^0.1.0" + } + }, + "buffer-alloc-unsafe": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=", + "dev": true + }, + "buffer-fill": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", + "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==", + "dev": true + }, "buffer-from": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", @@ -2243,6 +2330,13 @@ "lowercase-keys": "1.0.0", "normalize-url": "2.0.1", "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + } } }, "cachedir": { @@ -2312,9 +2406,9 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2327,15 +2421,15 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, "chokidar": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", - "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.0", "braces": "^2.3.0", - "fsevents": "^1.0.0", + "fsevents": "^1.1.2", "glob-parent": "^3.1.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", @@ -2346,22 +2440,6 @@ "upath": "^1.0.0" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "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", @@ -2369,213 +2447,61 @@ "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", - "define-property": "^1.0.0", "extend-shallow": "^2.0.1", "fill-range": "^4.0.0", "isobject": "^3.0.1", - "kind-of": "^6.0.2", "repeat-element": "^1.1.2", "snapdragon": "^0.8.1", "snapdragon-node": "^2.0.1", "split-string": "^3.0.2", "to-regex": "^3.0.1" + } + }, + "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.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "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.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.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.0" - } - }, - "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.0" - } - }, - "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.0.0" - } - }, - "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==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^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.0" - } - }, - "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.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "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.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "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.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-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.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-extglob": "^2.1.0" } } } @@ -2602,17 +2528,6 @@ "dev": true, "requires": { "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" - } - } } }, "isobject": { @@ -2620,33 +2535,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "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==", - "dev": true - }, - "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } } } }, @@ -2663,15 +2551,15 @@ "dev": true }, "ci-env": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.5.2.tgz", - "integrity": "sha512-6NSB3PSw6L7w9vqmlTveD1JpaOhngFYRqhFKNPtSLpx8kpu/3BZwf84Sz8+hsmDzaD+ITuuiNdN6ya5c2DhHWg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.6.0.tgz", + "integrity": "sha512-4lKYVgGOfPu5KUpCQpsxWQ3b0rVog/HtGPhhhkmqaYfmgVSqRjWJSOelVPCQBupggNVqPsXnwNNfl+jvA0lJcQ==", "dev": true }, "ci-info": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", - "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", "dev": true }, "cipher-base": { @@ -2711,68 +2599,11 @@ "is-descriptor": "^0.1.0" } }, - "is-accessor-descriptor": { - "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.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-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.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-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.0.0" - } - }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true - }, - "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==", - "dev": true } } }, @@ -2862,9 +2693,9 @@ } }, "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "clone-buffer": { "version": "1.0.0", @@ -2885,9 +2716,9 @@ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" }, "cloneable-readable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.1.tgz", - "integrity": "sha512-DNNEq6JdqBFPzS29TaoqZFPNLn5Xn3XyPFqLIhyBT8Xou4lHQEWzD6FinXoJUfhIfWX3aE1JkRa3cbWCHFbt1g==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "requires": { "inherits": "^2.0.1", "process-nextick-args": "^2.0.0", @@ -2906,163 +2737,14 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.0.tgz", - "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.1.tgz", + "integrity": "sha512-0TjnXrbvcPzAkRPv/Y5D8aZju/M5adkFxShRyMMgDReB8EV9nF4XMERXs6ajgLA1di9LUFW2tgePDQd2JPWy7g==", "dev": true, "requires": { "argv": "0.0.2", - "request": "2.81.0", + "request": "^2.81.0", "urlgrey": "0.4.4" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "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": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - } } }, "collection-visit": { @@ -3089,9 +2771,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", + "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==" }, "combined-stream": { "version": "1.0.6", @@ -3103,9 +2785,9 @@ } }, "commander": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.0.tgz", - "integrity": "sha512-7B1ilBwtYSbetCgTY1NJFg+gVpestg0fdA1MhC1Vs4ssyfSXnCAjFr+QcQM9/RedXC0EaUx1sG8Smgw2VfgKEg==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, "commitizen": { @@ -3257,7 +2939,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -3375,7 +3057,7 @@ }, "compression": { "version": "1.7.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", "dev": true, "requires": { @@ -3386,6 +3068,14 @@ "on-headers": "~1.0.1", "safe-buffer": "5.1.1", "vary": "~1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } } }, "concat-map": { @@ -3394,11 +3084,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw==", + "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.2.2", "typedarray": "^0.0.6" @@ -3443,12 +3134,6 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", - "dev": true - }, "conventional-changelog": { "version": "1.1.24", "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz", @@ -3555,89 +3240,29 @@ "through2": "^2.0.0" }, "dependencies": { - "conventional-commits-parser": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", - "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", - "dev": true, - "requires": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0", - "trim-off-newlines": "^1.0.0" - } - }, - "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "git-raw-commits": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", - "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "dargs": "^4.0.1", - "lodash.template": "^4.0.2", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - }, - "dependencies": { - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.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": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -3656,6 +3281,17 @@ "pinkie-promise": "^2.0.0" } }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -3671,32 +3307,6 @@ "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } } }, "read-pkg-up": { @@ -3707,18 +3317,6 @@ "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } } } } @@ -3853,9 +3451,9 @@ } }, "conventional-commits-parser": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.5.tgz", - "integrity": "sha512-jaAP61py+ISMF3/n3yIiIuY5h6mJlucOqawu5mLB1HaQADLvg/y5UB3pT7HSucZJan34lp7+7ylQPfbKEGmxrA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", + "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", "dev": true, "requires": { "JSONStream": "^1.0.4", @@ -3868,9 +3466,9 @@ }, "dependencies": { "meow": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz", - "integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { "camelcase-keys": "^4.0.0", @@ -3941,9 +3539,9 @@ "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" }, "core-util-is": { "version": "1.0.2", @@ -4214,7 +3812,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -4271,6 +3869,15 @@ } } }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, "dargs": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", @@ -4285,6 +3892,17 @@ "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.0.0", + "whatwg-url": "^6.4.0" + } + }, "date-fns": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", @@ -4397,11 +4015,46 @@ "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.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.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" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "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==", + "dev": true } } }, @@ -4647,9 +4300,9 @@ "dev": true }, "ejs": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", - "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" }, "elegant-spinner": { "version": "1.0.1", @@ -4741,9 +4394,9 @@ } }, "es-abstract": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", - "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", "dev": true, "requires": { "es-to-primitive": "^1.1.1", @@ -4764,6 +4417,38 @@ "is-symbol": "^1.0.1" } }, + "es5-ext": { + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -4978,9 +4663,9 @@ "dev": true }, "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", "dev": true }, "events": { @@ -5085,26 +4770,26 @@ } }, "expect": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-22.4.0.tgz", - "integrity": "sha512-Fiy862jT3qc70hwIHwwCBNISmaqBrfWKKrtqyMJ6iwZr+6KXtcnHojZFtd63TPRvRl8EQTJ+YXYy2lK6/6u+Hw==", + "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.0", - "jest-diff": "^22.4.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-regex-util": "^22.1.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" } }, "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { - "accepts": "~1.3.4", + "accepts": "~1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", @@ -5112,26 +4797,26 @@ "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.1", - "encodeurl": "~1.0.1", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.0", + "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.2", + "proxy-addr": "~2.0.3", "qs": "6.5.1", "range-parser": "~1.2.0", "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", + "send": "0.16.2", + "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "~1.3.1", - "type-is": "~1.6.15", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", "vary": "~1.1.2" }, @@ -5141,6 +4826,12 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "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==", + "dev": true } } }, @@ -5172,9 +4863,9 @@ } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { "chardet": "^0.4.0", "iconv-lite": "^0.4.17", @@ -5283,17 +4974,17 @@ } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", "parseurl": "~1.3.2", - "statuses": "~1.3.1", + "statuses": "~1.4.0", "unpipe": "~1.0.0" } }, @@ -5429,9 +5120,9 @@ } }, "flow-parser": { - "version": "0.67.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.67.1.tgz", - "integrity": "sha1-GR/tVsz9jQl9ydSH8to7Da50WEk=" + "version": "0.71.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.71.0.tgz", + "integrity": "sha512-rXSvqSBLf8aRI6T3P99jMcUYvZoO1KZcKDkzGJmXvYdNAgRKu7sfGNtxEsn3cX4TgungBuJpX+K8aHRC9/B5MA==" }, "flush-write-stream": { "version": "1.0.3", @@ -5529,6 +5220,12 @@ "readable-stream": "^2.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", @@ -5564,51 +5261,36 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "^2.9.2", + "node-pre-gyp": "^0.9.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "version": "1.1.1", + "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "version": "1.2.0", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5616,170 +5298,50 @@ "readable-stream": "^2.0.6" } }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "version": "1.0.0", + "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "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.3" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "brace-expansion": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "version": "1.1.11", + "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "chownr": { + "version": "1.0.1", + "bundled": true, "dev": true, "optional": true }, "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=", + "bundled": true, "dev": true }, - "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" - } - }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "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=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "bundled": true, "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "2.6.9", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5788,107 +5350,40 @@ }, "deep-extend": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "bundled": true, "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", - "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "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.0" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "version": "1.0.3", + "bundled": true, "dev": true, "optional": true }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "dev": true, "optional": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "bundled": true, "dev": true, - "optional": true, - "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - } + "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -5902,30 +5397,11 @@ "wide-align": "^1.1.0" } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5935,72 +5411,35 @@ "path-is-absolute": "^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=", - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true, - "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" - } - }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "iconv-lite": { + "version": "0.4.21", + "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "safer-buffer": "^2.1.0" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6008,150 +5447,63 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "bundled": true, "dev": true, "optional": true }, "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=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true - }, - "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, - "optional": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "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=", - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "bundled": true, "dev": true, "optional": true }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "minimatch": { + "version": "3.0.4", + "bundled": true, "dev": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } + "brace-expansion": "^1.1.7" } }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "minimist": { + "version": "0.0.8", + "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "minipass": { + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { - "mime-db": "~1.27.0" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "minizlib": { + "version": "1.1.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "minipass": "^2.2.1" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -6159,35 +5511,42 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", - "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", + "version": "0.9.1", + "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", - "hawk": "3.1.3", "mkdirp": "^0.5.1", + "needle": "^2.2.0", "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", "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" + "tar": "^4" } }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6195,10 +5554,25 @@ "osenv": "^0.1.4" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "version": "4.1.2", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6210,28 +5584,18 @@ }, "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=", + "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -6239,22 +5603,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "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=", + "bundled": true, "dev": true, "optional": true }, "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "version": "0.1.5", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6264,41 +5625,19 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "bundled": true, "dev": true, "optional": true }, "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=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "version": "2.0.0", + "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "version": "1.2.6", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6310,135 +5649,74 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } } }, "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true, - "requires": { - "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": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "2.6.2", + "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "version": "5.1.1", + "bundled": true, "dev": true }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.5.0", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "sshpk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", - "dev": true, - "optional": true, - "requires": { - "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": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -6447,25 +5725,17 @@ } }, "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -6473,100 +5743,34 @@ }, "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=", + "bundled": true, "dev": true, "optional": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "dev": true, - "optional": true, - "requires": { - "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": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, - "optional": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "version": "4.4.1", + "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, - "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 - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6575,8 +5779,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, "dev": true } } @@ -6767,9 +5975,9 @@ } }, "git-raw-commits": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.4.tgz", - "integrity": "sha512-G3O+41xHbscpgL5nA0DUkbFVgaAz5rd57AMSIMew8p7C8SyFwZDyn08MoXHkTl9zcD0LmxsLFPxbqFY4YPbpPA==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", + "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", "dev": true, "requires": { "dargs": "^4.0.1", @@ -6789,9 +5997,9 @@ } }, "meow": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz", - "integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { "camelcase-keys": "^4.0.0", @@ -7159,6 +6367,12 @@ "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", @@ -7189,19 +6403,436 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true - } - } - }, - "has-values": { - "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" - }, - "dependencies": { + } + } + }, + "has-values": { + "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" + }, + "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.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" + } + } + } + }, + "kind-of": { + "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" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "hawk": { + "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.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-encoding-sniffer": { + "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.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", + "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "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=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "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.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.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.0" + } + }, + "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.0" + } + }, + "is-accessor-descriptor": { + "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.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-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.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-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.0.0" + } + }, + "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==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^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.0" + } + }, + "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.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "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.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.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.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-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -7222,195 +6853,50 @@ } } }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } } } }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "hawk": { - "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.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-encoding-sniffer": { - "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.1" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.11.tgz", - "integrity": "sha512-QCR5O2AjjMW8Mo4HyI1ctFcv+O99j/0g367V3YoVnrNw5hkDvAWZD0lWGcc+F4yN3V55USPCVix4efb75HxFfA==", - "dev": true - }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true, - "requires": { - "eventemitter3": "1.x.x", - "requires-port": "1.x.x" - } - }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "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": { - "http-proxy": "^1.16.2", - "is-glob": "^3.1.0", - "lodash": "^4.17.2", - "micromatch": "^2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-browserify": { @@ -7439,9 +6925,12 @@ } }, "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==" + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "requires": { + "safer-buffer": "^2.1.0" + } }, "ieee754": { "version": "1.1.11", @@ -7456,9 +6945,9 @@ "dev": true }, "ignore": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", - "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", "dev": true }, "iltorb": { @@ -7527,9 +7016,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", - "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", @@ -7570,9 +7059,9 @@ } }, "invariant": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.3.tgz", - "integrity": "sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { "loose-envify": "^1.0.0" } @@ -7595,20 +7084,12 @@ "dev": true }, "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==", + "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": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "^3.0.2" } }, "is-arrayish": { @@ -7654,20 +7135,12 @@ } }, "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==", + "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": "^6.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "^3.0.2" } }, "is-date-object": { @@ -7677,20 +7150,20 @@ "dev": true }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "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": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -7809,9 +7282,9 @@ "dev": true }, "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "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.0" @@ -8087,12 +7560,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", - "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", - "dev": true - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -8226,201 +7693,6 @@ "yargs": "^10.0.3" }, "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "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.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" - } - }, - "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.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.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" - } - }, - "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.5.1" - } - }, - "jest-environment-node": { - "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-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==", - "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.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.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.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==", - "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==", - "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.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.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.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" - } - }, - "jest-validate": { - "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.0.1", - "jest-config": "^22.4.3", - "jest-get-type": "^22.4.3", - "leven": "^2.1.0", - "pretty-format": "^22.4.3" - } - }, - "pretty-format": { - "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.0" - } - }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -8430,22 +7702,6 @@ "glob": "^7.0.5" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "yargs": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", @@ -8478,34 +7734,34 @@ } }, "jest-config": { - "version": "22.4.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.4.2.tgz", - "integrity": "sha512-oG31qYO73/3vj/Q8aM2RgzmHndTkz9nRk8ISybfuJqqbf0RW7OUjHVOZPLOUiwLWtz52Yq2HkjIblsyhbA7vrg==", + "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.0.1", "glob": "^7.1.1", - "jest-environment-jsdom": "^22.4.1", - "jest-environment-node": "^22.4.1", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^22.4.2", - "jest-regex-util": "^22.1.0", - "jest-resolve": "^22.4.2", - "jest-util": "^22.4.1", - "jest-validate": "^22.4.2", - "pretty-format": "^22.4.0" + "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.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.4.0.tgz", - "integrity": "sha512-+/t20WmnkOkB8MOaGaPziI8zWKxquMvYw4Ub+wOzi7AUhmpFXz43buWSxVoZo4J5RnCozpGbX3/FssjJ5KV9Nw==", + "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.0.1", "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^22.4.0" + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" } }, "jest-docblock": { @@ -8518,30 +7774,30 @@ } }, "jest-environment-jsdom": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.1.tgz", - "integrity": "sha512-x/JzAoH+dWPBnIMv5OQKiIR0TYf6UvbRjsIuDZ11yDFXkHKGJZg6jNnLAsokAm3cq9kUa2hH5BPUC9XU4n1ELQ==", + "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.2.0", - "jest-util": "^22.4.1", + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3", "jsdom": "^11.5.1" } }, "jest-environment-node": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.1.tgz", - "integrity": "sha512-wj9+zzfRgnUbm5VwFOCGgG1QmbucUyrjPKBKUJdLW8K5Ss5zrNc1k+v6feZhFg6sS3ZGnjgtIyklaxEARxu+LQ==", + "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.2.0", - "jest-util": "^22.4.1" + "jest-mock": "^22.4.3", + "jest-util": "^22.4.3" } }, "jest-get-type": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.1.0.tgz", - "integrity": "sha512-nD97IVOlNP6fjIN5i7j5XRH+hFsHL7VlauBbzRvueaaUe70uohrkz7pL/N8lx/IAwZRTJ//wOdVgh85OgM7g3w==", + "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==", "dev": true }, "jest-haste-map": { @@ -8560,21 +7816,21 @@ } }, "jest-jasmine2": { - "version": "22.4.2", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.4.2.tgz", - "integrity": "sha512-KZaIHpXQ0AIlvQJFCU0uoXxtz5GG47X14r9upMe7VXE55UazoMZBFnQb9TX2HoYX2/AxJYnjHuvwKVCFqOrEtw==", + "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.0.1", "co": "^4.6.0", - "expect": "^22.4.0", + "expect": "^22.4.3", "graceful-fs": "^4.1.11", "is-generator-fn": "^1.0.0", - "jest-diff": "^22.4.0", - "jest-matcher-utils": "^22.4.0", - "jest-message-util": "^22.4.0", - "jest-snapshot": "^22.4.0", - "jest-util": "^22.4.1", + "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" }, "dependencies": { @@ -8585,11 +7841,12 @@ "dev": true }, "source-map-support": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", - "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", "dev": true, "requires": { + "buffer-from": "^1.0.0", "source-map": "^0.6.0" } } @@ -8602,35 +7859,23 @@ "dev": true, "requires": { "pretty-format": "^22.4.3" - }, - "dependencies": { - "pretty-format": { - "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.0" - } - } } }, "jest-matcher-utils": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.0.tgz", - "integrity": "sha512-03m3issxUXpWMwDYTfmL8hRNewUB0yCRTeXPm+eq058rZxLHD9f5NtSSO98CWHqe4UyISIxd9Ao9iDVjHWd2qg==", + "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.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^22.4.0" + "jest-get-type": "^22.4.3", + "pretty-format": "^22.4.3" } }, "jest-message-util": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.0.tgz", - "integrity": "sha512-eyCJB0T3hrlpFF2FqQoIB093OulP+1qvATQmD3IOgJgMGqPL6eYw8TbC5P/VCWPqKhGL51xvjIIhow5eZ2wHFw==", + "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.35", @@ -8641,274 +7886,53 @@ } }, "jest-mock": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.2.0.tgz", - "integrity": "sha512-eOfoUYLOB/JlxChOFkh/bzpWGqUXb9I+oOpkprHHs9L7nUNfL8Rk28h1ycWrqzWCEQ/jZBg/xIv7VdQkfAkOhw==", + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", + "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==", "dev": true }, "jest-regex-util": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.1.0.tgz", - "integrity": "sha512-on0LqVS6Xeh69sw3d1RukVnur+lVOl3zkmb0Q54FHj9wHoq6dbtWqb3TSlnVUyx36hqjJhjgs/QLqs07Bzu72Q==", + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz", + "integrity": "sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg==", "dev": true }, "jest-resolve": { - "version": "22.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.2.tgz", - "integrity": "sha512-P1hSfcc2HJYT5t+WPu/11OfFMa7m8pBb2Gf2vm6W9OVs7YTXQ5RCC3nDqaYZQaTqxEM1ZZaTcQGcE6U2xMOsqQ==", - "dev": true, - "requires": { - "browser-resolve": "^1.11.2", - "chalk": "^2.0.1" - } - }, - "jest-resolve-dependencies": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", - "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", - "dev": true, - "requires": { - "jest-regex-util": "^22.4.3" - }, - "dependencies": { - "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==", - "dev": true - } - } - }, - "jest-runner": { "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.3.tgz", - "integrity": "sha512-U7PLlQPRlWNbvOHWOrrVay9sqhBJmiKeAdKIkvX4n1G2tsvzLlf77nBD28GL1N6tGv4RmuTfI8R8JrkvCa+IBg==", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz", + "integrity": "sha512-u3BkD/MQBmwrOJDzDIaxpyqTxYH+XqAXzVJP51gt29H8jpj3QgKof5GGO2uPGKGeA1yTMlpbMs1gIQ6U4vcRhw==", "dev": true, "requires": { - "exit": "^0.1.2", - "jest-config": "^22.4.3", - "jest-docblock": "^22.4.3", - "jest-haste-map": "^22.4.3", - "jest-jasmine2": "^22.4.3", - "jest-leak-detector": "^22.4.3", - "jest-message-util": "^22.4.3", - "jest-runtime": "^22.4.3", - "jest-util": "^22.4.3", - "jest-worker": "^22.4.3", - "throat": "^4.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "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.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" - } - }, - "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.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.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" - } - }, - "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.5.1" - } - }, - "jest-environment-node": { - "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-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==", - "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.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.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.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==", - "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==", - "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.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.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.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" - } - }, - "jest-validate": { - "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.0.1", - "jest-config": "^22.4.3", - "jest-get-type": "^22.4.3", - "leven": "^2.1.0", - "pretty-format": "^22.4.3" - } - }, - "pretty-format": { - "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.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } + "browser-resolve": "^1.11.2", + "chalk": "^2.0.1" + } + }, + "jest-resolve-dependencies": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz", + "integrity": "sha512-06czCMVToSN8F2U4EvgSB1Bv/56gc7MpCftZ9z9fBgUQM7dzHGCMBsyfVA6dZTx8v0FDcnALf7hupeQxaBCvpA==", + "dev": true, + "requires": { + "jest-regex-util": "^22.4.3" + } + }, + "jest-runner": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.4.3.tgz", + "integrity": "sha512-U7PLlQPRlWNbvOHWOrrVay9sqhBJmiKeAdKIkvX4n1G2tsvzLlf77nBD28GL1N6tGv4RmuTfI8R8JrkvCa+IBg==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "jest-config": "^22.4.3", + "jest-docblock": "^22.4.3", + "jest-haste-map": "^22.4.3", + "jest-jasmine2": "^22.4.3", + "jest-leak-detector": "^22.4.3", + "jest-message-util": "^22.4.3", + "jest-runtime": "^22.4.3", + "jest-util": "^22.4.3", + "jest-worker": "^22.4.3", + "throat": "^4.0.0" } }, "jest-runtime": { @@ -8939,217 +7963,6 @@ "yargs": "^10.0.3" }, "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "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.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" - } - }, - "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.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.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.4.3", - "pretty-format": "^22.4.3" - } - }, - "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.5.1" - } - }, - "jest-environment-node": { - "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-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==", - "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.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.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.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==", - "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==", - "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.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.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.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" - } - }, - "jest-validate": { - "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.0.1", - "jest-config": "^22.4.3", - "jest-get-type": "^22.4.3", - "leven": "^2.1.0", - "pretty-format": "^22.4.3" - } - }, - "pretty-format": { - "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.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -9205,30 +8018,30 @@ "dev": true }, "jest-snapshot": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.0.tgz", - "integrity": "sha512-6Zz4F9G1Nbr93kfm5h3A2+OkE+WGpgJlskYE4iSNN2uYfoTL5b9W6aB9Orpx+ueReHyqmy7HET7Z3EmYlL3hKw==", + "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.0.1", - "jest-diff": "^22.4.0", - "jest-matcher-utils": "^22.4.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.0" + "pretty-format": "^22.4.3" } }, "jest-util": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.1.tgz", - "integrity": "sha512-9ySBdJY2qVWpg0OvZbGcFXE2NgwccpZVj384E9bx7brKFc7l5anpqah15mseWcz7FLDk7/N+LyYgqFme7Rez2Q==", + "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.0.1", "graceful-fs": "^4.1.11", "is-ci": "^1.0.10", - "jest-message-util": "^22.4.0", + "jest-message-util": "^22.4.3", "mkdirp": "^0.5.1", "source-map": "^0.6.0" }, @@ -9248,16 +8061,16 @@ } }, "jest-validate": { - "version": "22.4.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.4.2.tgz", - "integrity": "sha512-TLOgc/EULFBjMCAqZp5OdVvjxV16DZpfthd/UyPzM6lRmgWluohNVemAdnL3JvugU1s2Q2npcIqtbOtiPjaZ0A==", + "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.0.1", - "jest-config": "^22.4.2", - "jest-get-type": "^22.1.0", + "jest-config": "^22.4.3", + "jest-get-type": "^22.4.3", "leven": "^2.1.0", - "pretty-format": "^22.4.0" + "pretty-format": "^22.4.3" } }, "jest-worker": { @@ -9366,19 +8179,18 @@ } }, "jsdom": { - "version": "11.6.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", - "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.9.0.tgz", + "integrity": "sha512-sb3omwJTJ+HwAltLZevM/KQBusY+l2Ar5UfnTCWk9oUVBiDnQPBNiG1BaTAKttCnneonYbNo7vi4EFDY2lBfNA==", "dev": true, "requires": { "abab": "^1.0.4", "acorn": "^5.3.0", "acorn-globals": "^4.1.0", "array-equal": "^1.0.0", - "browser-process-hrtime": "^0.1.2", - "content-type-parser": "^1.0.2", "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", @@ -9394,6 +8206,7 @@ "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" @@ -9410,9 +8223,9 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==" + "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==" }, "json-schema": { "version": "0.2.3", @@ -9538,9 +8351,9 @@ } }, "left-pad": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", - "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true }, "leven": { @@ -9560,9 +8373,9 @@ } }, "lint-staged": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.0.0.tgz", - "integrity": "sha512-6Z89we28Qy1Ez7ZxO8yYfPKqzdxkSjnURq1d3RS2gKkZrA135xN+ptF3EWHrcHyBMmgA20vA7dGCQGj+OMS22g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-7.0.5.tgz", + "integrity": "sha512-dCzqskhum0WXQBE0RawBkOlRjg2pc7PkAJD4yRB12+ct5CMTOU9tvzzbsyqJwaGHjTdSFUxiT8n+sww77p2r7w==", "dev": true, "requires": { "app-root-path": "^2.0.1", @@ -9583,8 +8396,9 @@ "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.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.1", + "string-argv": "^0.0.2", "stringify-object": "^3.2.2" }, "dependencies": { @@ -9601,18 +8415,16 @@ "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", - "define-property": "^1.0.0", "extend-shallow": "^2.0.1", "fill-range": "^4.0.0", "isobject": "^3.0.1", - "kind-of": "^6.0.2", "repeat-element": "^1.1.2", "snapdragon": "^0.8.1", "snapdragon-node": "^2.0.1", @@ -9620,15 +8432,6 @@ "to-regex": "^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.0" - } - }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -9640,17 +8443,6 @@ } } }, - "cross-spawn": { - "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.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -9679,6 +8471,19 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "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.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } }, "expand-brackets": { @@ -9723,6 +8528,46 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "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.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-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.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-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -9802,43 +8647,32 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "^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" - } - } + "kind-of": "^6.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=", + "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": "^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" - } - } + "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-extglob": { @@ -9889,9 +8723,9 @@ "dev": true }, "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -9906,7 +8740,7 @@ "object.pick": "^1.3.0", "regex-not": "^1.0.0", "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "to-regex": "^3.0.2" } } } @@ -10120,7 +8954,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "restore-cursor": { @@ -10191,9 +9025,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -10336,7 +9170,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "restore-cursor": { @@ -10409,10 +9243,14 @@ } }, "loglevelnext": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.3.tgz", - "integrity": "sha512-OCxd/b78TijTB4b6zVqLbMrxhebyvdZKwqpL0VHUZ0pYhavXaPD4l6Xrr4n5xqTYWiqtb0i7ikSoJY/myQ/Org==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } }, "longest": { "version": "1.0.1", @@ -10439,9 +9277,9 @@ } }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { "version": "4.1.2", @@ -10461,9 +9299,9 @@ } }, "make-plural": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-4.1.1.tgz", - "integrity": "sha512-triaMVDDYiB+OU1Mz6ht74+z0Bb/bzNESeMwRboSprI3GRWbOvfxEnpWI0eDixQtMPrC2C0revd4wmuck5GcoQ==", + "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" @@ -10509,9 +9347,9 @@ } }, "marked": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", - "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", "dev": true }, "md5.js": { @@ -10886,9 +9724,9 @@ "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -11043,9 +9881,9 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.9.2.tgz", - "integrity": "sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "dev": true }, "nanomatch": { @@ -11101,9 +9939,15 @@ "dev": true }, "neo-async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", - "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true }, "nice-try": { "version": "1.0.4", @@ -11111,9 +9955,9 @@ "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==" }, "node-abi": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.3.0.tgz", - "integrity": "sha512-zwm6vU3SsVgw3e9fu48JBaRBCJGIvAgysDsqtf5+vEexFE71bEOtaMWb5zr/zODZNzTPtQlqUUpC79k68Hspow==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.0.tgz", + "integrity": "sha512-hRUz0vG+eJfSqwU6rOgW6wNyX85ec8OEE9n4A+u+eoiE8oTePhCkUFTNmwQ+86Kyu429PCLNNyI2P2jL9qKXhw==", "dev": true, "requires": { "semver": "^5.4.1" @@ -11345,9 +10189,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nwmatcher": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", - "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", "dev": true }, "nyc": { @@ -14060,43 +12904,6 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "is-accessor-descriptor": { - "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.0.2" - } - }, - "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.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.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==", - "dev": true - } - } } } }, @@ -14123,6 +12930,18 @@ } } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -14160,9 +12979,9 @@ } }, "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", - "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, "on-finished": { @@ -14395,7 +13214,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "restore-cursor": { @@ -14462,9 +13281,6 @@ "execa": "^0.7.0", "lcid": "^1.0.0", "mem": "^1.1.0" - }, - "dependencies": { - "cross-spawn": {} } }, "os-shim": { @@ -14489,9 +13305,9 @@ } }, "p-cancelable": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.0.tgz", - "integrity": "sha512-/AodqPe1y/GYbhSlnMjxukLGQfQIgsmjSy2CXCNB96kg4ozKvmlovuHEKICToOO/yS3LLWgrWI1dFtFfrePS1g==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" }, "p-each-series": { "version": "1.0.0", @@ -14747,10 +13563,13 @@ "dev": true }, "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=", - "dev": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.0.2.tgz", + "integrity": "sha512-bslfSeW+ksUbB/sYZeEdKFyTG4YWU9YKRvqfSRvZKE675khAuBUPqV5RUwJZaGuWmVQLweK45Q+lPHFVnSlSug==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } }, "pluralize": { "version": "7.0.0", @@ -14782,9 +13601,9 @@ "dev": true }, "prebuild-install": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.1.tgz", - "integrity": "sha512-3DX9L6pzwc1m1ksMkW3Ky2WLgPQUBiySOfXVl3WZyAeJSyJb4wtoH9OmeRGcubAWsMlLiL8BTHbwfm/jPQE9Ag==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz", + "integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==", "dev": true, "requires": { "detect-libc": "^1.0.3", @@ -14835,9 +13654,9 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=" }, "prettier-eslint": { "version": "8.8.1", @@ -15010,9 +13829,9 @@ "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, "pretty-format": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.0.tgz", - "integrity": "sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==", + "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", @@ -15157,9 +13976,9 @@ "dev": true }, "query-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", - "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", "requires": { "decode-uri-component": "^0.2.0", "object-assign": "^4.1.0", @@ -15262,12 +14081,44 @@ "http-errors": "1.6.2", "iconv-lite": "0.4.19", "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "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==", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } } }, "rc": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz", - "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", "dev": true, "requires": { "deep-extend": "~0.4.0", @@ -15313,16 +14164,16 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, @@ -15376,9 +14227,9 @@ } }, "recast": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.5.tgz", - "integrity": "sha512-GNFQGQrqW1R8w9XhhgYIN8H7ePPp088D+svHlb7DdP5DCqNDqTwH7lt378EouM+L18kCwkmqpAz1unLqpPhHmw==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", + "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", "requires": { "ast-types": "0.11.3", "esprima": "~4.0.0", @@ -15463,6 +14314,16 @@ "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", @@ -15505,9 +14366,9 @@ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -15532,19 +14393,6 @@ "tough-cookie": "~2.3.3", "tunnel-agent": "^0.6.0", "uuid": "^3.1.0" - }, - "dependencies": { - "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.2.2", - "sshpk": "^1.7.0" - } - } } }, "request-promise-core": { @@ -15573,9 +14421,9 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.1.tgz", - "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=", + "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==", "dev": true }, "require-main-filename": { @@ -15629,9 +14477,9 @@ "dev": true }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "requires": { "path-parse": "^1.0.5" } @@ -15764,17 +14612,17 @@ } }, "rxjs": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz", - "integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==", + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", + "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", "requires": { "symbol-observable": "1.0.1" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -15785,6 +14633,11 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "sane": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.0.tgz", @@ -15875,6 +14728,46 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "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.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-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.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-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -15954,43 +14847,32 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "^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" - } - } + "kind-of": "^6.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=", + "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": "^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" - } - } + "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-number": { @@ -16071,20 +14953,21 @@ }, "dependencies": { "ajv": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz", - "integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "dev": true, "requires": { "fast-deep-equal": "^1.0.0", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.3.0", + "uri-js": "^3.0.2" } }, "ajv-keywords": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", - "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true } } @@ -16114,16 +14997,22 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "destroy": "~1.0.4", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", @@ -16132,7 +15021,7 @@ "ms": "2.0.0", "on-finished": "~2.3.0", "range-parser": "~1.2.0", - "statuses": "~1.3.1" + "statuses": "~1.4.0" } }, "serialize-javascript": { @@ -16157,15 +15046,15 @@ } }, "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, "requires": { - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.2", - "send": "0.16.1" + "send": "0.16.2" } }, "set-blocking": { @@ -16173,15 +15062,6 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, - "requires": { - "to-object-path": "^0.3.0" - } - }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -16274,9 +15154,9 @@ "dev": true }, "simple-get": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz", - "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", "dev": true, "requires": { "decompress-response": "^3.3.0", @@ -16300,9 +15180,9 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" }, "snapdragon": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", - "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "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.1", @@ -16312,7 +15192,7 @@ "map-cache": "^0.2.2", "source-map": "^0.5.6", "source-map-resolve": "^0.5.0", - "use": "^2.0.0" + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -16332,63 +15212,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "is-accessor-descriptor": { - "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.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-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.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-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.0.0" - } - }, - "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==", - "dev": true } } }, @@ -16412,11 +15235,46 @@ "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.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.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" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "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==", + "dev": true } } }, @@ -16572,9 +15430,9 @@ } }, "spdy-transport": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", - "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", "dev": true, "requires": { "debug": "^2.6.8", @@ -16620,9 +15478,9 @@ "dev": true }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "dev": true, "requires": { "asn1": "~0.2.3", @@ -16657,9 +15515,9 @@ "dev": true }, "staged-git-files": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.0.tgz", - "integrity": "sha1-GpuxMcGIVgECPHqt3T1UwiFCxSY=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.1.tgz", + "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", "dev": true }, "static-extend": { @@ -16680,70 +15538,13 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "is-accessor-descriptor": { - "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.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-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.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-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.0.0" - } - }, - "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==", - "dev": true } } }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true }, "stealthy-require": { @@ -16804,6 +15605,12 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -16829,9 +15636,9 @@ } }, "string_decoder": { - "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==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" } @@ -16896,9 +15703,9 @@ "dev": true }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "requires": { "has-flag": "^3.0.0" } @@ -16986,14 +15793,17 @@ } }, "tar-stream": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", - "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.0.tgz", + "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==", "dev": true, "requires": { "bl": "^1.0.0", + "buffer-alloc": "^1.1.0", "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", "readable-stream": "^2.0.0", + "to-buffer": "^1.1.0", "xtend": "^4.0.0" } }, @@ -17111,6 +15921,46 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "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.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-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.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-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -17200,43 +16050,32 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "^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" - } - } + "kind-of": "^6.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=", + "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": "^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" - } - } + "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-number": { @@ -17439,6 +16278,12 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -17577,9 +16422,9 @@ "dev": true }, "typescript": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", + "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", "dev": true }, "typescript-eslint-parser": { @@ -17825,9 +16670,9 @@ "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=" }, "upath": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", - "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", + "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", "dev": true }, "uri-js": { @@ -17857,154 +16702,77 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-parse": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", - "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", - "dev": true, - "requires": { - "querystringify": "~1.0.0", - "requires-port": "~1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", - "dev": true - } - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, - "urlgrey": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", - "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", - "dev": true - }, - "use": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", - "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "lazy-cache": "^2.0.2" - }, - "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.0" - } - }, - "is-accessor-descriptor": { - "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.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-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.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-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.0.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true - }, + } + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-parse": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "dev": true + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", + "dev": true + }, + "use": { + "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" + }, + "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==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true - }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "^0.1.0" - } } } }, @@ -18238,7 +17006,7 @@ }, "onetime": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true }, @@ -18332,9 +17100,9 @@ } }, "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", - "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { "minimalistic-assert": "^1.0.0" @@ -18386,9 +17154,9 @@ } }, "ajv-keywords": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", - "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, "arr-diff": { @@ -18465,6 +17233,46 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "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.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-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.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-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -18544,43 +17352,32 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "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": "^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" - } - } + "kind-of": "^6.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=", + "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": "^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" - } - } + "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-number": { @@ -18698,9 +17495,9 @@ } }, "webpack-dev-middleware": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.0.1.tgz", - "integrity": "sha512-JCturcEZNGA0KHEpOJVRTC/VVazTcPfpR9c1Au6NO9a+jxCRchMi87Qe7y3JeOzc0v5eMMKpuGBnPdN52NA+CQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.2.tgz", + "integrity": "sha512-Z11Zp3GTvCe6mGbbtma+lMB9xRfJcNtupXfmvFBujyXqLNms6onDnSi9f/Cb2rw6KkD5kgibOfxhN7npZwTiGA==", "dev": true, "requires": { "loud-rejection": "^1.6.0", @@ -18713,17 +17510,17 @@ }, "dependencies": { "mime": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", - "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", "dev": true } } }, "webpack-dev-server": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.1.tgz", - "integrity": "sha512-u5lz6REb3+KklgSIytUIOrmWgnpgFmfj/+I+GBXurhEoCsHXpG9twk4NO3bsu72GC9YtxIsiavjfRdhmNt0A/A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.3.tgz", + "integrity": "sha512-UXfgQIPpdw2rByoUnCrMAIXCS7IJJMp5N0MDQNk9CuQvirCkuWlu7gQpCS8Kaiz4kogC4TdAQHG3jzh/DdqEWg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -18736,7 +17533,7 @@ "del": "^3.0.0", "express": "^4.16.2", "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.17.4", + "http-proxy-middleware": "~0.18.0", "import-local": "^1.0.0", "internal-ip": "1.2.0", "ip": "^1.1.5", @@ -18751,9 +17548,9 @@ "spdy": "^3.4.1", "strip-ansi": "^3.0.0", "supports-color": "^5.1.0", - "webpack-dev-middleware": "3.0.1", + "webpack-dev-middleware": "3.1.2", "webpack-log": "^1.1.2", - "yargs": "9.0.1" + "yargs": "11.0.0" }, "dependencies": { "ansi-regex": { @@ -18762,30 +17559,6 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "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.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "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.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -18809,91 +17582,15 @@ "rimraf": "^2.2.8" } }, - "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.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "opn": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", - "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { "is-wsl": "^1.1.0" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -18903,48 +17600,32 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, "yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", "dev": true, "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", + "cliui": "^4.0.0", "decamelize": "^1.1.1", + "find-up": "^2.1.0", "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" - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" + "yargs-parser": "^9.0.2" } } } }, "webpack-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.1.2.tgz", - "integrity": "sha512-B53SD4N4BHpZdUwZcj4st2QT7gVfqZtqHDruC1N+K2sciq0Rt/3F1Dx6RlylVkcrToMLTaiaeT48k9Lq4iDVDA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", "dev": true, "requires": { "chalk": "^2.1.0", @@ -18994,17 +17675,31 @@ "dev": true, "requires": { "iconv-lite": "0.4.19" + }, + "dependencies": { + "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==", + "dev": true + } } }, + "whatwg-mimetype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz", + "integrity": "sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew==", + "dev": true + }, "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==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", + "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", - "tr46": "^1.0.0", - "webidl-conversions": "^4.0.1" + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "which": { @@ -19260,9 +17955,9 @@ } }, "yeoman-environment": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.5.tgz", - "integrity": "sha512-6/W7/B54OPHJXob0n0+pmkwFsirC8cokuQkPSmT/D0lCcSxkKtg/BA6ZnjUBIwjuGqmw3DTrT4en++htaUju5g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.6.tgz", + "integrity": "sha512-jzHBTTy8EPI4ImV8dpUMt+Q5zELkSU5xvGpndHcHudQ4tqN6YgIWaCGmRFl+HDchwRUkcgyjQ+n6/w5zlJBCPg==", "requires": { "chalk": "^2.1.0", "debug": "^3.1.0", @@ -19311,9 +18006,9 @@ } }, "yeoman-generator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.3.tgz", - "integrity": "sha512-mODmrZ26a94djmGZZuIiomSGlN4wULdou29ZwcySupb2e9FdvoCl7Ps2FqHFjEHio3kOl/iBeaNqrnx3C3NwWg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.4.tgz", + "integrity": "sha512-Sgvz3MAkOpEIobcpW3rjEl6bOTNnl8SkibP9z7hYKfIGIlw0QDC2k0MAeXvyE2pLqc2M0Duql+6R7/W9GrJojg==", "requires": { "async": "^2.6.0", "chalk": "^2.3.0", From 3d7fba81f5d36e44609e5851b9f4aa5b84e05404 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Sat, 28 Apr 2018 14:48:43 +0200 Subject: [PATCH 15/17] tests(snapshots): update snapshots --- lib/ast/__snapshots__/ast.test.js.snap | 170 ------------------------- 1 file changed, 170 deletions(-) diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 05c788696c4..73d75815e92 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -3661,176 +3661,6 @@ module.exports = { }" `; -exports[`topScope transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - topScope: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -}" -`; - exports[`watch transforms correctly using "fixture-0" data 1`] = ` "const webpack = require(\\"webpack\\"); From 9e7e2b5a8bd76cf87fa32344e6fa57114cde40bf Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Sat, 28 Apr 2018 14:50:29 +0200 Subject: [PATCH 16/17] tests(jest): use empty module for snapshots --- lib/ast/__snapshots__/ast.test.js.snap | 4439 +++---------------- lib/ast/__testfixtures__/fixture-1.input.js | 1 + lib/ast/ast.test.js | 2 +- 3 files changed, 562 insertions(+), 3880 deletions(-) create mode 100644 lib/ast/__testfixtures__/fixture-1.input.js diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 73d75815e92..0ebf2a40eb8 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -1,3936 +1,617 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`amd transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`amd transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + amd: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`bail transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`bail transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + bail: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`cache transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`cache transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + cache: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`context transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`context transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + context: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`devServer transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`devServer transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + devServer: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`devtool transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`devtool transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + devtool: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`entry transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`entry transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + entry: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`externals transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`externals transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + externals: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`merge transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`merge transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + merge: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`mode transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`mode transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + mode: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`module transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`module transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + module: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`node transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - node: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -}" +exports[`node transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + node: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`optimizations transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - optimizations: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -}" +exports[`optimizations transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + optimizations: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`output transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`output transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + output: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`parallelism transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`parallelism transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + parallelism: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`performance transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`performance transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + performance: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`plugins transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`plugins transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + plugins: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`profile transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`profile transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + profile: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`recordsInputPath transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`recordsInputPath transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + recordsInputPath: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`recordsOutputPath transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`recordsOutputPath transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + recordsOutputPath: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`recordsPath transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`recordsPath transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + recordsPath: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`resolve transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`resolve transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + resolve: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`resolveLoader transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`resolveLoader transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + resolveLoader: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`splitChunks transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - - watch: 'me', - context: 'reassign me like one of your french girls', - - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - - devtool: 'eval', - - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - - amd: { - jQuery: true, - kQuery: false - }, - - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - - target: 'something', - - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - - plugins: ['something'], - - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, - - splitChunks: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -}" +exports[`splitChunks transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + splitChunks: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`stats transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`stats transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + stats: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`target transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`target transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + target: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`watch transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`watch transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + watch: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; -exports[`watchOptions transforms correctly using "fixture-0" data 1`] = ` -"const webpack = require(\\"webpack\\"); - -module.exports = { - entry: { - ed: 'index.js', - sheeran: \\"yea, good shit\\" - }, - output: { - filename: \\"'bundle'\\", - path: \\"'dist/assets'\\", - pathinfo: true, - publicPath: \\"'https://google.com'\\", - sourceMapFilename: \\"'[name].map'\\", - sourcePrefix: jscodeshift(\\"'\\\\t'\\"), - umdNamedDefine: true, - strictModuleExceptionHandling: true - }, - watchOptions: { - aggregateTimeout: 100, - poll: 90, - ignored: \\"/ok/\\" - }, - watch: 'me', - context: 'reassign me like one of your french girls', - devServer: { - contentBase: \\"edSheeran\\", - compress: true, - port: 9000, - empti: \\"ness\\" - }, - devtool: 'eval', - externals: { - highdash: { - commonjs: 'lodash', - amd: 'lodash' - } - }, - performance: { - hints: \\"'warning'\\", - maxEntrypointSize: 400000, - maxAssetSize: 100000, - assetFilter: - \\"function(assetFilename) {\\" + - \\"return assetFilename.endsWith('.js');\\" + - \\"}\\" - }, - mode: 'development', - bail: true, - cache: true, - profile: true, - merge: 'NotMuch', - parallelism: 69, - recordsInputPath: 'something', - recordsOutputPath: 'else', - recordsPath: 'Brooklyn', - amd: { - jQuery: true, - kQuery: false - }, - resolveLoader: { - moduleExtensions: [ '-loader' ] - }, - stats: { - assets: false, - assetsSort: \\"'gold'\\", - cached: true, - cachedAssets: true, - children: false, - chunks: true, - }, - target: 'something', - resolve: { - alias: { - inject: \\"{{#if_eq build 'standalone'}}\\", - hello: \\"'world'\\", - inject_1: \\"{{/if_eq}}\\", - world: \\"hello\\" - }, - aliasFields: [\\"'browser'\\", \\"wars\\"], - descriptionFiles: [\\"'a'\\", \\"b\\", \\"'c'\\"], - enforceExtension: false, - enforceModuleExtension: false, - extensions: [\\"hey\\", \\"ho\\"], - mainFields: [\\"main\\", \\"'story'\\"], - mainFiles: [\\"'noMainFileHere'\\", \\"iGuess\\"], - modules: [\\"one\\", \\"'two'\\"], - unsafeCache: false, - resolveLoader: { - modules: [\\"'node_modules'\\", \\"mode_nodules\\"], - extensions: [\\"jsVal\\", \\"'.json'\\"], - mainFields: [\\"loader\\", \\"'main'\\"], - moduleExtensions: [\\"'-loader'\\", \\"value\\"] - }, - plugins: [\\"somePlugin\\", \\"'stringVal'\\"], - symlinks: true - }, - plugins: ['something'], - module: { - rules: [ - { - loader: \\"'eslint-loader'\\", - enforce: \\"'pre'\\", - include: [\\"hey\\", \\"'Stringy'\\"], - options: { - formatter: \\"'someOption'\\" - } - }, - { - loader: \\"'vue-loader'\\", - options: \\"vueObject\\" - }, - { - loader: \\"'babel-loader'\\", - include: [\\"resolve('src')\\", \\"resolve('test')\\"] - }, - { - loader: \\"'url-loader'\\", - options: { - limit: 10000, - name: \\"utils.assetsPath('img/[name].[hash:7].[ext]')\\", - inject: \\"{{#if_eq build 'standalone'}}\\" - } - }, - { - loader: \\"'url-loader'\\", - inject: \\"{{#if_eq build 'standalone'}}\\", - options: { - limit: \\"10000\\", - name: \\"utils.assetsPath('fonts/[name].[hash:7].[ext]')\\" - } - } - ] - }, -}" +exports[`watchOptions transforms correctly using "fixture-1" data 1`] = ` +"module.exports = { + watchOptions: { + objects: are, + + super: [yeah, { + test: /\\\\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [customObj, 'Stringy'], + + options: { + formatter: 'someOption' + } + }], + + nice: ':)', + man: () => duper + } +};" `; diff --git a/lib/ast/__testfixtures__/fixture-1.input.js b/lib/ast/__testfixtures__/fixture-1.input.js new file mode 100644 index 00000000000..a0995453769 --- /dev/null +++ b/lib/ast/__testfixtures__/fixture-1.input.js @@ -0,0 +1 @@ +module.exports = {}; \ No newline at end of file diff --git a/lib/ast/ast.test.js b/lib/ast/ast.test.js index b886ec5b30b..08565d3d5e4 100644 --- a/lib/ast/ast.test.js +++ b/lib/ast/ast.test.js @@ -7,7 +7,7 @@ propTypes.forEach(prop => { defineTest( __dirname, prop, - "fixture-0", + "fixture-1", { objects: "are", super: [ From ef9327aa49be2f20811237113336adc6895caf22 Mon Sep 17 00:00:00 2001 From: ev1stensberg Date: Sat, 28 Apr 2018 19:54:34 +0200 Subject: [PATCH 17/17] tests(snap): only test one prop --- bin/config-yargs.js | 49 +- lib/ast/__snapshots__/ast.test.js.snap | 598 +------------------ lib/ast/ast.test.js | 46 +- lib/commands/migrate.js | 6 +- lib/generators/add-generator.js | 4 +- lib/generators/init-generator.js | 26 +- lib/generators/loader-generator.js | 4 +- lib/generators/plugin-generator.js | 5 +- lib/generators/utils/entry.js | 9 +- lib/migrate/uglifyJsPlugin/uglifyJsPlugin.js | 48 +- lib/utils/ast-utils.js | 16 +- lib/utils/prop-types.js | 2 +- lib/utils/validate-identifier.js | 565 ++++++++++++++++-- 13 files changed, 661 insertions(+), 717 deletions(-) diff --git a/bin/config-yargs.js b/bin/config-yargs.js index 8f94a4288dc..65abf670e88 100644 --- a/bin/config-yargs.js +++ b/bin/config-yargs.js @@ -140,14 +140,16 @@ module.exports = function(yargs) { }, "output-filename": { type: "string", - describe: optionsSchema.definitions.output.properties.filename.description, + describe: + optionsSchema.definitions.output.properties.filename.description, group: OUTPUT_GROUP, defaultDescription: "[name].js", requiresArg: true }, "output-chunk-filename": { type: "string", - describe: optionsSchema.definitions.output.properties.chunkFilename.description, + describe: + optionsSchema.definitions.output.properties.chunkFilename.description, group: OUTPUT_GROUP, defaultDescription: "filename with [id] instead of [name] or [id] prefixed", @@ -155,25 +157,30 @@ module.exports = function(yargs) { }, "output-source-map-filename": { type: "string", - describe: optionsSchema.definitions.output.properties.sourceMapFilename.description, + describe: + optionsSchema.definitions.output.properties.sourceMapFilename + .description, group: OUTPUT_GROUP, requiresArg: true }, "output-public-path": { type: "string", - describe: optionsSchema.definitions.output.properties.publicPath.description, + describe: + optionsSchema.definitions.output.properties.publicPath.description, group: OUTPUT_GROUP, requiresArg: true }, "output-jsonp-function": { type: "string", - describe: optionsSchema.definitions.output.properties.jsonpFunction.description, + describe: + optionsSchema.definitions.output.properties.jsonpFunction.description, group: OUTPUT_GROUP, requiresArg: true }, "output-pathinfo": { type: "boolean", - describe: optionsSchema.definitions.output.properties.pathinfo.description, + describe: + optionsSchema.definitions.output.properties.pathinfo.description, group: OUTPUT_GROUP }, "output-library": { @@ -184,7 +191,8 @@ module.exports = function(yargs) { }, "output-library-target": { type: "string", - describe: optionsSchema.definitions.output.properties.libraryTarget.description, + describe: + optionsSchema.definitions.output.properties.libraryTarget.description, choices: optionsSchema.definitions.output.properties.libraryTarget.enum, group: OUTPUT_GROUP, requiresArg: true @@ -235,18 +243,24 @@ module.exports = function(yargs) { "watch-stdin": { type: "boolean", alias: "stdin", - describe: optionsSchema.properties.watchOptions.properties.stdin.description, + describe: + optionsSchema.properties.watchOptions.properties.stdin.description, group: ADVANCED_GROUP }, "watch-aggregate-timeout": { - describe: optionsSchema.properties.watchOptions.properties.aggregateTimeout.description, - type: optionsSchema.properties.watchOptions.properties.aggregateTimeout.type, + describe: + optionsSchema.properties.watchOptions.properties.aggregateTimeout + .description, + type: + optionsSchema.properties.watchOptions.properties.aggregateTimeout + .type, group: ADVANCED_GROUP, requiresArg: true }, "watch-poll": { type: "string", - describe: optionsSchema.properties.watchOptions.properties.poll.description, + describe: + optionsSchema.properties.watchOptions.properties.poll.description, group: ADVANCED_GROUP }, hot: { @@ -267,13 +281,15 @@ module.exports = function(yargs) { }, "resolve-alias": { type: "string", - describe: optionsSchema.definitions.resolve.properties.alias.description, + describe: + optionsSchema.definitions.resolve.properties.alias.description, group: RESOLVE_GROUP, requiresArg: true }, "resolve-extensions": { type: "array", - describe: optionsSchema.definitions.resolve.properties.alias.description, + describe: + optionsSchema.definitions.resolve.properties.alias.description, group: RESOLVE_GROUP, requiresArg: true }, @@ -289,13 +305,16 @@ module.exports = function(yargs) { requiresArg: true }, "optimize-min-chunk-size": { - describe: optionsSchema.properties.optimization.properties.splitChunks.oneOf[1].properties.minSize.description, + describe: + optionsSchema.properties.optimization.properties.splitChunks.oneOf[1] + .properties.minSize.description, group: OPTIMIZE_GROUP, requiresArg: true }, "optimize-minimize": { type: "boolean", - describe: optionsSchema.properties.optimization.properties.minimize.description, + describe: + optionsSchema.properties.optimization.properties.minimize.description, group: OPTIMIZE_GROUP }, prefetch: { diff --git a/lib/ast/__snapshots__/ast.test.js.snap b/lib/ast/__snapshots__/ast.test.js.snap index 0ebf2a40eb8..52383c7c8da 100644 --- a/lib/ast/__snapshots__/ast.test.js.snap +++ b/lib/ast/__snapshots__/ast.test.js.snap @@ -1,602 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`amd transforms correctly using "fixture-1" data 1`] = ` +exports[`transforms correctly using "fixture-1" data 1`] = ` "module.exports = { - amd: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`bail transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - bail: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`cache transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - cache: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`context transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - context: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`devServer transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - devServer: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`devtool transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - devtool: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`entry transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - entry: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`externals transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - externals: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`merge transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - merge: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`mode transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - mode: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`module transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - module: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`node transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - node: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`optimizations transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - optimizations: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`output transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - output: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`parallelism transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - parallelism: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`performance transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - performance: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`plugins transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - plugins: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`profile transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - profile: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`recordsInputPath transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - recordsInputPath: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`recordsOutputPath transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - recordsOutputPath: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`recordsPath transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - recordsPath: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`resolve transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - resolve: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`resolveLoader transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - resolveLoader: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`splitChunks transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - splitChunks: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`stats transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - stats: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`target transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - target: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`watch transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - watch: { - objects: are, - - super: [yeah, { - test: /\\\\.(js|vue)$/, - loader: 'eslint-loader', - enforce: 'pre', - include: [customObj, 'Stringy'], - - options: { - formatter: 'someOption' - } - }], - - nice: ':)', - man: () => duper - } -};" -`; - -exports[`watchOptions transforms correctly using "fixture-1" data 1`] = ` -"module.exports = { - watchOptions: { + { objects: are, super: [yeah, { diff --git a/lib/ast/ast.test.js b/lib/ast/ast.test.js index 08565d3d5e4..ddcb8799fe8 100644 --- a/lib/ast/ast.test.js +++ b/lib/ast/ast.test.js @@ -3,28 +3,26 @@ const defineTest = require("../utils/defineTest"); const propTypes = require("../utils/prop-types"); -propTypes.forEach(prop => { - defineTest( - __dirname, - prop, - "fixture-1", - { - objects: "are", - super: [ - "yeah", - { - test: new RegExp(/\.(js|vue)$/), - loader: "'eslint-loader'", - enforce: "'pre'", - include: ["customObj", "'Stringy'"], - options: { - formatter: "'someOption'" - } +defineTest( + __dirname, + propTypes[0], + "fixture-1", + { + objects: "are", + super: [ + "yeah", + { + test: new RegExp(/\.(js|vue)$/), + loader: "'eslint-loader'", + enforce: "'pre'", + include: ["customObj", "'Stringy'"], + options: { + formatter: "'someOption'" } - ], - nice: "':)'", - man: "() => duper" - }, - "init" - ); -}); + } + ], + nice: "':)'", + man: "() => duper" + }, + "init" +); diff --git a/lib/commands/migrate.js b/lib/commands/migrate.js index 3f61f858c8d..329e29f209a 100644 --- a/lib/commands/migrate.js +++ b/lib/commands/migrate.js @@ -178,7 +178,11 @@ function runMigration(currentConfigPath, outputConfigPath) { ); } } - console.log(chalk.green(`\n✔︎ New webpack config file is at ${outputConfigPath}.`)); + console.log( + chalk.green( + `\n✔︎ New webpack config file is at ${outputConfigPath}.` + ) + ); console.log( chalk.green( "✔︎ Heads up! Updating to the latest version could contain breaking changes." diff --git a/lib/generators/add-generator.js b/lib/generators/add-generator.js index bb4286085e5..dc0f5c4b185 100644 --- a/lib/generators/add-generator.js +++ b/lib/generators/add-generator.js @@ -65,9 +65,7 @@ module.exports = class AddGenerator extends Generator { this.configuration = { config: { webpackOptions: {}, - topScope: [ - "const webpack = require('webpack')" - ] + topScope: ["const webpack = require('webpack')"] } }; } diff --git a/lib/generators/init-generator.js b/lib/generators/init-generator.js index 8f9b47be3cc..efd7db24439 100644 --- a/lib/generators/init-generator.js +++ b/lib/generators/init-generator.js @@ -114,7 +114,9 @@ module.exports = class InitGenerator extends Generator { }) .then(prodConfirmAnswer => { this.isProd = prodConfirmAnswer["prodConfirm"]; - this.configuration.config.webpackOptions.mode = this.isProd ? "'production'" : "'development'"; + this.configuration.config.webpackOptions.mode = this.isProd + ? "'production'" + : "'development'"; }) .then(() => { return this.prompt([ @@ -290,14 +292,12 @@ module.exports = class InitGenerator extends Generator { this.dependencies.push("style-loader", "css-loader"); regExpForStyles = `${new RegExp(/\.css$/)}`; if (this.isProd) { - ExtractUseProps.push( - { - loader: "'css-loader'", - options: { - sourceMap: true - } + ExtractUseProps.push({ + loader: "'css-loader'", + options: { + sourceMap: true } - ); + }); } else { ExtractUseProps.push( { @@ -345,11 +345,9 @@ module.exports = class InitGenerator extends Generator { ); } - ExtractUseProps.unshift( - { - loader: "MiniCssExtractPlugin.loader" - } - ); + ExtractUseProps.unshift({ + loader: "MiniCssExtractPlugin.loader" + }); const moduleRulesObj = { test: regExpForStyles, @@ -388,7 +386,7 @@ module.exports = class InitGenerator extends Generator { vendors: { test: "/[\\\\/]node_modules[\\\\/]/", priority: -10 - }, + } } } }; diff --git a/lib/generators/loader-generator.js b/lib/generators/loader-generator.js index ce37dae2090..810473f5394 100644 --- a/lib/generators/loader-generator.js +++ b/lib/generators/loader-generator.js @@ -49,9 +49,7 @@ const LoaderGenerator = webpackGenerator( "examples/simple/src/lazy-module.js.tpl", "examples/simple/src/static-esm-module.js.tpl" ], - [ - "src/_index.js.tpl" - ], + ["src/_index.js.tpl"], gen => ({ name: gen.props.name }) ); diff --git a/lib/generators/plugin-generator.js b/lib/generators/plugin-generator.js index 9a7cc71757e..b2a59695987 100644 --- a/lib/generators/plugin-generator.js +++ b/lib/generators/plugin-generator.js @@ -30,10 +30,7 @@ const PluginGenerator = webpackGenerator( "examples/simple/src/lazy-module.js.tpl", "examples/simple/src/static-esm-module.js.tpl" ], - [ - "src/_index.js.tpl", - "examples/simple/_webpack.config.js.tpl" - ], + ["src/_index.js.tpl", "examples/simple/_webpack.config.js.tpl"], gen => ({ name: _.upperFirst(_.camelCase(gen.props.name)) }) ); diff --git a/lib/generators/utils/entry.js b/lib/generators/utils/entry.js index 54f14a8af17..cac29aab446 100644 --- a/lib/generators/utils/entry.js +++ b/lib/generators/utils/entry.js @@ -40,7 +40,7 @@ module.exports = (self, answer) => { !n[val].includes("path") && !n[val].includes("process") ) { - n[val] = `\'${n[val].replace(/"|'/g,"").concat(".js")}\'`; + n[val] = `\'${n[val].replace(/"|'/g, "").concat(".js")}\'`; } webpackEntryPoint[val] = n[val]; }); @@ -68,7 +68,9 @@ module.exports = (self, answer) => { !entryPropAnswer[val].includes("path") && !entryPropAnswer[val].includes("process") ) { - entryPropAnswer[val] = `\'${entryPropAnswer[val].replace(/"|'/g,"").concat(".js")}\'`; + entryPropAnswer[val] = `\'${entryPropAnswer[val] + .replace(/"|'/g, "") + .concat(".js")}\'`; } webpackEntryPoint[val] = entryPropAnswer[val]; }); @@ -85,7 +87,8 @@ module.exports = (self, answer) => { ]) .then(singularEntryAnswer => { let { singularEntry } = singularEntryAnswer; - if (singularEntry.indexOf("\"") >= 0) singularEntry = singularEntry.replace(/"/g, "'"); + if (singularEntry.indexOf("\"") >= 0) + singularEntry = singularEntry.replace(/"/g, "'"); return singularEntry; }); } diff --git a/lib/migrate/uglifyJsPlugin/uglifyJsPlugin.js b/lib/migrate/uglifyJsPlugin/uglifyJsPlugin.js index d5e775d006c..a65e32a1692 100644 --- a/lib/migrate/uglifyJsPlugin/uglifyJsPlugin.js +++ b/lib/migrate/uglifyJsPlugin/uglifyJsPlugin.js @@ -25,7 +25,9 @@ module.exports = function(j, ast) { const searchForRequirePlugin = ast .find(j.VariableDeclarator) - .filter(j.filters.VariableDeclarator.requiresModule("uglifyjs-webpack-plugin")); + .filter( + j.filters.VariableDeclarator.requiresModule("uglifyjs-webpack-plugin") + ); /** * Look for a variable declaration which requires uglifyjs-webpack-plugin @@ -35,7 +37,9 @@ module.exports = function(j, ast) { pluginVariableAssignment = node.value.id.name; }); - pluginVariableAssignment = !pluginVariableAssignment ? "webpack.optimize.UglifyJsPlugin" : pluginVariableAssignment; + pluginVariableAssignment = !pluginVariableAssignment + ? "webpack.optimize.UglifyJsPlugin" + : pluginVariableAssignment; findPluginsByName(j, ast, [pluginVariableAssignment]).forEach(node => { let expressionContent; @@ -50,7 +54,7 @@ module.exports = function(j, ast) { * Otherwise, rely on default options */ if (pluginOptions.length) { - /* + /* * If user is using UglifyJsPlugin directly from webpack * transformation must: * - remove it @@ -59,17 +63,31 @@ module.exports = function(j, ast) { */ if (pluginVariableAssignment.includes("webpack")) { // create require for uglify-webpack-plugin - const pathRequire = getRequire(j, "UglifyJsPlugin", "uglifyjs-webpack-plugin"); + const pathRequire = getRequire( + j, + "UglifyJsPlugin", + "uglifyjs-webpack-plugin" + ); // append to source code. - ast.find(j.Program).replaceWith(p => j.program([].concat(pathRequire).concat(p.value.body))); + ast + .find(j.Program) + .replaceWith(p => + j.program([].concat(pathRequire).concat(p.value.body)) + ); expressionContent = j.property( "init", j.identifier("minimizer"), - j.arrayExpression([j.newExpression(j.identifier("UglifyJsPlugin"), [pluginOptions[0]])]) + j.arrayExpression([ + j.newExpression(j.identifier("UglifyJsPlugin"), [pluginOptions[0]]) + ]) ); } else { - expressionContent = j.property("init", j.identifier("minimizer"), j.arrayExpression([node.value])); + expressionContent = j.property( + "init", + j.identifier("minimizer"), + j.arrayExpression([node.value]) + ); } } else { searchForRequirePlugin.forEach(node => j(node).remove()); @@ -78,9 +96,21 @@ module.exports = function(j, ast) { const minimizeProperty = createProperty(j, "minimize", "true"); // creates optimization property at the body of the config. if (expressionContent) { - configBody.value.properties.push(j.property("init", j.identifier("optimization"), j.objectExpression([minimizeProperty, expressionContent]))); + configBody.value.properties.push( + j.property( + "init", + j.identifier("optimization"), + j.objectExpression([minimizeProperty, expressionContent]) + ) + ); } else { - configBody.value.properties.push(j.property("init", j.identifier("optimization"), j.objectExpression([minimizeProperty]))); + configBody.value.properties.push( + j.property( + "init", + j.identifier("optimization"), + j.objectExpression([minimizeProperty]) + ) + ); } // remove the old Uglify plugin from Plugins array. diff --git a/lib/utils/ast-utils.js b/lib/utils/ast-utils.js index 7a22af73e8d..cfdd6ced81f 100644 --- a/lib/utils/ast-utils.js +++ b/lib/utils/ast-utils.js @@ -60,7 +60,6 @@ function findPluginsByName(j, node, pluginNamesArray) { }); } - /** * It lookouts for the plugins property and, if the array is empty, it removes it from the AST * @param {any} j - jscodeshift API @@ -69,8 +68,13 @@ function findPluginsByName(j, node, pluginNamesArray) { */ function findPluginsArrayAndRemoveIfEmpty(j, rootNode) { - return rootNode.find(j.Identifier, { name: "plugins" }).forEach((node) => { - const elements = safeTraverse(node, ["parent", "value", "value", "elements"]); + return rootNode.find(j.Identifier, { name: "plugins" }).forEach(node => { + const elements = safeTraverse(node, [ + "parent", + "value", + "value", + "elements" + ]); if (!elements.length) { j(node.parent).remove(); } @@ -166,7 +170,11 @@ function createIdentifierOrLiteral(j, val) { return j.literal(regExpVal.value); } else { // Use identifier instead - if (!validateIdentifier.isKeyword(literalVal) || !validateIdentifier.isIdentifierStart(literalVal) || !validateIdentifier.isIdentifierChar(literalVal)) + if ( + !validateIdentifier.isKeyword(literalVal) || + !validateIdentifier.isIdentifierStart(literalVal) || + !validateIdentifier.isIdentifierChar(literalVal) + ) return j.identifier(literalVal); } } diff --git a/lib/utils/prop-types.js b/lib/utils/prop-types.js index da1b7140467..05b58ce2044 100644 --- a/lib/utils/prop-types.js +++ b/lib/utils/prop-types.js @@ -33,5 +33,5 @@ module.exports = new Set([ "splitChunks", "target", "watch", - "watchOptions", + "watchOptions" ]); diff --git a/lib/utils/validate-identifier.js b/lib/utils/validate-identifier.js index b3a7efa8a3d..67f3cb526fa 100644 --- a/lib/utils/validate-identifier.js +++ b/lib/utils/validate-identifier.js @@ -6,31 +6,66 @@ function isKeyword(code) { switch (code.length) { case 2: - return (code === "if") || (code === "in") || (code === "do"); + return code === "if" || code === "in" || code === "do"; case 3: - return (code === "var") || (code === "for") || (code === "new") || - (code === "try") || (code === "let"); + return ( + code === "var" || + code === "for" || + code === "new" || + code === "try" || + code === "let" + ); case 4: - return (code === "this") || (code === "case") || - (code === "void") || (code === "with") || (code === "enum") || (code === "true") || - (code === "null") || (code === "eval"); + return ( + code === "this" || + code === "case" || + code === "void" || + code === "with" || + code === "enum" || + code === "true" || + code === "null" || + code === "eval" + ); case 5: - return (code === "while") || (code === "break") || (code === "catch") || - (code === "throw") || (code === "const") || (code === "yield") || - (code === "class") || (code === "super") || (code === "false") || (code === "await"); + return ( + code === "while" || + code === "break" || + code === "catch" || + code === "throw" || + code === "const" || + code === "yield" || + code === "class" || + code === "super" || + code === "false" || + code === "await" + ); case 6: - return (code === "return") || (code === "typeof") || (code === "delete") || - (code === "switch") || (code === "export") || (code === "import") || - (code === "static") || (code === "public") ; + return ( + code === "return" || + code === "typeof" || + code === "delete" || + code === "switch" || + code === "export" || + code === "import" || + code === "static" || + code === "public" + ); case 7: - return (code === "default") || (code === "finally") || (code === "extends") || - (code === "private") || (code === "package"); + return ( + code === "default" || + code === "finally" || + code === "extends" || + code === "private" || + code === "package" + ); case 8: - return (code === "function") || (code === "continue") || (code === "debugger"); + return code === "function" || code === "continue" || code === "debugger"; case 9: - return (code === "protected") || (code === "interface") || (code === "arguments"); + return ( + code === "protected" || code === "interface" || code === "arguments" + ); case 10: - return (code === "instanceof") || (code === "implements"); + return code === "instanceof" || code === "implements"; default: return false; } @@ -42,11 +77,17 @@ function isKeyword(code) { // are only applied when a character is found to actually have a // code point above 128. -let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b2\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; -let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2d\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; +let nonASCIIidentifierStartChars = + "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b2\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = + "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2d\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; -const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +const nonASCIIidentifierStart = new RegExp( + "[" + nonASCIIidentifierStartChars + "]" +); +const nonASCIIidentifier = new RegExp( + "[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]" +); nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; @@ -55,23 +96,456 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; // offset starts at 0x10000, and each pair of numbers represents an // offset to the next range, and then a size of the range. let astralIdentifierStartCodes = [ - 0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, - 7, 2, 4, 43, 157, 99, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, - 98, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, - 17, 111, 72, 955, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 38, 17, 2, 24, 133, 46, 39, 7, - 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 32, 4, 287, 47, 21, 1, 2, 0, 185, 46, 82, 47, 21, 0, 60, 42, 502, 63, 32, 0, - 449, 56, 1288, 920, 104, 110, 2962, 1070, 13266, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, - 0, 67, 12, 16481, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, - 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, - 24, 2, 30, 2, 24, 2, 7, 4149, 196, 1340, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, - 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, - 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 16355, 541 + 0, + 11, + 2, + 25, + 2, + 18, + 2, + 1, + 2, + 14, + 3, + 13, + 35, + 122, + 70, + 52, + 268, + 28, + 4, + 48, + 48, + 31, + 17, + 26, + 6, + 37, + 11, + 29, + 3, + 35, + 5, + 7, + 2, + 4, + 43, + 157, + 99, + 39, + 9, + 51, + 157, + 310, + 10, + 21, + 11, + 7, + 153, + 5, + 3, + 0, + 2, + 43, + 2, + 1, + 4, + 0, + 3, + 22, + 11, + 22, + 10, + 30, + 98, + 21, + 11, + 25, + 71, + 55, + 7, + 1, + 65, + 0, + 16, + 3, + 2, + 2, + 2, + 26, + 45, + 28, + 4, + 28, + 36, + 7, + 2, + 27, + 28, + 53, + 11, + 21, + 11, + 18, + 14, + 17, + 111, + 72, + 955, + 52, + 76, + 44, + 33, + 24, + 27, + 35, + 42, + 34, + 4, + 0, + 13, + 47, + 15, + 3, + 22, + 0, + 38, + 17, + 2, + 24, + 133, + 46, + 39, + 7, + 3, + 1, + 3, + 21, + 2, + 6, + 2, + 1, + 2, + 4, + 4, + 0, + 32, + 4, + 287, + 47, + 21, + 1, + 2, + 0, + 185, + 46, + 82, + 47, + 21, + 0, + 60, + 42, + 502, + 63, + 32, + 0, + 449, + 56, + 1288, + 920, + 104, + 110, + 2962, + 1070, + 13266, + 568, + 8, + 30, + 114, + 29, + 19, + 47, + 17, + 3, + 32, + 20, + 6, + 18, + 881, + 68, + 12, + 0, + 67, + 12, + 16481, + 1, + 3071, + 106, + 6, + 12, + 4, + 8, + 8, + 9, + 5991, + 84, + 2, + 70, + 2, + 1, + 3, + 0, + 3, + 1, + 3, + 3, + 2, + 11, + 2, + 0, + 2, + 6, + 2, + 64, + 2, + 3, + 3, + 7, + 2, + 6, + 2, + 27, + 2, + 3, + 2, + 4, + 2, + 0, + 4, + 6, + 2, + 339, + 3, + 24, + 2, + 24, + 2, + 30, + 2, + 24, + 2, + 30, + 2, + 24, + 2, + 30, + 2, + 24, + 2, + 30, + 2, + 24, + 2, + 7, + 4149, + 196, + 1340, + 3, + 2, + 26, + 2, + 1, + 2, + 0, + 3, + 0, + 2, + 9, + 2, + 3, + 2, + 0, + 2, + 0, + 7, + 0, + 5, + 0, + 2, + 0, + 2, + 0, + 2, + 2, + 2, + 1, + 2, + 0, + 3, + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 2, + 1, + 2, + 0, + 3, + 3, + 2, + 6, + 2, + 3, + 2, + 3, + 2, + 0, + 2, + 9, + 2, + 16, + 6, + 2, + 2, + 4, + 2, + 16, + 4421, + 42710, + 42, + 4148, + 12, + 221, + 16355, + 541 ]; let astralIdentifierCodes = [ - 509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, - 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 16, 9, 83, 11, 168, 11, 6, 9, 8, 2, 57, 0, 2, 6, 3, 1, 3, 2, 10, - 0, 11, 1, 3, 6, 4, 4, 316, 19, 13, 9, 214, 6, 3, 8, 112, 16, 16, 9, 82, 12, 9, 9, 535, 9, 20855, 9, 135, 4, 60, 6, - 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 4305, 6, 792618, 239 + 509, + 0, + 227, + 0, + 150, + 4, + 294, + 9, + 1368, + 2, + 2, + 1, + 6, + 3, + 41, + 2, + 5, + 0, + 166, + 1, + 1306, + 2, + 54, + 14, + 32, + 9, + 16, + 3, + 46, + 10, + 54, + 9, + 7, + 2, + 37, + 13, + 2, + 9, + 52, + 0, + 13, + 2, + 49, + 13, + 16, + 9, + 83, + 11, + 168, + 11, + 6, + 9, + 8, + 2, + 57, + 0, + 2, + 6, + 3, + 1, + 3, + 2, + 10, + 0, + 11, + 1, + 3, + 6, + 4, + 4, + 316, + 19, + 13, + 9, + 214, + 6, + 3, + 8, + 112, + 16, + 16, + 9, + 82, + 12, + 9, + 9, + 535, + 9, + 20855, + 9, + 135, + 4, + 60, + 6, + 26, + 9, + 1016, + 45, + 17, + 3, + 19723, + 1, + 5319, + 4, + 4, + 5, + 9, + 7, + 3, + 6, + 31, + 3, + 149, + 2, + 1418, + 49, + 4305, + 6, + 792618, + 239 ]; // This has a complexity linear to the value of the code. The @@ -96,7 +570,8 @@ function isIdentifierStart(code) { if (c < 91) return true; if (c < 97) return c === 95; if (c < 123) return true; - if (c <= 0xffff) return c >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(c)); + if (c <= 0xffff) + return c >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(c)); return isInAstralSet(c, astralIdentifierStartCodes); } @@ -106,7 +581,13 @@ function isIdentifierChar(code) { let l = code.length; while (l--) { let ch = code.charCodeAt(code.length - l); - return validationChar(ch) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* */ || ch === 0x200D; /* */ + return ( + validationChar(ch) || + ch === 0x24 /* $ */ || + ch === 0x5f /* _ */ || + ch === 0x200c /* */ || + ch === 0x200d + ); /* */ } } @@ -117,8 +598,12 @@ function validationChar(code) { if (code < 91) return true; if (code < 97) return code === 95; if (code < 123) return true; - if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); + if (code <= 0xffff) + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + return ( + isInAstralSet(code, astralIdentifierStartCodes) || + isInAstralSet(code, astralIdentifierCodes) + ); } module.exports = {

)CdQ3F!eKyF|9D2V!F-rhUpJ8J+l7g0OBBVM#THTI&O8)>EGR%u6Gd9D9pm5!S}%&6DxW}^f|7=Y zPoO3(pTZY#?(7(|!5}5Nn!D%DotZmlW)?smSMcEE<^aT$6gw#LlwubPI9BYTffL0! zyu-EPCnz{Y#ZR&1d{F!hr_NW!&#~mXis$jseXDo@U)-kR7sMBeUt-T&RQw9By@BF9 z3f?cpmw4m-R{RHncaC**(V--ipJ<~6LkW2fi6RVfh%vcYt9@z>&M0LBSf-Q|Et8wU zCt43_*JB)mHR71wb`K@~5Cizwp{`A2uuJ^_Bcl3k{7ree$8&@l?;^2nagS+NqCDBfkB?pJws=PbK~+A7|2 z{gCDJKI-i%m4LD$n{WIwWR|c+NRy`C1#)1sSBI7FiH6z-QkhY&Q_|%I3exQ zQ`X1M?cZH4^M&BSyr;2z$+^SZUMA*0001Z+HKHROw(}?!13=vX`$@Br+fGR zZ%e`5O6%Txi$Yrz0gF{}p>fY>OnlS0Uevf}oDXW;D{d2gcE<2)oFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?JW^G#k0Wdx>E$NBBVtKRLiL?sA*s%w`TdsNz1=+~FRNdB8&+@iBD0 zXFTC4C-8-Cwv(4U=LLQ~^Oa4^rG|OTr5?ItoaPMYxxh`%a*kVU z;HYGAjq6;IY{`*awo0DlOMw(hkrYdb(O28l;MYvSx*ChcQW4f^QL5UdE3HbqvbxB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCe zARtS)01i=0um)3FSgr#ump{<1pq_<0a34Kp8x=7I1^|9 literal 0 HcmV?d00001 diff --git a/docs/fonts/OpenSans-Regular-webfont.eot b/docs/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..6bbc3cf58cb011a6b4bf3cb1612ce212608f7274 GIT binary patch literal 19836 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/OpenSans-Regular-webfont.woff b/docs/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..e231183dce4c7b452afc9e7799586fd285e146f4 GIT binary patch literal 22660 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 ML;wL%uV=LY00kR;TmS$7 literal 0 HcmV?d00001 diff --git a/docs/generate-loader_index.js.html b/docs/generate-loader_index.js.html new file mode 100644 index 00000000000..1d8fbc74a56 --- /dev/null +++ b/docs/generate-loader_index.js.html @@ -0,0 +1,68 @@ + + + + + JSDoc: Source: generate-loader/index.js + + + + + + + + + + +

)CdQ3F!eKyF|9D2V!F-rhUpJ8J+l7g0OBBVM#THTI&O8)>EGR%u6Gd9D9pm5!S}%&6DxW}^f|7=Y zPoO3(pTZY#?(7(|!5}5Nn!D%DotZmlW)?smSMcEE<^aT$6gw#LlwubPI9BYTffL0! zyu-EPCnz{Y#ZR&1d{F!hr_NW!&#~mXis$jseXDo@U)-kR7sMBeUt-T&RQw9By@BF9 z3f?cpmw4m-R{RHncaC**(V--ipJ<~6LkW2fi6RVfh%vcYt9@z>&M0LBSf-Q|Et8wU zCt43_*JB)mHR71wb`K@~5Cizwp{`A2uuJ^_Bcl3k{7ree$8&@l?;^2nagS+NqCDBfkB?pJws=PbK~+A7|2 z{gCDJKI-i%m4LD$n{WIwWR|c+NRy`C1#)1sSBI7FiH6z-QkhY&Q_|%I3exQ zQ`X1M?cZH4^M&BSyr;2z$+^SZUMA*0001Z+HKHROw(}?!13=vX`$@Br+fGR zZ%e`5O6%Txi$Yrz0gF{}p>fY>OnlS0Uevf}oDXW;D{d2gcE<2)oFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?JW^G#k0Wdx>E$NBBVtKRLiL?sA*s%w`TdsNz1=+~FRNdB8&+@iBD0 zXFTC4C-8-Cwv(4U=LLQ~^Oa4^rG|OTr5?ItoaPMYxxh`%a*kVU z;HYGAjq6;IY{`*awo0DlOMw(hkrYdb(O28l;MYvSx*ChcQW4f^QL5UdE3HbqvbxB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCe zARtS)01i=0um)3FSgr#ump{<1pq_<0a34Kp8x=7I1^|9 diff --git a/docs/fonts/OpenSans-Regular-webfont.eot b/docs/fonts/OpenSans-Regular-webfont.eot deleted file mode 100644 index 6bbc3cf58cb011a6b4bf3cb1612ce212608f7274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19836 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Regular-webfont.woff b/docs/fonts/OpenSans-Regular-webfont.woff deleted file mode 100644 index e231183dce4c7b452afc9e7799586fd285e146f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22660 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 ML;wL%uV=LY00kR;TmS$7 diff --git a/docs/generate-loader_index.js.html b/docs/generate-loader_index.js.html deleted file mode 100644 index 36260277e31..00000000000 --- a/docs/generate-loader_index.js.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - JSDoc: Source: generate-loader/index.js - - - - - - - - - - -