From 3853467275f4a4ab775c601d92ba3aa4fd198d7d Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Wed, 29 Aug 2018 05:24:15 -0700 Subject: [PATCH 01/43] WIP: babel 7 --- package.json | 13 +- src/assets/JSAsset.js | 55 +-- src/packagers/JSConcatPackager.js | 4 +- src/scope-hoisting/concat.js | 6 +- src/scope-hoisting/hoist.js | 2 +- src/scope-hoisting/mangler.js | 2 +- src/scope-hoisting/shake.js | 2 +- src/scope-hoisting/utils.js | 2 +- src/transforms/babel.js | 71 ++-- src/utils/getTargetEngines.js | 2 +- src/visitors/dependencies.js | 4 +- src/visitors/env.js | 2 +- src/visitors/fs.js | 2 +- src/visitors/globals.js | 2 +- src/visitors/matches-pattern.js | 6 +- test/javascript.js | 2 +- yarn.lock | 662 +++++++++++++++++++++++++++++- 17 files changed, 755 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index bcb0a9a0f33..03a401e4bae 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,17 @@ "index.js" ], "dependencies": { + "@babel/code-frame": "^7.0.0-rc.3", + "@babel/core": "^7.0.0-rc.3", + "@babel/generator": "^7.0.0-rc.3", + "@babel/parser": "^7.0.0-rc.3", + "@babel/plugin-transform-flow-strip-types": "^7.0.0-rc.3", + "@babel/plugin-transform-modules-commonjs": "^7.0.0-rc.3", + "@babel/plugin-transform-react-jsx": "^7.0.0-rc.3", + "@babel/preset-env": "^7.0.0-rc.3", + "@babel/template": "^7.0.0-rc.3", + "@babel/traverse": "^7.0.0-rc.3", + "@babel/types": "^7.0.0-rc.3", "ansi-to-html": "^0.6.4", "babel-code-frame": "^6.26.0", "babel-core": "^6.25.0", @@ -26,7 +37,7 @@ "babel-preset-env": "^1.7.0", "babel-template": "^6.26.0", "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", + "@babel-types": "^6.26.0", "babylon": "^6.17.4", "babylon-walk": "^1.0.2", "browserslist": "^3.2.6", diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 9014c359622..8c8fcdded8b 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -1,15 +1,15 @@ -const {File: BabelFile} = require('babel-core'); -const traverse = require('babel-traverse').default; -const codeFrame = require('babel-code-frame'); +const babelCore = require('@babel/core'); +const traverse = require('@babel/traverse').default; +const codeFrame = require('@babel/code-frame').codeFrameColumns; const collectDependencies = require('../visitors/dependencies'); const walk = require('babylon-walk'); const Asset = require('../Asset'); -const babylon = require('babylon'); +// const babylon = require('@babel/parser'); const insertGlobals = require('../visitors/globals'); const fsVisitor = require('../visitors/fs'); const envVisitor = require('../visitors/env'); const babel = require('../transforms/babel'); -const generate = require('babel-generator').default; +const generate = require('@babel/generator').default; const terser = require('../transforms/terser'); const SourceMap = require('../SourceMap'); const hoist = require('../scope-hoisting/hoist'); @@ -63,40 +63,44 @@ class JSAsset extends Asset { async getParserOptions() { // Babylon options. We enable a few plugins by default. const options = { - filename: this.name, - allowReturnOutsideFunction: true, - allowHashBang: true, - ecmaVersion: Infinity, - strictMode: false, - sourceType: 'module', - locations: true, - plugins: ['exportExtensions', 'dynamicImport'] + parserOpts: { + filename: this.name, + allowReturnOutsideFunction: true, + allowHashBang: true, + ecmaVersion: Infinity, + strictMode: false, + sourceType: 'module', + locations: true, + plugins: ['exportExtensions', 'dynamicImport'] + } }; // Check if there is a babel config file. If so, determine which parser plugins to enable this.babelConfig = await babel.getConfig(this); - if (this.babelConfig) { - const file = new BabelFile(this.babelConfig); - options.plugins.push(...file.parserOpts.plugins); - } + Object.assign(options, this.babelConfig); + // if (this.babelConfig) { + // const file = new BabelFile(this.babelConfig); + // options.plugins.push(...file.parserOpts.plugins); + // } return options; } async parse(code) { const options = await this.getParserOptions(); - return babylon.parse(code, options); + // return babylon.parse(code, options); + return babelCore.parse(code, options); } traverse(visitor) { // Create a babel File object if one hasn't been created yet. // This is needed so that cached NodePath objects get a `hub` object on them. // Plugins like babel-minify depend on this to get the original source code string. - if (!this.babelFile) { - this.babelFile = new BabelFile(this.babelConfig || {}); - this.babelFile.addCode(this.contents); - this.babelFile.addAst(this.ast); - } + // if (!this.babelFile) { + // this.babelFile = new BabelFile(this.babelConfig || {}); + // this.babelFile.addCode(this.contents); + // this.babelFile.addAst(this.ast); + // } return traverse(this.ast, visitor, null, this); } @@ -285,11 +289,10 @@ class JSAsset extends Asset { generateErrorMessage(err) { const loc = err.loc; if (loc) { - err.codeFrame = codeFrame(this.contents, loc.line, loc.column + 1); + err.codeFrame = codeFrame(this.contents, {start: loc}); err.highlightedCodeFrame = codeFrame( this.contents, - loc.line, - loc.column + 1, + {start: loc}, {highlightCode: true} ); } diff --git a/src/packagers/JSConcatPackager.js b/src/packagers/JSConcatPackager.js index 7deccceb186..7b5649568c6 100644 --- a/src/packagers/JSConcatPackager.js +++ b/src/packagers/JSConcatPackager.js @@ -4,8 +4,8 @@ const concat = require('../scope-hoisting/concat'); const urlJoin = require('../utils/urlJoin'); const getExisting = require('../utils/getExisting'); const walk = require('babylon-walk'); -const babylon = require('babylon'); -const t = require('babel-types'); +const babylon = require('@babel/parser'); +const t = require('@babel/types'); const {getName, getIdentifier} = require('../scope-hoisting/utils'); const prelude = getExisting( diff --git a/src/scope-hoisting/concat.js b/src/scope-hoisting/concat.js index a5bc5eec21c..ffc46a5134b 100644 --- a/src/scope-hoisting/concat.js +++ b/src/scope-hoisting/concat.js @@ -1,8 +1,8 @@ const {relative} = require('path'); const template = require('babel-template'); -const t = require('babel-types'); -const traverse = require('babel-traverse').default; -const generate = require('babel-generator').default; +const t = require('@babel/types'); +const traverse = require('@babel/traverse').default; +const generate = require('@babel/generator').default; const treeShake = require('./shake'); const mangleScope = require('./mangler'); const {getName, getIdentifier} = require('./utils'); diff --git a/src/scope-hoisting/hoist.js b/src/scope-hoisting/hoist.js index 0a610c0d0e9..3e6cb20f9f8 100644 --- a/src/scope-hoisting/hoist.js +++ b/src/scope-hoisting/hoist.js @@ -1,7 +1,7 @@ const path = require('path'); const matchesPattern = require('../visitors/matches-pattern'); const mm = require('micromatch'); -const t = require('babel-types'); +const t = require('@babel/types'); const template = require('babel-template'); const rename = require('./renamer'); const {getName, getIdentifier, getExportIdentifier} = require('./utils'); diff --git a/src/scope-hoisting/mangler.js b/src/scope-hoisting/mangler.js index dfb7347bdbc..5d674e6c066 100644 --- a/src/scope-hoisting/mangler.js +++ b/src/scope-hoisting/mangler.js @@ -1,5 +1,5 @@ const rename = require('./renamer'); -const t = require('babel-types'); +const t = require('@babel/types'); const CHARSET = ( 'abcdefghijklmnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ$_' diff --git a/src/scope-hoisting/shake.js b/src/scope-hoisting/shake.js index 563c8313222..231fd169baf 100644 --- a/src/scope-hoisting/shake.js +++ b/src/scope-hoisting/shake.js @@ -1,4 +1,4 @@ -const t = require('babel-types'); +const t = require('@babel/types'); const EXPORTS_RE = /^\$([^$]+)\$exports$/; diff --git a/src/scope-hoisting/utils.js b/src/scope-hoisting/utils.js index fb80d0480a8..e5483bf2525 100644 --- a/src/scope-hoisting/utils.js +++ b/src/scope-hoisting/utils.js @@ -1,4 +1,4 @@ -const t = require('babel-types'); +const t = require('@babel/types'); function getName(asset, type, ...rest) { return ( diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 42d8ac6880c..feb4b5e8c0f 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -1,12 +1,12 @@ -const presetEnv = require('babel-preset-env'); +const presetEnv = require('@babel/preset-env'); const getTargetEngines = require('../utils/getTargetEngines'); const localRequire = require('../utils/localRequire'); const path = require('path'); -const {util: babelUtils} = require('babel-core'); +// const {util: babelUtils} = require('@babel/core'); const fs = require('../utils/fs'); const NODE_MODULES = `${path.sep}node_modules${path.sep}`; -const ENV_PLUGINS = require('babel-preset-env/data/plugins'); +const ENV_PLUGINS = require('@babel/preset-env/data/plugins'); const ENV_PRESETS = { es2015: true, es2016: true, @@ -35,19 +35,19 @@ async function babelTransform(asset) { await asset.parseIfNeeded(); - // If this is an internally generated config, use our internal babel-core, + // If this is an internally generated config, use our internal @babel/core, // otherwise require a local version from the package we're compiling. let babel = config.internal - ? require('babel-core') - : await localRequire('babel-core', asset.name); + ? require('@babel/core') + : await localRequire('@babel/core', asset.name); // TODO: support other versions of babel - if (parseInt(babel.version, 10) !== 6) { - throw new Error(`Unsupported babel version: ${babel.version}`); - } + // if (parseInt(babel.version, 10) !== 6) { + // throw new Error(`Unsupported babel version: ${babel.version}`); + // } let res = babel.transformFromAst(asset.ast, asset.contents, config); - if (!res.ignored) { + if (res.ast) { asset.ast = res.ast; asset.isAstDirty = true; } @@ -59,6 +59,7 @@ async function getConfig(asset) { let config = await getBabelConfig(asset); if (config) { config.code = false; + config.ast = true; config.filename = asset.name; config.babelrc = false; @@ -82,7 +83,7 @@ async function getBabelConfig(asset) { if (asset.isES6Module) { return { internal: true, - plugins: [require('babel-plugin-transform-es2015-modules-commonjs')] + plugins: [require('@babel/plugin-transform-modules-commonjs')] }; } @@ -105,24 +106,24 @@ async function getBabelConfig(asset) { let jsxConfig = await getJSXConfig(asset, isSource); let flowConfig = getFlowConfig(asset, isSource); - // Merge the babel-preset-env config and the babelrc if needed + // Merge the @babel/preset-env config and the babelrc if needed if (babelrc && !shouldIgnoreBabelrc(asset.name, babelrc)) { if (envConfig) { - // Filter out presets that are already applied by babel-preset-env + // Filter out presets that are already applied by @babel/preset-env if (Array.isArray(babelrc.presets)) { babelrc.presets = babelrc.presets.filter(preset => { return !ENV_PRESETS[getPluginName(preset)]; }); } - // Filter out plugins that are already applied by babel-preset-env + // Filter out plugins that are already applied by @babel/preset-env if (Array.isArray(babelrc.plugins)) { babelrc.plugins = babelrc.plugins.filter(plugin => { return !ENV_PLUGINS[getPluginName(plugin)]; }); } - // Add plugins generated by babel-preset-env to get to the app's target engines. + // Add plugins generated by @babel/preset-env to get to the app's target engines. mergeConfigs(babelrc, envConfig); } @@ -145,7 +146,7 @@ async function getBabelConfig(asset) { return babelrc; } - // If there is a babel-preset-env config, and it isn't empty use that + // If there is a @babel/preset-env config, and it isn't empty use that if (envConfig && (envConfig.plugins.length > 0 || jsxConfig || flowConfig)) { mergeConfigs(envConfig, jsxConfig); mergeConfigs(envConfig, flowConfig); @@ -226,22 +227,23 @@ async function findBabelRc(asset) { } function shouldIgnoreBabelrc(filename, babelrc) { + return false; // Determine if we should ignore this babelrc file. We do this here instead of - // letting babel-core handle it because this config might be merged with our + // letting @babel/core handle it because this config might be merged with our // autogenerated one later which shouldn't be ignored. - let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); - let only = - babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); - return babelUtils.shouldIgnore(filename, ignore, only); + // let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); + // let only = + // babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); + // return babelUtils.shouldIgnore(filename, ignore, only); } /** - * Generates a babel-preset-env config for an asset. + * Generates a @babel/preset-env config for an asset. * This is done by finding the source module's target engines, and the app's * target engines, and doing a diff to include only the necessary plugins. */ async function getEnvConfig(asset, isSourceModule) { - // Load the target engines for the app and generate a babel-preset-env config + // Load the target engines for the app and generate a @babel/preset-env config let targetEngines = await getTargetEngines(asset, true); let targetEnv = await getEnvPlugins(targetEngines, true); if (!targetEnv) { @@ -277,16 +279,21 @@ async function getEnvPlugins(targets, useBuiltIns = false) { } let plugins = presetEnv.default( - {}, - {targets, modules: false, useBuiltIns: useBuiltIns ? 'entry' : false} + {assertVersion: () => true}, + { + targets, + modules: false, + useBuiltIns: useBuiltIns ? 'entry' : false, + shippedProposals: true + } ).plugins; - // babel-preset-env version 6.x does not cover object-rest-spread so always + // @babel/preset-env version 6.x does not cover object-rest-spread so always // add it. - plugins.push([ - require('babel-plugin-transform-object-rest-spread'), - {useBuiltIns} - ]); + // plugins.push([ + // require('babel-plugin-transform-object-rest-spread'), + // {useBuiltIns} + // ]); envCache.set(key, plugins); return plugins; @@ -319,7 +326,7 @@ async function getJSXConfig(asset, isSourceModule) { if (pragma || JSX_EXTENSIONS[path.extname(asset.name)]) { return { - plugins: [[require('babel-plugin-transform-react-jsx'), {pragma}]], + plugins: [[require('@babel/plugin-transform-react-jsx'), {pragma}]], internal: true }; } @@ -331,7 +338,7 @@ async function getJSXConfig(asset, isSourceModule) { function getFlowConfig(asset) { if (/^(\/{2}|\/\*+) *@flow/.test(asset.contents.substring(0, 20))) { return { - plugins: [[require('babel-plugin-transform-flow-strip-types')]], + plugins: [[require('@babel/plugin-transform-flow-strip-types')]], internal: true }; } diff --git a/src/utils/getTargetEngines.js b/src/utils/getTargetEngines.js index 24f6f9e9fd0..0571b289ad9 100644 --- a/src/utils/getTargetEngines.js +++ b/src/utils/getTargetEngines.js @@ -12,7 +12,7 @@ const DEFAULT_ENGINES = { * - package.json engines field * - package.json browserslist field * - browserslist or .browserslistrc files - * - .babelrc or .babelrc.js files with babel-preset-env + * - .babelrc or .babelrc.js files with @babel/preset-env */ async function getTargetEngines(asset, isTargetApp) { let targets = {}; diff --git a/src/visitors/dependencies.js b/src/visitors/dependencies.js index 635d9ae962b..95fea2315cd 100644 --- a/src/visitors/dependencies.js +++ b/src/visitors/dependencies.js @@ -1,6 +1,6 @@ -const types = require('babel-types'); +const types = require('@babel/types'); const template = require('babel-template'); -const traverse = require('babel-traverse').default; +const traverse = require('@babel/traverse').default; const urlJoin = require('../utils/urlJoin'); const isURL = require('../utils/is-url'); const matchesPattern = require('./matches-pattern'); diff --git a/src/visitors/env.js b/src/visitors/env.js index c060a4a376e..e30415ff2a8 100644 --- a/src/visitors/env.js +++ b/src/visitors/env.js @@ -1,4 +1,4 @@ -const types = require('babel-types'); +const types = require('@babel/types'); const matchesPattern = require('./matches-pattern'); module.exports = { diff --git a/src/visitors/fs.js b/src/visitors/fs.js index e49452e4c3c..733dc9d6fb3 100644 --- a/src/visitors/fs.js +++ b/src/visitors/fs.js @@ -1,4 +1,4 @@ -const t = require('babel-types'); +const t = require('@babel/types'); const Path = require('path'); const fs = require('fs'); const template = require('babel-template'); diff --git a/src/visitors/globals.js b/src/visitors/globals.js index b947081950a..598f4f3dfa2 100644 --- a/src/visitors/globals.js +++ b/src/visitors/globals.js @@ -1,5 +1,5 @@ const Path = require('path'); -const types = require('babel-types'); +const types = require('@babel/types'); const VARS = { process: asset => { diff --git a/src/visitors/matches-pattern.js b/src/visitors/matches-pattern.js index e1dbbb113e5..e980acd269b 100644 --- a/src/visitors/matches-pattern.js +++ b/src/visitors/matches-pattern.js @@ -1,7 +1,7 @@ -const types = require('babel-types'); +const types = require('@babel/types'); -// from babel-types. remove when we upgrade to babel 7. -// https://github.com/babel/babel/blob/0189b387026c35472dccf45d14d58312d249f799/packages/babel-types/src/index.js#L347 +// from @babel/types. remove when we upgrade to babel 7. +// https://github.com/babel/babel/blob/0189b387026c35472dccf45d14d58312d249f799/packages/@babel/types/src/index.js#L347 module.exports = function matchesPattern(member, match, allowPartial) { // not a member expression if (!types.isMemberExpression(member)) return false; diff --git a/test/javascript.js b/test/javascript.js index cc60c14010d..5621abbfdf1 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -4,7 +4,7 @@ const path = require('path'); const {bundle, run, assertBundleTree, deferred} = require('./utils'); const {mkdirp} = require('../src/utils/fs'); -describe('javascript', function() { +describe.only('javascript', function() { it('should produce a basic JS bundle with CommonJS requires', async function() { let b = await bundle(__dirname + '/integration/commonjs/index.js'); diff --git a/yarn.lock b/yarn.lock index 48de7b043f2..96c9a26ef51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,198 @@ # yarn lockfile v1 +"@babel/code-frame@7.0.0-rc.3", "@babel/code-frame@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.3.tgz#d77a587401f818a3168700f596e41cd6905947b2" + dependencies: + "@babel/highlight" "7.0.0-rc.3" + "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.46" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz#e0d002100805daab1461c0fcb32a07e304f3a4f4" dependencies: "@babel/highlight" "7.0.0-beta.46" +"@babel/core@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-rc.3.tgz#0c3b5c4fcc65ea3fc7c019202aca6cd0b17705e7" + dependencies: + "@babel/code-frame" "7.0.0-rc.3" + "@babel/generator" "7.0.0-rc.3" + "@babel/helpers" "7.0.0-rc.3" + "@babel/parser" "7.0.0-rc.3" + "@babel/template" "7.0.0-rc.3" + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + convert-source-map "^1.1.0" + debug "^3.1.0" + json5 "^0.5.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@7.0.0-rc.3", "@babel/generator@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-rc.3.tgz#3267085de2d9b8779bde79052ee5f7070d99a5ab" + dependencies: + "@babel/types" "7.0.0-rc.3" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-rc.3.tgz#0251d48d2f6d175ffdd9601fc032e3bdaa4e580a" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-rc.3.tgz#2df11e360f20fb636383f7edd37a439d81c3e694" + dependencies: + "@babel/helper-explode-assignable-expression" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-builder-react-jsx@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-rc.3.tgz#6eb5a9138d44fa442fb381542987af6be12860b2" + dependencies: + "@babel/types" "7.0.0-rc.3" + esutils "^2.0.0" + +"@babel/helper-call-delegate@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-rc.3.tgz#6a96c63e5a72138f1cfcd9c4bfa99cdd1f650f19" + dependencies: + "@babel/helper-hoist-variables" "7.0.0-rc.3" + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-define-map@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-rc.3.tgz#fea0abc72c8728887873770d3939dc8bf49c3e92" + dependencies: + "@babel/helper-function-name" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-rc.3.tgz#987b3295b68e380acdab6ff5923f9cad8764c74c" + dependencies: + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-function-name@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-rc.3.tgz#ddfb3793fe6ca13be7161afa045971b8e82f96e8" + dependencies: + "@babel/helper-get-function-arity" "7.0.0-rc.3" + "@babel/template" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-get-function-arity@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-rc.3.tgz#b9fb083977e1639aac6c9c06b2de7b849aa6fea5" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-hoist-variables@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-rc.3.tgz#cea012ebe83116623609311858a11dd8adc10dfa" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-member-expression-to-functions@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-rc.3.tgz#65a455f0d35e40ee205a89e7c991472e85ffe09a" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-module-imports@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-rc.3.tgz#09207a1d2c528abddd74c259af1836bf34194ff5" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-module-transforms@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-rc.3.tgz#dc92b603f42d3567b2d091241569bbf420221cd9" + dependencies: + "@babel/helper-module-imports" "7.0.0-rc.3" + "@babel/helper-simple-access" "7.0.0-rc.3" + "@babel/helper-split-export-declaration" "7.0.0-rc.3" + "@babel/template" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-rc.3.tgz#6a594f922c73c3266f5c59c3374b0e176aefd8a5" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-plugin-utils@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-rc.3.tgz#f68392896f4f3b90bdf7e72e5cc7127cdd5441fd" + +"@babel/helper-regex@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-rc.3.tgz#1f2e11de94fc2481fc6932c07994444f6b627854" + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-rc.3.tgz#085d673b34b9e57a15325ec0b32dc0bb40836b39" + dependencies: + "@babel/helper-annotate-as-pure" "7.0.0-rc.3" + "@babel/helper-wrap-function" "7.0.0-rc.3" + "@babel/template" "7.0.0-rc.3" + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-replace-supers@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-rc.3.tgz#0172cdf556093b8e0245041bd2d76a12af756bf8" + dependencies: + "@babel/helper-member-expression-to-functions" "7.0.0-rc.3" + "@babel/helper-optimise-call-expression" "7.0.0-rc.3" + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-simple-access@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-rc.3.tgz#c5a316c0838785eab896b7578ee05b1ac8193f2b" + dependencies: + "@babel/template" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-split-export-declaration@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-rc.3.tgz#42ca01340ddb68ab471f81e6ff2c6270dbdbd113" + dependencies: + "@babel/types" "7.0.0-rc.3" + +"@babel/helper-wrap-function@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-rc.3.tgz#3abcc29bc93c46d61125f994d8667e297f7081fa" + dependencies: + "@babel/helper-function-name" "7.0.0-rc.3" + "@babel/template" "7.0.0-rc.3" + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/helpers@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-rc.3.tgz#321c6b575d4d2c0e7b9f33ea085b8ecaa1965b24" + dependencies: + "@babel/template" "7.0.0-rc.3" + "@babel/traverse" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + "@babel/highlight@7.0.0-beta.46": version "7.0.0-beta.46" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" @@ -16,6 +202,370 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/highlight@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.3.tgz#c2ee83f8e5c0c387279a8c48e06fef2e32027004" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@7.0.0-rc.3", "@babel/parser@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-rc.3.tgz#859d7b60ef6b939aab5f6d4f4bffbb7bafdc418b" + +"@babel/plugin-proposal-async-generator-functions@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-rc.3.tgz#22c8a89c8e660c3ff42cd5f5c5921d192a92e190" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-remap-async-to-generator" "7.0.0-rc.3" + "@babel/plugin-syntax-async-generators" "7.0.0-rc.3" + +"@babel/plugin-proposal-json-strings@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0-rc.3.tgz#0b1d313981d6f4dca6b1419ee0b61d57dc368308" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/plugin-syntax-json-strings" "7.0.0-rc.3" + +"@babel/plugin-proposal-object-rest-spread@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-rc.3.tgz#c51a93b86d59eb35ea4f123c5f18f0953a25d761" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/plugin-syntax-object-rest-spread" "7.0.0-rc.3" + +"@babel/plugin-proposal-optional-catch-binding@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-rc.3.tgz#47f81c6549661c99dc74c3f5161ae90b76b6ca66" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/plugin-syntax-optional-catch-binding" "7.0.0-rc.3" + +"@babel/plugin-proposal-unicode-property-regex@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-rc.3.tgz#27a6e328ab018dc0128fcbde9cfff0e67d87da94" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-regex" "7.0.0-rc.3" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-rc.3.tgz#7d768f8bb18597781ade989c87519181b69764bf" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-syntax-flow@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-rc.3.tgz#84a41864762370c4e49f5b2819168455d20cb053" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-syntax-json-strings@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0-rc.3.tgz#5dc7b1f713de140451446a6c36739c15de857a95" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-syntax-jsx@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-rc.3.tgz#729759abb046444b64df3b03a84d3e536bf68685" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-syntax-object-rest-spread@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-rc.3.tgz#4458bb8b61849a81de4a90f98f4cb4f87d1d95c5" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-syntax-optional-catch-binding@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-rc.3.tgz#5fe5ed7c95a98e2e0b8fc38c4c64904045580ae3" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-arrow-functions@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-rc.3.tgz#e6c22148d0c2873522a2db8e21ba39d9db188d74" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-async-to-generator@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-rc.3.tgz#df63901f6071324f1b2ac5b5b36fc79108772a98" + dependencies: + "@babel/helper-module-imports" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-remap-async-to-generator" "7.0.0-rc.3" + +"@babel/plugin-transform-block-scoped-functions@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-rc.3.tgz#f3a6df435012bb5fc8cc77b17c670c32dcc8a350" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-block-scoping@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-rc.3.tgz#65ea3edc061b09375218ae86edf6e0897769abc0" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-rc.3.tgz#4bc40e0ab871169e72a847a1d031fef8c34f3fb8" + dependencies: + "@babel/helper-annotate-as-pure" "7.0.0-rc.3" + "@babel/helper-define-map" "7.0.0-rc.3" + "@babel/helper-function-name" "7.0.0-rc.3" + "@babel/helper-optimise-call-expression" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-replace-supers" "7.0.0-rc.3" + "@babel/helper-split-export-declaration" "7.0.0-rc.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-rc.3.tgz#f8349aeca43c1062b2d4527a2aab0c892bc94deb" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-destructuring@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-rc.3.tgz#5924f10e29a1d2017f5d970c7769d2639bf16bf1" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-dotall-regex@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-rc.3.tgz#7c7acf5cc4279831eabf3817daa85f7862e647cd" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-regex" "7.0.0-rc.3" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-rc.3.tgz#39bc3d271d392d8b2c34a9a9dab66f4b68641c3f" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-exponentiation-operator@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-rc.3.tgz#494cc71920f8e31e02f99548c40935cf699f5be5" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-flow-strip-types@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-rc.3.tgz#80015a6bb5723f60fd5354ba60436a20898f238e" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/plugin-syntax-flow" "7.0.0-rc.3" + +"@babel/plugin-transform-for-of@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-rc.3.tgz#e4444180fe6f4a2a5244e9398cf8cfd3b7b9b1ae" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-function-name@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-rc.3.tgz#d947d63e9d50e900885cfe86df7e5d3f772cf66e" + dependencies: + "@babel/helper-function-name" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-literals@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-rc.3.tgz#ec4df668a5065935aa80327ffc8265570361f8de" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-modules-amd@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-rc.3.tgz#1b4188bfaca1edccfb2787db396522ac7055a095" + dependencies: + "@babel/helper-module-transforms" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-modules-commonjs@7.0.0-rc.3", "@babel/plugin-transform-modules-commonjs@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-rc.3.tgz#11792a4314820bb5f149e3f5c7eed10b342220ca" + dependencies: + "@babel/helper-module-transforms" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-simple-access" "7.0.0-rc.3" + +"@babel/plugin-transform-modules-systemjs@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-rc.3.tgz#36a9ca740fcf9989e02f0341a02b438cd8e9528e" + dependencies: + "@babel/helper-hoist-variables" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-modules-umd@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-rc.3.tgz#35d04236716708b620dfca12f009b961b531f1d9" + dependencies: + "@babel/helper-module-transforms" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-new-target@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-rc.3.tgz#5d107e54bc636ebb1af2a026f45fecba47b3e4f0" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-object-super@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-rc.3.tgz#3c938c9e97df14c3d340d4be90087ee0c71eb871" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-replace-supers" "7.0.0-rc.3" + +"@babel/plugin-transform-parameters@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-rc.3.tgz#a4a6a013c98376f521f231e8710316903e1a00e2" + dependencies: + "@babel/helper-call-delegate" "7.0.0-rc.3" + "@babel/helper-get-function-arity" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-react-jsx@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-rc.3.tgz#8985dd8c54367ab66f4a5f329bc31503024490c2" + dependencies: + "@babel/helper-builder-react-jsx" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/plugin-syntax-jsx" "7.0.0-rc.3" + +"@babel/plugin-transform-regenerator@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-rc.3.tgz#d28f5dae6a2cbb3748abf4b8b89678ea3b1ff029" + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-shorthand-properties@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-rc.3.tgz#84c3529e15e0e285b446448ac45872886ea914c1" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-spread@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-rc.3.tgz#5479b400ec2401327af90d881c04ce450589d402" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-sticky-regex@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-rc.3.tgz#d1c2d8cadb2783ee774d04e8504d05cf2b20b1b8" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-regex" "7.0.0-rc.3" + +"@babel/plugin-transform-template-literals@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-rc.3.tgz#da10dedd6c51e9e4d35d71e6abe6cc436e4de029" + dependencies: + "@babel/helper-annotate-as-pure" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-typeof-symbol@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-rc.3.tgz#6ce43fa10a4a2651c35bd4913cefd238b3610e39" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + +"@babel/plugin-transform-unicode-regex@7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-rc.3.tgz#91764a332c1c1c5c9265668ef3004432006ce5c5" + dependencies: + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-regex" "7.0.0-rc.3" + regexpu-core "^4.1.3" + +"@babel/preset-env@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-rc.3.tgz#b05748a412614bca9f754266610b6cba8f49af10" + dependencies: + "@babel/helper-module-imports" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/plugin-proposal-async-generator-functions" "7.0.0-rc.3" + "@babel/plugin-proposal-json-strings" "7.0.0-rc.3" + "@babel/plugin-proposal-object-rest-spread" "7.0.0-rc.3" + "@babel/plugin-proposal-optional-catch-binding" "7.0.0-rc.3" + "@babel/plugin-proposal-unicode-property-regex" "7.0.0-rc.3" + "@babel/plugin-syntax-async-generators" "7.0.0-rc.3" + "@babel/plugin-syntax-object-rest-spread" "7.0.0-rc.3" + "@babel/plugin-syntax-optional-catch-binding" "7.0.0-rc.3" + "@babel/plugin-transform-arrow-functions" "7.0.0-rc.3" + "@babel/plugin-transform-async-to-generator" "7.0.0-rc.3" + "@babel/plugin-transform-block-scoped-functions" "7.0.0-rc.3" + "@babel/plugin-transform-block-scoping" "7.0.0-rc.3" + "@babel/plugin-transform-classes" "7.0.0-rc.3" + "@babel/plugin-transform-computed-properties" "7.0.0-rc.3" + "@babel/plugin-transform-destructuring" "7.0.0-rc.3" + "@babel/plugin-transform-dotall-regex" "7.0.0-rc.3" + "@babel/plugin-transform-duplicate-keys" "7.0.0-rc.3" + "@babel/plugin-transform-exponentiation-operator" "7.0.0-rc.3" + "@babel/plugin-transform-for-of" "7.0.0-rc.3" + "@babel/plugin-transform-function-name" "7.0.0-rc.3" + "@babel/plugin-transform-literals" "7.0.0-rc.3" + "@babel/plugin-transform-modules-amd" "7.0.0-rc.3" + "@babel/plugin-transform-modules-commonjs" "7.0.0-rc.3" + "@babel/plugin-transform-modules-systemjs" "7.0.0-rc.3" + "@babel/plugin-transform-modules-umd" "7.0.0-rc.3" + "@babel/plugin-transform-new-target" "7.0.0-rc.3" + "@babel/plugin-transform-object-super" "7.0.0-rc.3" + "@babel/plugin-transform-parameters" "7.0.0-rc.3" + "@babel/plugin-transform-regenerator" "7.0.0-rc.3" + "@babel/plugin-transform-shorthand-properties" "7.0.0-rc.3" + "@babel/plugin-transform-spread" "7.0.0-rc.3" + "@babel/plugin-transform-sticky-regex" "7.0.0-rc.3" + "@babel/plugin-transform-template-literals" "7.0.0-rc.3" + "@babel/plugin-transform-typeof-symbol" "7.0.0-rc.3" + "@babel/plugin-transform-unicode-regex" "7.0.0-rc.3" + browserslist "^4.1.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/template@7.0.0-rc.3", "@babel/template@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-rc.3.tgz#2ba7d00f86744762632d06a0ffb0494f8443581f" + dependencies: + "@babel/code-frame" "7.0.0-rc.3" + "@babel/parser" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + +"@babel/traverse@7.0.0-rc.3", "@babel/traverse@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-rc.3.tgz#bcf659e46d24244ab51379c849093f8c4e54d239" + dependencies: + "@babel/code-frame" "7.0.0-rc.3" + "@babel/generator" "7.0.0-rc.3" + "@babel/helper-function-name" "7.0.0-rc.3" + "@babel/helper-split-export-declaration" "7.0.0-rc.3" + "@babel/parser" "7.0.0-rc.3" + "@babel/types" "7.0.0-rc.3" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@7.0.0-rc.3", "@babel/types@^7.0.0-rc.3": + version "7.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-rc.3.tgz#877ebc543b139f4a1e4c9bd8849c25ab9aea8f41" + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1075,6 +1625,14 @@ browserslist@^4.0.0: electron-to-chromium "^1.3.50" node-releases "^1.0.0-alpha.10" +browserslist@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.0.tgz#81cbb8e52dfa09918f93c6e051d779cb7360785d" + dependencies: + caniuse-lite "^1.0.30000878" + electron-to-chromium "^1.3.61" + node-releases "^1.0.0-alpha.11" + bsb-js@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/bsb-js/-/bsb-js-1.0.2.tgz#b9e7af1dfdb8de6191bb36fdff43f59359a7dfe7" @@ -1185,6 +1743,10 @@ caniuse-lite@^1.0.30000830: version "1.0.30000832" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000832.tgz#22a277f1d623774cc9aea2f7c1a65cb1603c63b8" +caniuse-lite@^1.0.30000878: + version "1.0.30000878" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz#c644c39588dd42d3498e952234c372e5a40a4123" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1565,7 +2127,7 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2141,6 +2703,10 @@ electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.50: version "1.3.51" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.51.tgz#6a42b49daaf7f22a5b37b991daf949f34dbdb9b5" +electron-to-chromium@^1.3.61: + version "1.3.61" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.61.tgz#a8ac295b28d0f03d85e37326fd16b6b6b17a1795" + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -2307,7 +2873,7 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" -esutils@^2.0.2: +esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -2749,6 +3315,10 @@ globals@^11.0.1: version "11.5.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" +globals@^11.1.0: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3702,6 +4272,10 @@ js-beautify@^1.7.5: mkdirp "~0.5.0" nopt "~3.0.1" +js-levenshtein@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5" + js-stringify@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" @@ -3710,6 +4284,10 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + js-yaml@^3.10.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" @@ -3770,6 +4348,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.3.x: version "0.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.3.0.tgz#1bf5ee63b4539fe2e26d0c1e99c240b97a457972" @@ -4198,7 +4780,7 @@ lodash.values@~2.3.0: dependencies: lodash.keys "~2.3.0" -lodash@^4.13.1, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -4591,6 +5173,12 @@ node-releases@^1.0.0-alpha.10: dependencies: semver "^5.3.0" +node-releases@^1.0.0-alpha.11: + version "1.0.0-alpha.11" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.11.tgz#73c810acc2e5b741a17ddfbb39dfca9ab9359d8a" + dependencies: + semver "^5.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -5934,7 +6522,13 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -regenerate@^1.2.1: +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -5954,6 +6548,12 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + dependencies: + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -5987,16 +6587,37 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.4.0" + regjsparser "^0.3.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" +regjsgen@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" dependencies: jsesc "~0.5.0" +regjsparser@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -6097,6 +6718,12 @@ resolve@^1.0.0, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.4.0: dependencies: path-parse "^1.0.5" +resolve@^1.3.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + dependencies: + path-parse "^1.0.5" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -6415,7 +7042,7 @@ source-map@0.1.x, source-map@~0.1.x: dependencies: amdefine ">=0.0.4" -source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -6821,6 +7448,10 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -6927,6 +7558,25 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + unicode-trie@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" @@ -7255,4 +7905,4 @@ yargs@~3.10.0: camelcase "^1.0.2" cliui "^2.1.0" decamelize "^1.0.0" - window-size "0.1.0" \ No newline at end of file + window-size "0.1.0" From e0df5624b2112753b99bc65725a65228f199dc1d Mon Sep 17 00:00:00 2001 From: Pavel Prichodko Date: Wed, 29 Aug 2018 15:27:34 +0200 Subject: [PATCH 02/43] Babel 7: Fix dependency name and upgrade to 7.0.0 (#1956) * Fix babel-types dependency name * Upgrade to Babel 7 --- package.json | 24 +- yarn.lock | 764 +++++++++++++++++++++++++-------------------------- 2 files changed, 394 insertions(+), 394 deletions(-) diff --git a/package.json b/package.json index 03a401e4bae..2aca583a8d5 100644 --- a/package.json +++ b/package.json @@ -15,17 +15,17 @@ "index.js" ], "dependencies": { - "@babel/code-frame": "^7.0.0-rc.3", - "@babel/core": "^7.0.0-rc.3", - "@babel/generator": "^7.0.0-rc.3", - "@babel/parser": "^7.0.0-rc.3", - "@babel/plugin-transform-flow-strip-types": "^7.0.0-rc.3", - "@babel/plugin-transform-modules-commonjs": "^7.0.0-rc.3", - "@babel/plugin-transform-react-jsx": "^7.0.0-rc.3", - "@babel/preset-env": "^7.0.0-rc.3", - "@babel/template": "^7.0.0-rc.3", - "@babel/traverse": "^7.0.0-rc.3", - "@babel/types": "^7.0.0-rc.3", + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", "ansi-to-html": "^0.6.4", "babel-code-frame": "^6.26.0", "babel-core": "^6.25.0", @@ -37,7 +37,7 @@ "babel-preset-env": "^1.7.0", "babel-template": "^6.26.0", "babel-traverse": "^6.26.0", - "@babel-types": "^6.26.0", + "babel-types": "^6.26.0", "babylon": "^6.17.4", "babylon-walk": "^1.0.2", "browserslist": "^3.2.6", diff --git a/yarn.lock b/yarn.lock index 96c9a26ef51..839b73ed704 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,11 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-rc.3", "@babel/code-frame@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.3.tgz#d77a587401f818a3168700f596e41cd6905947b2" +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" dependencies: - "@babel/highlight" "7.0.0-rc.3" + "@babel/highlight" "^7.0.0" "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.46" @@ -14,17 +14,17 @@ dependencies: "@babel/highlight" "7.0.0-beta.46" -"@babel/core@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-rc.3.tgz#0c3b5c4fcc65ea3fc7c019202aca6cd0b17705e7" - dependencies: - "@babel/code-frame" "7.0.0-rc.3" - "@babel/generator" "7.0.0-rc.3" - "@babel/helpers" "7.0.0-rc.3" - "@babel/parser" "7.0.0-rc.3" - "@babel/template" "7.0.0-rc.3" - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" +"@babel/core@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0.tgz#0cb0c0fd2e78a0a2bec97698f549ae9ce0b99515" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helpers" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" convert-source-map "^1.1.0" debug "^3.1.0" json5 "^0.5.0" @@ -33,166 +33,166 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.0.0-rc.3", "@babel/generator@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-rc.3.tgz#3267085de2d9b8779bde79052ee5f7070d99a5ab" +"@babel/generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-rc.3.tgz#0251d48d2f6d175ffdd9601fc032e3bdaa4e580a" +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-rc.3.tgz#2df11e360f20fb636383f7edd37a439d81c3e694" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz#ba26336beb2abb547d58b6eba5b84d77975a39eb" dependencies: - "@babel/helper-explode-assignable-expression" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-explode-assignable-expression" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-builder-react-jsx@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0-rc.3.tgz#6eb5a9138d44fa442fb381542987af6be12860b2" +"@babel/helper-builder-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" esutils "^2.0.0" -"@babel/helper-call-delegate@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-rc.3.tgz#6a96c63e5a72138f1cfcd9c4bfa99cdd1f650f19" +"@babel/helper-call-delegate@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz#e036956bb33d76e59c07a04a1fff144e9f62ab78" dependencies: - "@babel/helper-hoist-variables" "7.0.0-rc.3" - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-define-map@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-rc.3.tgz#fea0abc72c8728887873770d3939dc8bf49c3e92" +"@babel/helper-define-map@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz#a5684dd2adf30f0137cf9b0bde436f8c2db17225" dependencies: - "@babel/helper-function-name" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-function-name" "^7.0.0" + "@babel/types" "^7.0.0" lodash "^4.17.10" -"@babel/helper-explode-assignable-expression@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-rc.3.tgz#987b3295b68e380acdab6ff5923f9cad8764c74c" +"@babel/helper-explode-assignable-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz#fdfa4c88603ae3e954d0fc3244d5ca82fb468497" dependencies: - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-function-name@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-rc.3.tgz#ddfb3793fe6ca13be7161afa045971b8e82f96e8" +"@babel/helper-function-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" dependencies: - "@babel/helper-get-function-arity" "7.0.0-rc.3" - "@babel/template" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-get-function-arity@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-rc.3.tgz#b9fb083977e1639aac6c9c06b2de7b849aa6fea5" +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-hoist-variables@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-rc.3.tgz#cea012ebe83116623609311858a11dd8adc10dfa" +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-member-expression-to-functions@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-rc.3.tgz#65a455f0d35e40ee205a89e7c991472e85ffe09a" +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-module-imports@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-rc.3.tgz#09207a1d2c528abddd74c259af1836bf34194ff5" +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-module-transforms@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-rc.3.tgz#dc92b603f42d3567b2d091241569bbf420221cd9" +"@babel/helper-module-transforms@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz#b01ee7d543e81e8c3fc404b19c9f26acb6e4cf4c" dependencies: - "@babel/helper-module-imports" "7.0.0-rc.3" - "@babel/helper-simple-access" "7.0.0-rc.3" - "@babel/helper-split-export-declaration" "7.0.0-rc.3" - "@babel/template" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" lodash "^4.17.10" -"@babel/helper-optimise-call-expression@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-rc.3.tgz#6a594f922c73c3266f5c59c3374b0e176aefd8a5" +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-plugin-utils@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-rc.3.tgz#f68392896f4f3b90bdf7e72e5cc7127cdd5441fd" +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" -"@babel/helper-regex@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-rc.3.tgz#1f2e11de94fc2481fc6932c07994444f6b627854" +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" dependencies: lodash "^4.17.10" -"@babel/helper-remap-async-to-generator@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-rc.3.tgz#085d673b34b9e57a15325ec0b32dc0bb40836b39" +"@babel/helper-remap-async-to-generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz#6512273c2feb91587822335cf913fdf680c26901" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.3" - "@babel/helper-wrap-function" "7.0.0-rc.3" - "@babel/template" "7.0.0-rc.3" - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-replace-supers@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-rc.3.tgz#0172cdf556093b8e0245041bd2d76a12af756bf8" +"@babel/helper-replace-supers@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz#b6f21237280e0be54f591f63a464b66627ced707" dependencies: - "@babel/helper-member-expression-to-functions" "7.0.0-rc.3" - "@babel/helper-optimise-call-expression" "7.0.0-rc.3" - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-simple-access@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-rc.3.tgz#c5a316c0838785eab896b7578ee05b1ac8193f2b" +"@babel/helper-simple-access@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz#ff36a27983ae4c27122da2f7f294dced80ecbd08" dependencies: - "@babel/template" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/template" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-rc.3.tgz#42ca01340ddb68ab471f81e6ff2c6270dbdbd113" +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" dependencies: - "@babel/types" "7.0.0-rc.3" + "@babel/types" "^7.0.0" -"@babel/helper-wrap-function@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-rc.3.tgz#3abcc29bc93c46d61125f994d8667e297f7081fa" +"@babel/helper-wrap-function@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz#1c8e42a2cfb0808e3140189dfe9490782a6fa740" dependencies: - "@babel/helper-function-name" "7.0.0-rc.3" - "@babel/template" "7.0.0-rc.3" - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/helper-function-name" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/helpers@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-rc.3.tgz#321c6b575d4d2c0e7b9f33ea085b8ecaa1965b24" +"@babel/helpers@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0.tgz#7213388341eeb07417f44710fd7e1d00acfa6ac0" dependencies: - "@babel/template" "7.0.0-rc.3" - "@babel/traverse" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" "@babel/highlight@7.0.0-beta.46": version "7.0.0-beta.46" @@ -202,365 +202,365 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.3.tgz#c2ee83f8e5c0c387279a8c48e06fef2e32027004" +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@7.0.0-rc.3", "@babel/parser@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-rc.3.tgz#859d7b60ef6b939aab5f6d4f4bffbb7bafdc418b" +"@babel/parser@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" -"@babel/plugin-proposal-async-generator-functions@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-rc.3.tgz#22c8a89c8e660c3ff42cd5f5c5921d192a92e190" +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz#5d1eb6b44fd388b97f964350007ab9da090b1d70" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-remap-async-to-generator" "7.0.0-rc.3" - "@babel/plugin-syntax-async-generators" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" -"@babel/plugin-proposal-json-strings@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0-rc.3.tgz#0b1d313981d6f4dca6b1419ee0b61d57dc368308" +"@babel/plugin-proposal-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/plugin-syntax-json-strings" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.0.0" -"@babel/plugin-proposal-object-rest-spread@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-rc.3.tgz#c51a93b86d59eb35ea4f123c5f18f0953a25d761" +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" -"@babel/plugin-proposal-optional-catch-binding@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-rc.3.tgz#47f81c6549661c99dc74c3f5161ae90b76b6ca66" +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" -"@babel/plugin-proposal-unicode-property-regex@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-rc.3.tgz#27a6e328ab018dc0128fcbde9cfff0e67d87da94" +"@babel/plugin-proposal-unicode-property-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-regex" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" regexpu-core "^4.2.0" -"@babel/plugin-syntax-async-generators@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-rc.3.tgz#7d768f8bb18597781ade989c87519181b69764bf" +"@babel/plugin-syntax-async-generators@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-flow@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0-rc.3.tgz#84a41864762370c4e49f5b2819168455d20cb053" +"@babel/plugin-syntax-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-json-strings@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0-rc.3.tgz#5dc7b1f713de140451446a6c36739c15de857a95" +"@babel/plugin-syntax-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0-rc.3.tgz#729759abb046444b64df3b03a84d3e536bf68685" +"@babel/plugin-syntax-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-rc.3.tgz#4458bb8b61849a81de4a90f98f4cb4f87d1d95c5" +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-rc.3.tgz#5fe5ed7c95a98e2e0b8fc38c4c64904045580ae3" +"@babel/plugin-syntax-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-rc.3.tgz#e6c22148d0c2873522a2db8e21ba39d9db188d74" +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-async-to-generator@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-rc.3.tgz#df63901f6071324f1b2ac5b5b36fc79108772a98" +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz#feaf18f4bfeaf2236eea4b2d4879da83006cc8f5" dependencies: - "@babel/helper-module-imports" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-remap-async-to-generator" "7.0.0-rc.3" + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.0.0" -"@babel/plugin-transform-block-scoped-functions@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-rc.3.tgz#f3a6df435012bb5fc8cc77b17c670c32dcc8a350" +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-rc.3.tgz#65ea3edc061b09375218ae86edf6e0897769abc0" +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.10" -"@babel/plugin-transform-classes@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-rc.3.tgz#4bc40e0ab871169e72a847a1d031fef8c34f3fb8" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.3" - "@babel/helper-define-map" "7.0.0-rc.3" - "@babel/helper-function-name" "7.0.0-rc.3" - "@babel/helper-optimise-call-expression" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-replace-supers" "7.0.0-rc.3" - "@babel/helper-split-export-declaration" "7.0.0-rc.3" +"@babel/plugin-transform-classes@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz#9e65ca401747dde99e344baea90ab50dccb4c468" + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.0.0" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-rc.3.tgz#f8349aeca43c1062b2d4527a2aab0c892bc94deb" +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-rc.3.tgz#5924f10e29a1d2017f5d970c7769d2639bf16bf1" +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz#68e911e1935dda2f06b6ccbbf184ffb024e9d43a" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-rc.3.tgz#7c7acf5cc4279831eabf3817daa85f7862e647cd" +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-regex" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/plugin-transform-duplicate-keys@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-rc.3.tgz#39bc3d271d392d8b2c34a9a9dab66f4b68641c3f" +"@babel/plugin-transform-duplicate-keys@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-exponentiation-operator@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-rc.3.tgz#494cc71920f8e31e02f99548c40935cf699f5be5" +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz#c51b45e090a01876f64d32b5b46c0799c85ea56c" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-flow-strip-types@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0-rc.3.tgz#80015a6bb5723f60fd5354ba60436a20898f238e" +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0.tgz#c40ced34c2783985d90d9f9ac77a13e6fb396a01" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/plugin-syntax-flow" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" -"@babel/plugin-transform-for-of@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-rc.3.tgz#e4444180fe6f4a2a5244e9398cf8cfd3b7b9b1ae" +"@babel/plugin-transform-for-of@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-rc.3.tgz#d947d63e9d50e900885cfe86df7e5d3f772cf66e" +"@babel/plugin-transform-function-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz#eeda18dc22584e13c3581a68f6be4822bb1d1d81" dependencies: - "@babel/helper-function-name" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-rc.3.tgz#ec4df668a5065935aa80327ffc8265570361f8de" +"@babel/plugin-transform-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-rc.3.tgz#1b4188bfaca1edccfb2787db396522ac7055a095" +"@babel/plugin-transform-modules-amd@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz#2430ab73db9960c4ca89966f425b803f5d0d0468" dependencies: - "@babel/helper-module-transforms" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-commonjs@7.0.0-rc.3", "@babel/plugin-transform-modules-commonjs@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-rc.3.tgz#11792a4314820bb5f149e3f5c7eed10b342220ca" +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz#20b906e5ab130dd8e456b694a94d9575da0fd41f" dependencies: - "@babel/helper-module-transforms" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-simple-access" "7.0.0-rc.3" + "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.0.0" -"@babel/plugin-transform-modules-systemjs@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-rc.3.tgz#36a9ca740fcf9989e02f0341a02b438cd8e9528e" +"@babel/plugin-transform-modules-systemjs@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz#8873d876d4fee23209decc4d1feab8f198cf2df4" dependencies: - "@babel/helper-hoist-variables" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-umd@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-rc.3.tgz#35d04236716708b620dfca12f009b961b531f1d9" +"@babel/plugin-transform-modules-umd@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz#e7bb4f2a6cd199668964241951a25013450349be" dependencies: - "@babel/helper-module-transforms" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-new-target@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-rc.3.tgz#5d107e54bc636ebb1af2a026f45fecba47b3e4f0" +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-rc.3.tgz#3c938c9e97df14c3d340d4be90087ee0c71eb871" +"@babel/plugin-transform-object-super@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz#b8587d511309b3a0e96e9e38169908b3e392041e" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-replace-supers" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.0.0" -"@babel/plugin-transform-parameters@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-rc.3.tgz#a4a6a013c98376f521f231e8710316903e1a00e2" +"@babel/plugin-transform-parameters@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz#da864efa111816a6df161d492f33de10e74b1949" dependencies: - "@babel/helper-call-delegate" "7.0.0-rc.3" - "@babel/helper-get-function-arity" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-call-delegate" "^7.0.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-jsx@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0-rc.3.tgz#8985dd8c54367ab66f4a5f329bc31503024490c2" +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" dependencies: - "@babel/helper-builder-react-jsx" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/plugin-syntax-jsx" "7.0.0-rc.3" + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" -"@babel/plugin-transform-regenerator@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-rc.3.tgz#d28f5dae6a2cbb3748abf4b8b89678ea3b1ff029" +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" dependencies: regenerator-transform "^0.13.3" -"@babel/plugin-transform-shorthand-properties@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-rc.3.tgz#84c3529e15e0e285b446448ac45872886ea914c1" +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-rc.3.tgz#5479b400ec2401327af90d881c04ce450589d402" +"@babel/plugin-transform-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-rc.3.tgz#d1c2d8cadb2783ee774d04e8504d05cf2b20b1b8" +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-regex" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-rc.3.tgz#da10dedd6c51e9e4d35d71e6abe6cc436e4de029" +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typeof-symbol@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-rc.3.tgz#6ce43fa10a4a2651c35bd4913cefd238b3610e39" +"@babel/plugin-transform-typeof-symbol@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-unicode-regex@7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-rc.3.tgz#91764a332c1c1c5c9265668ef3004432006ce5c5" +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" dependencies: - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/helper-regex" "7.0.0-rc.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/preset-env@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-rc.3.tgz#b05748a412614bca9f754266610b6cba8f49af10" - dependencies: - "@babel/helper-module-imports" "7.0.0-rc.3" - "@babel/helper-plugin-utils" "7.0.0-rc.3" - "@babel/plugin-proposal-async-generator-functions" "7.0.0-rc.3" - "@babel/plugin-proposal-json-strings" "7.0.0-rc.3" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-rc.3" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-rc.3" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-rc.3" - "@babel/plugin-syntax-async-generators" "7.0.0-rc.3" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-rc.3" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-rc.3" - "@babel/plugin-transform-arrow-functions" "7.0.0-rc.3" - "@babel/plugin-transform-async-to-generator" "7.0.0-rc.3" - "@babel/plugin-transform-block-scoped-functions" "7.0.0-rc.3" - "@babel/plugin-transform-block-scoping" "7.0.0-rc.3" - "@babel/plugin-transform-classes" "7.0.0-rc.3" - "@babel/plugin-transform-computed-properties" "7.0.0-rc.3" - "@babel/plugin-transform-destructuring" "7.0.0-rc.3" - "@babel/plugin-transform-dotall-regex" "7.0.0-rc.3" - "@babel/plugin-transform-duplicate-keys" "7.0.0-rc.3" - "@babel/plugin-transform-exponentiation-operator" "7.0.0-rc.3" - "@babel/plugin-transform-for-of" "7.0.0-rc.3" - "@babel/plugin-transform-function-name" "7.0.0-rc.3" - "@babel/plugin-transform-literals" "7.0.0-rc.3" - "@babel/plugin-transform-modules-amd" "7.0.0-rc.3" - "@babel/plugin-transform-modules-commonjs" "7.0.0-rc.3" - "@babel/plugin-transform-modules-systemjs" "7.0.0-rc.3" - "@babel/plugin-transform-modules-umd" "7.0.0-rc.3" - "@babel/plugin-transform-new-target" "7.0.0-rc.3" - "@babel/plugin-transform-object-super" "7.0.0-rc.3" - "@babel/plugin-transform-parameters" "7.0.0-rc.3" - "@babel/plugin-transform-regenerator" "7.0.0-rc.3" - "@babel/plugin-transform-shorthand-properties" "7.0.0-rc.3" - "@babel/plugin-transform-spread" "7.0.0-rc.3" - "@babel/plugin-transform-sticky-regex" "7.0.0-rc.3" - "@babel/plugin-transform-template-literals" "7.0.0-rc.3" - "@babel/plugin-transform-typeof-symbol" "7.0.0-rc.3" - "@babel/plugin-transform-unicode-regex" "7.0.0-rc.3" +"@babel/preset-env@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0.tgz#f450f200c14e713f98cb14d113bf0c2cfbb89ca9" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.0.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" browserslist "^4.1.0" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.3.0" -"@babel/template@7.0.0-rc.3", "@babel/template@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-rc.3.tgz#2ba7d00f86744762632d06a0ffb0494f8443581f" +"@babel/template@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" dependencies: - "@babel/code-frame" "7.0.0-rc.3" - "@babel/parser" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" -"@babel/traverse@7.0.0-rc.3", "@babel/traverse@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-rc.3.tgz#bcf659e46d24244ab51379c849093f8c4e54d239" - dependencies: - "@babel/code-frame" "7.0.0-rc.3" - "@babel/generator" "7.0.0-rc.3" - "@babel/helper-function-name" "7.0.0-rc.3" - "@babel/helper-split-export-declaration" "7.0.0-rc.3" - "@babel/parser" "7.0.0-rc.3" - "@babel/types" "7.0.0-rc.3" +"@babel/traverse@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" debug "^3.1.0" globals "^11.1.0" lodash "^4.17.10" -"@babel/types@7.0.0-rc.3", "@babel/types@^7.0.0-rc.3": - version "7.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-rc.3.tgz#877ebc543b139f4a1e4c9bd8849c25ab9aea8f41" +"@babel/types@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" dependencies: esutils "^2.0.2" lodash "^4.17.10" From 05c0fb88638c5a13e79d18efa6ecf74a7fbe0dcd Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 13:08:51 -0700 Subject: [PATCH 03/43] remove babel6 from pkg.json, update internal babel configs and update hasConfig to handle arrays to check babel6 and 7 --- package.json | 16 +- src/.babelrc | 2 +- src/transforms/babel.js | 18 +- test/.babelrc | 2 +- test/babel-register.js | 2 +- test/integration/babel/.babelrc | 2 +- test/javascript.js | 2 +- yarn.lock | 659 ++++++-------------------------- 8 files changed, 134 insertions(+), 569 deletions(-) diff --git a/package.json b/package.json index 2aca583a8d5..786ae5620a4 100644 --- a/package.json +++ b/package.json @@ -27,17 +27,6 @@ "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", "ansi-to-html": "^0.6.4", - "babel-code-frame": "^6.26.0", - "babel-core": "^6.25.0", - "babel-generator": "^6.25.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", - "babel-plugin-transform-flow-strip-types": "^6.22.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0", - "babel-plugin-transform-react-jsx": "^6.24.1", - "babel-preset-env": "^1.7.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", "babylon": "^6.17.4", "babylon-walk": "^1.0.2", "browserslist": "^3.2.6", @@ -84,11 +73,10 @@ "ws": "^5.1.1" }, "devDependencies": { + "@babel/cli": "^7.0.0", + "@babel/register": "^7.0.0", "@vue/component-compiler-utils": "^2.0.0", - "babel-cli": "^6.26.0", "babel-plugin-transform-async-super": "^1.0.0", - "babel-polyfill": "^6.26.0", - "babel-register": "^6.26.0", "bsb-js": "^1.0.1", "codecov": "^3.0.0", "coffeescript": "^2.0.3", diff --git a/src/.babelrc b/src/.babelrc index 9a4ed746bb7..fec71e37d5a 100644 --- a/src/.babelrc +++ b/src/.babelrc @@ -1,5 +1,5 @@ { - "presets": [["env", { + "presets": [["@babel/preset-env", { "targets": { "node": "6" } diff --git a/src/transforms/babel.js b/src/transforms/babel.js index feb4b5e8c0f..5181585593e 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -129,15 +129,21 @@ async function getBabelConfig(asset) { // Add JSX config if it isn't already specified in the babelrc let hasReact = - hasPlugin(babelrc.presets, 'react') || - hasPlugin(babelrc.plugins, 'transform-react-jsx'); + hasPlugin(babelrc.presets, ['react', '@babel/preset-react']) || + hasPlugin(babelrc.plugins, [ + 'transform-react-jsx', + '@babel/plugin-transform-react-jsx' + ]); if (!hasReact) { mergeConfigs(babelrc, jsxConfig); } // Add Flow stripping config if it isn't already specified in the babelrc - let hasFlow = hasPlugin(babelrc.plugins, 'transform-flow-strip-types'); + let hasFlow = hasPlugin(babelrc.plugins, [ + 'transform-flow-strip-types', + '@babel/plugin-transform-flow-strip-types' + ]); if (!hasFlow && flowConfig) { mergeConfigs(babelrc, flowConfig); @@ -177,8 +183,10 @@ function mergeConfigs(a, b) { return a; } -function hasPlugin(arr, plugin) { - return Array.isArray(arr) && arr.some(p => getPluginName(p) === plugin); +function hasPlugin(arr, plugins) { + return ( + Array.isArray(arr) && arr.some(p => plugins.includes(getPluginName(p))) + ); } function getPluginName(p) { diff --git a/test/.babelrc b/test/.babelrc index 89eaace66ad..0d3ed711a8f 100644 --- a/test/.babelrc +++ b/test/.babelrc @@ -1,5 +1,5 @@ { - "presets": [["env", { + "presets": [["@babel/preset-env", { "targets": { "node": "current" } diff --git a/test/babel-register.js b/test/babel-register.js index acd9f619def..881ee3dd2f6 100644 --- a/test/babel-register.js +++ b/test/babel-register.js @@ -1,3 +1,3 @@ if (parseInt(process.versions.node, 10) < 8) { - require('babel-register'); + require('@babel/register'); } diff --git a/test/integration/babel/.babelrc b/test/integration/babel/.babelrc index 15edf6beb98..60953341055 100644 --- a/test/integration/babel/.babelrc +++ b/test/integration/babel/.babelrc @@ -1,5 +1,5 @@ { - "presets": [["env", { + "presets": [["@babel/env", { "targets": { "browsers": ["last 2 Chrome versions"] } diff --git a/test/javascript.js b/test/javascript.js index 5621abbfdf1..6b8977d0d22 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -951,7 +951,7 @@ describe.only('javascript', function() { assert(file.includes('function Bar')); }); - it('should support splitting babel-polyfill using browserlist', async function() { + it.skip('should support splitting babel-polyfill using browserlist', async function() { await bundle(__dirname + '/integration/babel-polyfill/index.js'); let file = await fs.readFile(__dirname + '/dist/index.js', 'utf8'); diff --git a/yarn.lock b/yarn.lock index 839b73ed704..d054fcfce2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,22 @@ # yarn lockfile v1 +"@babel/cli@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.0.0.tgz#108b395fd43fff6681d36fb41274df4d8ffeb12e" + dependencies: + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + output-file-sync "^2.0.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.0.3" + "@babel/code-frame@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" @@ -536,6 +552,18 @@ js-levenshtein "^1.1.3" semver "^5.3.0" +"@babel/register@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" + dependencies: + core-js "^2.5.7" + find-cache-dir "^1.0.0" + home-or-tmp "^3.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" + "@babel/template@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" @@ -716,13 +744,6 @@ any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -878,27 +899,6 @@ aws4@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" -babel-cli@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" - dependencies: - babel-core "^6.26.0" - babel-polyfill "^6.26.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - commander "^2.11.0" - convert-source-map "^1.5.0" - fs-readdir-recursive "^1.0.0" - glob "^7.1.2" - lodash "^4.17.4" - output-file-sync "^1.1.2" - path-is-absolute "^1.0.1" - slash "^1.0.0" - source-map "^0.5.6" - v8flags "^2.1.1" - optionalDependencies: - chokidar "^1.6.1" - babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -907,31 +907,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.25.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - 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.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.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.18.0, babel-generator@^6.25.0, babel-generator@^6.26.0: +babel-generator@^6.18.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" dependencies: @@ -944,439 +920,26 @@ babel-generator@^6.18.0, babel-generator@^6.25.0, babel-generator@^6.26.0: source-map "^0.5.7" trim-right "^1.0.1" -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - 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@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - 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@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - 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@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - 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@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - 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@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: babel-runtime "^6.22.0" -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - babel-plugin-transform-async-super@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-super/-/babel-plugin-transform-async-super-1.0.0.tgz#4d0884df0cad1017271105522b79f78db7892678" dependencies: babel-template "^6.26.0" -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - 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-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - 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@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - 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@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - 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@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.0: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - dependencies: - 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@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - 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@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - 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@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - 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-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^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.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - 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.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - 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@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: +babel-template@^6.16.0, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -1386,7 +949,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -1400,7 +963,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -1786,21 +1349,6 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" -chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - chokidar@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" @@ -2058,6 +1606,10 @@ commander@^2.11.0, commander@^2.14.1, commander@^2.9.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" +commander@^2.8.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + commander@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" @@ -2127,7 +1679,7 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2135,10 +1687,14 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.4.0: version "2.5.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" +core-js@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2475,7 +2031,7 @@ debug@*, debug@3.1.0, debug@^3.1.0: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -3098,6 +2654,14 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" @@ -3184,7 +2748,7 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-readdir-recursive@^1.0.0: +fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3192,7 +2756,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0, fsevents@^1.1.2: +fsevents@^1.1.2: version "1.2.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.3.tgz#08292982e7059f6674c93d8b829c1e8604979ac0" dependencies: @@ -3311,6 +2875,17 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.0: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + 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" + globals@^11.0.1: version "11.5.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" @@ -3426,7 +3001,7 @@ glslify-deps@^1.3.0: map-limit "0.0.1" resolve "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -3580,12 +3155,9 @@ hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" hosted-git-info@^2.1.4: version "2.6.0" @@ -3980,7 +3552,7 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.0.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -4380,7 +3952,7 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -4840,6 +4412,12 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + dependencies: + pify "^3.0.0" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -4903,7 +4481,7 @@ merge2@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -5137,6 +4715,10 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" @@ -5205,7 +4787,7 @@ normalize-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -5465,7 +5047,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5476,13 +5058,13 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" +output-file-sync@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" dependencies: - graceful-fs "^4.1.4" + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" mkdirp "^0.5.1" - object-assign "^4.1.0" p-finally@^1.0.0: version "1.0.0" @@ -5578,7 +5160,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -5644,12 +5226,24 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pirates@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd" + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" dependencies: find-up "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + please-upgrade-node@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.0.2.tgz#7b9eaeca35aa4a43d6ebdfd10616c042f9a83acc" @@ -6234,7 +5828,7 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -private@^0.1.6, private@^0.1.8: +private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -6532,22 +6126,10 @@ regenerate@^1.2.1, regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" @@ -6579,14 +6161,6 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" @@ -6956,6 +6530,10 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" @@ -7019,12 +6597,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.0: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" @@ -7032,6 +6604,13 @@ source-map-support@^0.5.0: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -7647,10 +7226,6 @@ use@^3.1.0: dependencies: kind-of "^6.0.2" -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -7676,12 +7251,6 @@ v8-compile-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" -v8flags@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - validate-npm-package-license@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" From 89d236b8582f9c5ec968dd51c95d06394feff3b4 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 13:36:15 -0700 Subject: [PATCH 04/43] remove async-super-babel-plugin --- package.json | 1 - src/.babelrc | 1 - yarn.lock | 8 +------- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/package.json b/package.json index 786ae5620a4..dee470cb026 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,6 @@ "@babel/cli": "^7.0.0", "@babel/register": "^7.0.0", "@vue/component-compiler-utils": "^2.0.0", - "babel-plugin-transform-async-super": "^1.0.0", "bsb-js": "^1.0.1", "codecov": "^3.0.0", "coffeescript": "^2.0.3", diff --git a/src/.babelrc b/src/.babelrc index fec71e37d5a..76f70cd2639 100644 --- a/src/.babelrc +++ b/src/.babelrc @@ -4,6 +4,5 @@ "node": "6" } }]], - "plugins": ["transform-async-super"], "ignore": ["builtins"] } diff --git a/yarn.lock b/yarn.lock index d054fcfce2b..53a9cef869b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -926,12 +926,6 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-async-super@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-super/-/babel-plugin-transform-async-super-1.0.0.tgz#4d0884df0cad1017271105522b79f78db7892678" - dependencies: - babel-template "^6.26.0" - babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -939,7 +933,7 @@ babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.26.0: +babel-template@^6.16.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: From 4e613c9d47dc5a0eb245a372c7a536cf2a7dc007 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 13:53:49 -0700 Subject: [PATCH 05/43] remove babel polyfill test for useBuiltins --- test/integration/babel-polyfill/.eslintrc.json | 6 ------ test/integration/babel-polyfill/index.js | 3 --- test/integration/babel-polyfill/package.json | 5 ----- test/javascript.js | 8 -------- 4 files changed, 22 deletions(-) delete mode 100644 test/integration/babel-polyfill/.eslintrc.json delete mode 100644 test/integration/babel-polyfill/index.js delete mode 100644 test/integration/babel-polyfill/package.json diff --git a/test/integration/babel-polyfill/.eslintrc.json b/test/integration/babel-polyfill/.eslintrc.json deleted file mode 100644 index f89e231fa93..00000000000 --- a/test/integration/babel-polyfill/.eslintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../.eslintrc.json", - "parserOptions": { - "sourceType": "module" - } -} \ No newline at end of file diff --git a/test/integration/babel-polyfill/index.js b/test/integration/babel-polyfill/index.js deleted file mode 100644 index b126e3d152f..00000000000 --- a/test/integration/babel-polyfill/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import 'babel-polyfill'; - -export async function Bar() {} diff --git a/test/integration/babel-polyfill/package.json b/test/integration/babel-polyfill/package.json deleted file mode 100644 index 9f80ea9f95c..00000000000 --- a/test/integration/babel-polyfill/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "parcel-test-babel-polyfill-browserslist", - "private": true, - "browserslist": ["last 2 Chrome versions"] -} diff --git a/test/javascript.js b/test/javascript.js index 6b8977d0d22..ff64f419091 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -951,14 +951,6 @@ describe.only('javascript', function() { assert(file.includes('function Bar')); }); - it.skip('should support splitting babel-polyfill using browserlist', async function() { - await bundle(__dirname + '/integration/babel-polyfill/index.js'); - - let file = await fs.readFile(__dirname + '/dist/index.js', 'utf8'); - assert(file.includes('async function')); - assert(!file.includes('regenerator')); - }); - it('should support compiling with babel using browserslist for different environments', async function() { async function testBrowserListMultipleEnv(projectBasePath) { // Transpiled destructuring, like r = p.prop1, o = p.prop2, a = p.prop3; From 106c43d0a6bfb165abdbad685147aacb3c1d25e4 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 14:06:27 -0700 Subject: [PATCH 06/43] remove babel-template requires --- src/scope-hoisting/concat.js | 2 +- src/scope-hoisting/hoist.js | 2 +- src/visitors/dependencies.js | 2 +- src/visitors/fs.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/scope-hoisting/concat.js b/src/scope-hoisting/concat.js index ffc46a5134b..2f15993047e 100644 --- a/src/scope-hoisting/concat.js +++ b/src/scope-hoisting/concat.js @@ -1,5 +1,5 @@ const {relative} = require('path'); -const template = require('babel-template'); +const template = require('@babel/template').default; const t = require('@babel/types'); const traverse = require('@babel/traverse').default; const generate = require('@babel/generator').default; diff --git a/src/scope-hoisting/hoist.js b/src/scope-hoisting/hoist.js index 3e6cb20f9f8..fe9d8ef2023 100644 --- a/src/scope-hoisting/hoist.js +++ b/src/scope-hoisting/hoist.js @@ -2,7 +2,7 @@ const path = require('path'); const matchesPattern = require('../visitors/matches-pattern'); const mm = require('micromatch'); const t = require('@babel/types'); -const template = require('babel-template'); +const template = require('@babel/template').default; const rename = require('./renamer'); const {getName, getIdentifier, getExportIdentifier} = require('./utils'); diff --git a/src/visitors/dependencies.js b/src/visitors/dependencies.js index 95fea2315cd..4a99c2ec25d 100644 --- a/src/visitors/dependencies.js +++ b/src/visitors/dependencies.js @@ -1,5 +1,5 @@ const types = require('@babel/types'); -const template = require('babel-template'); +const template = require('@babel/template').default; const traverse = require('@babel/traverse').default; const urlJoin = require('../utils/urlJoin'); const isURL = require('../utils/is-url'); diff --git a/src/visitors/fs.js b/src/visitors/fs.js index 733dc9d6fb3..46f121d501c 100644 --- a/src/visitors/fs.js +++ b/src/visitors/fs.js @@ -1,7 +1,7 @@ const t = require('@babel/types'); const Path = require('path'); const fs = require('fs'); -const template = require('babel-template'); +const template = require('@babel/template').default; const logger = require('../Logger'); const bufferTemplate = template('Buffer(CONTENT, ENC)'); From 71a75dc675c476c9d263a683ba9e528edb439d7c Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 14:11:47 -0700 Subject: [PATCH 07/43] fix html import tests --- test/javascript.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/test/javascript.js b/test/javascript.js index ff64f419091..70ab9cc8bdf 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -1253,7 +1253,7 @@ describe.only('javascript', function() { __dirname + '/integration/import-html-async/index.js', {sourceMaps: false} ); - + await assertBundleTree(b, { name: 'index.js', assets: [ @@ -1275,7 +1275,11 @@ describe.only('javascript', function() { { type: 'css', assets: ['index.css'], - childBundles: [] + childBundles: [ + { + type: 'js' + } + ] } ] } @@ -1318,7 +1322,11 @@ describe.only('javascript', function() { { type: 'css', assets: ['index.css'], - childBundles: [] + childBundles: [ + { + type: 'js' + } + ] } ] } @@ -1357,7 +1365,11 @@ describe.only('javascript', function() { { type: 'css', assets: ['index.css'], - childBundles: [] + childBundles: [ + { + type: 'js' + } + ] } ] } From dd066774dd0f8ebbfe2acb22c91a8aaf887f9493 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 14:13:38 -0700 Subject: [PATCH 08/43] fix formatting --- test/javascript.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/javascript.js b/test/javascript.js index 70ab9cc8bdf..1b484d471b0 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -1253,7 +1253,7 @@ describe.only('javascript', function() { __dirname + '/integration/import-html-async/index.js', {sourceMaps: false} ); - + await assertBundleTree(b, { name: 'index.js', assets: [ From cfad0481a63b9c6b568c74e41bc7967c8b92bd0e Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 14:36:52 -0700 Subject: [PATCH 09/43] work around template string bug in Babel 7? --- src/packagers/JSConcatPackager.js | 6 ++---- src/packagers/JSPackager.js | 6 ++---- test/.babelrc | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/packagers/JSConcatPackager.js b/src/packagers/JSConcatPackager.js index 7b5649568c6..5091287c470 100644 --- a/src/packagers/JSConcatPackager.js +++ b/src/packagers/JSConcatPackager.js @@ -530,10 +530,8 @@ class JSConcatPackager extends Packager { // Add source map url if a map bundle exists let mapBundle = this.bundle.siblingBundlesMap.get('map'); if (mapBundle) { - output += `\n//# sourceMappingURL=${urlJoin( - this.options.publicURL, - path.basename(mapBundle.name) - )}`; + let mapUrl = urlJoin(this.options.publicURL, path.basename(mapBundle.name)); + output += `\n//# sourceMappingURL=${mapUrl}`; } } diff --git a/src/packagers/JSPackager.js b/src/packagers/JSPackager.js index ed2f8c17a74..d87f883d7f1 100644 --- a/src/packagers/JSPackager.js +++ b/src/packagers/JSPackager.js @@ -225,11 +225,9 @@ class JSPackager extends Packager { // Add source map url if a map bundle exists let mapBundle = this.bundle.siblingBundlesMap.get('map'); if (mapBundle) { + let mapUrl = urlJoin(this.options.publicURL, path.basename(mapBundle.name)); await this.write( - `\n//# sourceMappingURL=${urlJoin( - this.options.publicURL, - path.basename(mapBundle.name) - )}` + `\n//# sourceMappingURL=${mapUrl}` ); } } diff --git a/test/.babelrc b/test/.babelrc index 0d3ed711a8f..dcbe7cc5cd4 100644 --- a/test/.babelrc +++ b/test/.babelrc @@ -4,5 +4,5 @@ "node": "current" } }]], - "ignore": ["integration", "input"] + "ignore": ["integration", "input", "dist"] } From a1b0f4c70e4c692da532d935632d97e03d34c3e4 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 14:38:22 -0700 Subject: [PATCH 10/43] format --- src/packagers/JSConcatPackager.js | 5 ++++- src/packagers/JSPackager.js | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/packagers/JSConcatPackager.js b/src/packagers/JSConcatPackager.js index 5091287c470..139ae89bf9b 100644 --- a/src/packagers/JSConcatPackager.js +++ b/src/packagers/JSConcatPackager.js @@ -530,7 +530,10 @@ class JSConcatPackager extends Packager { // Add source map url if a map bundle exists let mapBundle = this.bundle.siblingBundlesMap.get('map'); if (mapBundle) { - let mapUrl = urlJoin(this.options.publicURL, path.basename(mapBundle.name)); + let mapUrl = urlJoin( + this.options.publicURL, + path.basename(mapBundle.name) + ); output += `\n//# sourceMappingURL=${mapUrl}`; } } diff --git a/src/packagers/JSPackager.js b/src/packagers/JSPackager.js index d87f883d7f1..3cb5585e302 100644 --- a/src/packagers/JSPackager.js +++ b/src/packagers/JSPackager.js @@ -225,10 +225,11 @@ class JSPackager extends Packager { // Add source map url if a map bundle exists let mapBundle = this.bundle.siblingBundlesMap.get('map'); if (mapBundle) { - let mapUrl = urlJoin(this.options.publicURL, path.basename(mapBundle.name)); - await this.write( - `\n//# sourceMappingURL=${mapUrl}` + let mapUrl = urlJoin( + this.options.publicURL, + path.basename(mapBundle.name) ); + await this.write(`\n//# sourceMappingURL=${mapUrl}`); } } await this.dest.end(); From bbf0cd4cf3e844c8e10e592c3dd06214d791752e Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 14:55:28 -0700 Subject: [PATCH 11/43] remove matches-pattern --- src/scope-hoisting/hoist.js | 11 +++++----- src/visitors/dependencies.js | 3 +-- src/visitors/env.js | 3 +-- src/visitors/matches-pattern.js | 36 --------------------------------- 4 files changed, 7 insertions(+), 46 deletions(-) delete mode 100644 src/visitors/matches-pattern.js diff --git a/src/scope-hoisting/hoist.js b/src/scope-hoisting/hoist.js index fe9d8ef2023..e96664e91b4 100644 --- a/src/scope-hoisting/hoist.js +++ b/src/scope-hoisting/hoist.js @@ -1,5 +1,4 @@ const path = require('path'); -const matchesPattern = require('../visitors/matches-pattern'); const mm = require('micromatch'); const t = require('@babel/types'); const template = require('@babel/template').default; @@ -175,20 +174,20 @@ module.exports = { return; } - if (matchesPattern(path.node, 'module.exports')) { + if (t.matchesPattern(path.node, 'module.exports')) { path.replaceWith(getExportsIdentifier(asset)); asset.cacheData.isCommonJS = true; } - if (matchesPattern(path.node, 'module.id')) { + if (t.matchesPattern(path.node, 'module.id')) { path.replaceWith(t.stringLiteral(asset.id)); } - if (matchesPattern(path.node, 'module.hot')) { + if (t.matchesPattern(path.node, 'module.hot')) { path.replaceWith(t.identifier('null')); } - if (matchesPattern(path.node, 'module.bundle')) { + if (t.matchesPattern(path.node, 'module.bundle')) { path.replaceWith(t.identifier('require')); } }, @@ -332,7 +331,7 @@ module.exports = { ); } - if (matchesPattern(callee, 'require.resolve')) { + if (t.matchesPattern(callee, 'require.resolve')) { path.replaceWith( REQUIRE_RESOLVE_CALL_TEMPLATE({ ID: t.stringLiteral(asset.id), diff --git a/src/visitors/dependencies.js b/src/visitors/dependencies.js index 4a99c2ec25d..a3eabbf26e6 100644 --- a/src/visitors/dependencies.js +++ b/src/visitors/dependencies.js @@ -3,7 +3,6 @@ const template = require('@babel/template').default; const traverse = require('@babel/traverse').default; const urlJoin = require('../utils/urlJoin'); const isURL = require('../utils/is-url'); -const matchesPattern = require('./matches-pattern'); const nodeBuiltins = require('node-libs-browser'); const requireTemplate = template('require("_bundle_loader")'); @@ -66,7 +65,7 @@ module.exports = { const isRegisterServiceWorker = types.isStringLiteral(args[0]) && - matchesPattern(callee, serviceWorkerPattern); + types.matchesPattern(callee, serviceWorkerPattern); if (isRegisterServiceWorker) { // Treat service workers as an entry point so filenames remain consistent across builds. diff --git a/src/visitors/env.js b/src/visitors/env.js index e30415ff2a8..ea58fecd5da 100644 --- a/src/visitors/env.js +++ b/src/visitors/env.js @@ -1,10 +1,9 @@ const types = require('@babel/types'); -const matchesPattern = require('./matches-pattern'); module.exports = { MemberExpression(node, asset) { // Inline environment variables accessed on process.env - if (matchesPattern(node.object, 'process.env')) { + if (types.matchesPattern(node.object, 'process.env')) { let key = types.toComputedKey(node); if (types.isStringLiteral(key)) { let val = types.valueToNode(process.env[key.value]); diff --git a/src/visitors/matches-pattern.js b/src/visitors/matches-pattern.js deleted file mode 100644 index e980acd269b..00000000000 --- a/src/visitors/matches-pattern.js +++ /dev/null @@ -1,36 +0,0 @@ -const types = require('@babel/types'); - -// from @babel/types. remove when we upgrade to babel 7. -// https://github.com/babel/babel/blob/0189b387026c35472dccf45d14d58312d249f799/packages/@babel/types/src/index.js#L347 -module.exports = function matchesPattern(member, match, allowPartial) { - // not a member expression - if (!types.isMemberExpression(member)) return false; - - const parts = Array.isArray(match) ? match : match.split('.'); - const nodes = []; - - let node; - for (node = member; types.isMemberExpression(node); node = node.object) { - nodes.push(node.property); - } - nodes.push(node); - - if (nodes.length < parts.length) return false; - if (!allowPartial && nodes.length > parts.length) return false; - - for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) { - const node = nodes[j]; - let value; - if (types.isIdentifier(node)) { - value = node.name; - } else if (types.isStringLiteral(node)) { - value = node.value; - } else { - return false; - } - - if (parts[i] !== value) return false; - } - - return true; -}; From 04617c446aa8bcf0f2c35c182de8c60ab480c32b Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 15:05:43 -0700 Subject: [PATCH 12/43] get rid of lint issues --- src/transforms/babel.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 5181585593e..39c12ec05d2 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -234,15 +234,17 @@ async function findBabelRc(asset) { }); } -function shouldIgnoreBabelrc(filename, babelrc) { +/*function shouldIgnoreBabelrc(filename, babelrc) { return false; // Determine if we should ignore this babelrc file. We do this here instead of // letting @babel/core handle it because this config might be merged with our // autogenerated one later which shouldn't be ignored. - // let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); - // let only = - // babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); - // return babelUtils.shouldIgnore(filename, ignore, only); + let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); + let only = babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); + return babelUtils.shouldIgnore(filename, ignore, only); +}*/ +function shouldIgnoreBabelrc() { + return false; } /** From 03c88b59cea0a4511670326a260bf58cd1f808c2 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 15:05:43 -0700 Subject: [PATCH 13/43] fix comment --- src/transforms/babel.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 5181585593e..080e872b873 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -234,15 +234,16 @@ async function findBabelRc(asset) { }); } -function shouldIgnoreBabelrc(filename, babelrc) { - return false; +/*function shouldIgnoreBabelrc(filename, babelrc) { // Determine if we should ignore this babelrc file. We do this here instead of // letting @babel/core handle it because this config might be merged with our // autogenerated one later which shouldn't be ignored. - // let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); - // let only = - // babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); - // return babelUtils.shouldIgnore(filename, ignore, only); + let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); + let only = babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); + return babelUtils.shouldIgnore(filename, ignore, only); +}*/ +function shouldIgnoreBabelrc() { + return false; } /** From 4af249a4e50aaf5e02f0c32e0399865808075449 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Wed, 29 Aug 2018 15:40:09 -0700 Subject: [PATCH 14/43] detect babel 6 configs --- package.json | 2 + src/transforms/babel.js | 54 ++- .../babel-6-compatibility/.babelrc | 3 + .../babel-6-compatibility/index.js | 3 + test/javascript.js | 11 + yarn.lock | 438 +++++++++++++++++- 6 files changed, 495 insertions(+), 16 deletions(-) create mode 100644 test/integration/babel-6-compatibility/.babelrc create mode 100644 test/integration/babel-6-compatibility/index.js diff --git a/package.json b/package.json index dee470cb026..0dc542dd100 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,8 @@ "@babel/cli": "^7.0.0", "@babel/register": "^7.0.0", "@vue/component-compiler-utils": "^2.0.0", + "babel-core": "^6.26.3", + "babel-preset-env": "^1.7.0", "bsb-js": "^1.0.1", "codecov": "^3.0.0", "coffeescript": "^2.0.3", diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 080e872b873..8372b6a45dc 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -100,6 +100,15 @@ async function getBabelConfig(asset) { // Try to resolve a .babelrc file. If one is found, consider the module source code. let babelrc = await getBabelRc(asset, isSource); + let isBabel7 = true; + if (babelrc) { + isBabel7 = babelrc.version === 7; + babelrc = babelrc.config; + + if (!isBabel7) { + console.log('Found a babel 6 module in: ', asset.name); + } + } isSource = isSource || !!babelrc; let envConfig = await getEnvConfig(asset, isSource); @@ -193,6 +202,30 @@ function getPluginName(p) { return Array.isArray(p) ? p[0] : p; } +function testPluginArrayForBabelScope(plugins) { + for (let plugin of plugins) { + if (getPluginName(plugin).startsWith('@babel/')) { + return true; + } + } + return false; +} + +function isBabel7Config(babelrc) { + if (!babelrc.presets && !babelrc.presets) { + return true; + } + + if ( + (babelrc.presets && testPluginArrayForBabelScope(babelrc.presets)) || + (babelrc.plugins && testPluginArrayForBabelScope(babelrc.plugins)) + ) { + return true; + } + + return false; +} + /** * Finds a .babelrc for an asset. By default, .babelrc files inside node_modules are not used. * However, there are some exceptions: @@ -203,6 +236,7 @@ async function getBabelRc(asset, isSource) { // Support legacy browserify packages let pkg = await asset.getPackage(); let browserify = pkg && pkg.browserify; + let babelrc = null; if (browserify && Array.isArray(browserify.transform)) { // Look for babelify in the browserify transform list let babelify = browserify.transform.find( @@ -211,21 +245,31 @@ async function getBabelRc(asset, isSource) { // If specified as an array, override the config with the one specified if (Array.isArray(babelify) && babelify[1]) { - return babelify[1]; + return { + version: 6, + config: babelify[1] + }; } // Otherwise, return the .babelrc if babelify was found - return babelify ? await findBabelRc(asset) : null; + if (babelify) { + babelrc = await findBabelRc(asset); + } } // If this asset is not in node_modules, always use the .babelrc - if (isSource) { - return await findBabelRc(asset); + if (!babelrc && isSource) { + babelrc = await findBabelRc(asset); } // Otherwise, don't load .babelrc for node_modules. // See https://github.com/parcel-bundler/parcel/issues/13. - return null; + return babelrc + ? { + version: isBabel7Config(babelrc) ? 7 : 6, + config: babelrc + } + : null; } async function findBabelRc(asset) { diff --git a/test/integration/babel-6-compatibility/.babelrc b/test/integration/babel-6-compatibility/.babelrc new file mode 100644 index 00000000000..002b4aa0d58 --- /dev/null +++ b/test/integration/babel-6-compatibility/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["env"] +} diff --git a/test/integration/babel-6-compatibility/index.js b/test/integration/babel-6-compatibility/index.js new file mode 100644 index 00000000000..9e0528522b0 --- /dev/null +++ b/test/integration/babel-6-compatibility/index.js @@ -0,0 +1,3 @@ +export default function () { + return 3; +} diff --git a/test/javascript.js b/test/javascript.js index 1b484d471b0..2d9424d94ce 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -28,6 +28,17 @@ describe.only('javascript', function() { assert.equal(output.default(), 3); }); + it('should produce a basic JS bundle using Babel 6', async function() { + let b = await bundle( + __dirname + '/integration/babel-6-compatibility/index.js' + ); + + let output = await run(b); + assert.equal(typeof output, 'object'); + assert.equal(typeof output.default, 'function'); + assert.equal(output.default(), 3); + }); + it('should produce a basic JS bundle with object rest spread support', async function() { let b = await bundle( __dirname + '/integration/object-rest-spread/object-rest-spread.js' diff --git a/yarn.lock b/yarn.lock index 53a9cef869b..5a51aa8247a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -907,7 +907,31 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-generator@^6.18.0: +babel-core@^6.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + dependencies: + 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.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.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.18.0, babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" dependencies: @@ -920,20 +944,383 @@ babel-generator@^6.18.0: source-map "^0.5.7" trim-right "^1.0.1" +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + 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@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + 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@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + 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@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + 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@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + 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@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" dependencies: babel-runtime "^6.22.0" -babel-runtime@^6.11.6, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + 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-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + 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@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + 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@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + 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@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + dependencies: + 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@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + 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@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + 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@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + 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-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^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.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + 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.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + 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@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0: +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -943,7 +1330,7 @@ babel-template@^6.16.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.26.0: +babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -957,7 +1344,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.26.0: +babel-types@^6.15.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -1685,7 +2072,7 @@ core-js@^2.4.0: version "2.5.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" -core-js@^2.5.7: +core-js@^2.5.0, core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" @@ -2025,7 +2412,7 @@ debug@*, debug@3.1.0, debug@^3.1.0: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -3149,6 +3536,13 @@ hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + home-or-tmp@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" @@ -3946,7 +4340,7 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.0: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -5041,7 +5435,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5154,7 +5548,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -5822,7 +6216,7 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -private@^0.1.6: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -6124,6 +6518,14 @@ regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" @@ -6155,6 +6557,14 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" @@ -6591,6 +7001,12 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + source-map-support@^0.5.0: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" From b371872a97022ee1fb668259e2e3af62259bcc59 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 09:47:12 -0700 Subject: [PATCH 15/43] remove babylon 6 --- package.json | 1 - yarn.lock | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 0dc542dd100..614b05b1a09 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", "ansi-to-html": "^0.6.4", - "babylon": "^6.17.4", "babylon-walk": "^1.0.2", "browserslist": "^3.2.6", "chalk": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 5a51aa8247a..1f389893223 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1361,7 +1361,7 @@ babylon-walk@^1.0.2: babel-types "^6.15.0" lodash.clone "^4.5.0" -babylon@^6.17.4, babylon@^6.18.0: +babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" From ad7854663071d6fb82f8d739bdc9fb4d5c698468 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 09:50:49 -0700 Subject: [PATCH 16/43] fix getBabelRc --- src/transforms/babel.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 8372b6a45dc..a7cf5aa1150 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -233,10 +233,11 @@ function isBabel7Config(babelrc) { * - the `source` field in package.json is used by the resolver */ async function getBabelRc(asset, isSource) { + let babelrc = null; + // Support legacy browserify packages let pkg = await asset.getPackage(); let browserify = pkg && pkg.browserify; - let babelrc = null; if (browserify && Array.isArray(browserify.transform)) { // Look for babelify in the browserify transform list let babelify = browserify.transform.find( @@ -245,14 +246,11 @@ async function getBabelRc(asset, isSource) { // If specified as an array, override the config with the one specified if (Array.isArray(babelify) && babelify[1]) { - return { - version: 6, - config: babelify[1] - }; + babelrc = babelify[1]; } // Otherwise, return the .babelrc if babelify was found - if (babelify) { + if (!babelrc && babelify) { babelrc = await findBabelRc(asset); } } From 682175c915034d73eb4f03064067f824f1be9721 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 13:07:08 -0700 Subject: [PATCH 17/43] babel 7 to babel 6 ast convertor v1 --- package.json | 1 + src/assets/JSAsset.js | 1 + src/transforms/babel.js | 3 + src/transforms/babelASTConvertor.js | 61 +++++++++++++++ test/babel.js | 76 +++++++++++++++++++ .../integration/babel-ast-conversion/index.js | 29 +++++++ test/javascript.js | 2 +- yarn.lock | 7 ++ 8 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 src/transforms/babelASTConvertor.js create mode 100644 test/babel.js create mode 100644 test/integration/babel-ast-conversion/index.js diff --git a/package.json b/package.json index 614b05b1a09..d1c9fab36d7 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ }, "devDependencies": { "@babel/cli": "^7.0.0", + "@babel/preset-flow": "^7.0.0", "@babel/register": "^7.0.0", "@vue/component-compiler-utils": "^2.0.0", "babel-core": "^6.26.3", diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 8c8fcdded8b..80e09eef76d 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -71,6 +71,7 @@ class JSAsset extends Asset { strictMode: false, sourceType: 'module', locations: true, + tokens: true, // TODO: Set this to false if there is no babel 6 config plugins: ['exportExtensions', 'dynamicImport'] } }; diff --git a/src/transforms/babel.js b/src/transforms/babel.js index a7cf5aa1150..9a3a95cfcf4 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -46,6 +46,9 @@ async function babelTransform(asset) { // throw new Error(`Unsupported babel version: ${babel.version}`); // } + const babelASTConvertor = require('./babelASTConvertor'); + babelASTConvertor(asset.ast, 7); + let res = babel.transformFromAst(asset.ast, asset.contents, config); if (res.ast) { asset.ast = res.ast; diff --git a/src/transforms/babelASTConvertor.js b/src/transforms/babelASTConvertor.js new file mode 100644 index 00000000000..2dc0a1bb490 --- /dev/null +++ b/src/transforms/babelASTConvertor.js @@ -0,0 +1,61 @@ +const traverse = require('@babel/traverse').default; + +// Convert between babel 7 and babel 6 AST +module.exports = function(ast, version) { + if (version !== 7) { + throw new Error( + 'Only Babel 7 ASTs can currently be converted to a Babel 6 compat mode' + ); + } + + const visitor = { + ArrowFunctionExpression: node => { + node.expression = node.body.type !== 'BlockStatement'; + }, + ExistsTypeAnnotation: node => { + node.type = 'ExistentialTypeParam'; + }, + NumberLiteralTypeAnnotation: node => { + node.type = 'NumericLiteralTypeAnnotation'; + }, + ObjectTypeIndexer: node => { + node.end++; + node.loc.end.column++; + }, + ForOfStatement: node => { + node.type = 'ForAwaitStatement'; + delete node.await; + }, + SpreadElement: (node, path) => { + if ( + path.parentPath.isObjectExpression() || + path.parentPath.isArrayExpression() + ) { + node.type = 'SpreadProperty'; + } + }, + RestElement: (node, path) => { + if ( + path.parentPath.isObjectPattern() || + path.parentPath.isArrayPattern() + ) { + node.type = 'RestProperty'; + } + } + }; + + traverse(ast, { + enter(path) { + if (path.node.variance && path.node.variance.type === 'Variance') { + path.node.variance = path.node.variance.kind; + } + + let visitorFunc = visitor[path.node.type]; + if (visitorFunc) { + visitorFunc(path.node, path); + } + } + }); + + return ast; +}; diff --git a/test/babel.js b/test/babel.js new file mode 100644 index 00000000000..e6f9e3a3732 --- /dev/null +++ b/test/babel.js @@ -0,0 +1,76 @@ +const babelCore = require('@babel/core'); +const fs = require('../src/utils/fs'); +const BabelASTConvertor = require('../src/transforms/babelASTConvertor'); +const path = require('path'); +const BabelFlowPreset = require('@babel/preset-flow'); +const babelPresetEnv = require('@babel/preset-env'); +const traverse = require('@babel/traverse').default; +const assert = require('assert'); + +describe.only('Babel', function() { + it.only('Should be able to convert Babel 7 to Babel 6 AST', async function() { + const options = { + parserOpts: { + allowReturnOutsideFunction: true, + allowHashBang: true, + ecmaVersion: Infinity, + strictMode: false, + sourceType: 'module', + locations: true, + tokens: true + }, + presets: [BabelFlowPreset, babelPresetEnv] + }; + + let code = await fs.readFile( + path.join(__dirname, './integration/babel-ast-conversion/index.js'), + 'utf8' + ); + let ast = babelCore.parse(code, options); + + ast = BabelASTConvertor(ast, 7); + + let elementCount = {}; + traverse(ast, { + enter(path) { + if (!elementCount[path.node.type]) { + elementCount[path.node.type] = 0; + } + elementCount[path.node.type]++; + + if (path.node.variance) { + assert(!path.node.variance.kind); + } + + if (path.node.type === 'ForAwaitStatement') { + assert(!path.node.await); + } + + if (path.node.type === 'ArrowFunctionExpression') { + assert(path.node.expression !== undefined); + } + } + }); + + // Check Renaming/Removal of Nodes + assert.equal(elementCount['ExistsTypeAnnotation'], undefined); + assert.equal(elementCount['ExistentialTypeParam'], 1); + + assert.equal(elementCount['NumberLiteralTypeAnnotation'], undefined); + assert.equal(elementCount['NumericLiteralTypeAnnotation'], 1); + + assert.equal(elementCount['ForOfStatement'], undefined); + assert.equal(elementCount['ForAwaitStatement'], 1); + + assert.equal(elementCount['SpreadElement'], undefined); + assert.equal(elementCount['SpreadProperty'], 2); + + assert.equal(elementCount['RestElement'], undefined); + assert.equal(elementCount['RestProperty'], 2); + + // Check node count + assert.equal(elementCount['TypeParameter'], 6); + + assert.equal(elementCount['ArrowFunctionExpression'], 2); + }); +}); diff --git a/test/integration/babel-ast-conversion/index.js b/test/integration/babel-ast-conversion/index.js new file mode 100644 index 00000000000..fb8f4fb3c9a --- /dev/null +++ b/test/integration/babel-ast-conversion/index.js @@ -0,0 +1,29 @@ +// @flow + +type T = 0; +type A = B<*>; + +const hello = () => { + return 'this is an arrow function'; +}; + +async () => { + for await (i of []) { + // Do something I guess... + } +} + +let { x, y, ...c } = obj; +let [...l] = something; + +let helloSpread = {...{ + one: 1 +}} + +let helloArray = [...[]]; + +var a: { [a: number]: string; }; + +class C<+T,-U> {} +function f<+T,-U>() {} +type T<+T,-U> = {} \ No newline at end of file diff --git a/test/javascript.js b/test/javascript.js index 2d9424d94ce..21f8b4aafc7 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -4,7 +4,7 @@ const path = require('path'); const {bundle, run, assertBundleTree, deferred} = require('./utils'); const {mkdirp} = require('../src/utils/fs'); -describe.only('javascript', function() { +describe('javascript', function() { it('should produce a basic JS bundle with CommonJS requires', async function() { let b = await bundle(__dirname + '/integration/commonjs/index.js'); diff --git a/yarn.lock b/yarn.lock index 1f389893223..fea31fffa06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -552,6 +552,13 @@ js-levenshtein "^1.1.3" semver "^5.3.0" +"@babel/preset-flow@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.0.0.tgz#afd764835d9535ec63d8c7d4caf1c06457263da2" + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/register@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" From 8bdb5b3d2438774aa9678dcc10a619ab74865b6a Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 13:09:04 -0700 Subject: [PATCH 18/43] remove some random code --- src/transforms/babel.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 9a3a95cfcf4..a7cf5aa1150 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -46,9 +46,6 @@ async function babelTransform(asset) { // throw new Error(`Unsupported babel version: ${babel.version}`); // } - const babelASTConvertor = require('./babelASTConvertor'); - babelASTConvertor(asset.ast, 7); - let res = babel.transformFromAst(asset.ast, asset.contents, config); if (res.ast) { asset.ast = res.ast; From 15a1421aa4c9443294caacf46250d3dd106fdb5e Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 13:23:23 -0700 Subject: [PATCH 19/43] add babel 6 => babel 7 convertor --- src/transforms/babelASTConvertor.js | 63 +++++++++++++++++++++++++---- test/babel.js | 56 ++++++++++++++++++++++++- 2 files changed, 110 insertions(+), 9 deletions(-) diff --git a/src/transforms/babelASTConvertor.js b/src/transforms/babelASTConvertor.js index 2dc0a1bb490..2653a2c6a51 100644 --- a/src/transforms/babelASTConvertor.js +++ b/src/transforms/babelASTConvertor.js @@ -1,13 +1,8 @@ const traverse = require('@babel/traverse').default; // Convert between babel 7 and babel 6 AST -module.exports = function(ast, version) { - if (version !== 7) { - throw new Error( - 'Only Babel 7 ASTs can currently be converted to a Babel 6 compat mode' - ); - } - +// More info on the AST Changes: https://babeljs.io/docs/en/v7-migration-api#ast-changes +function babel7toBabel6(ast) { const visitor = { ArrowFunctionExpression: node => { node.expression = node.body.type !== 'BlockStatement'; @@ -58,4 +53,58 @@ module.exports = function(ast, version) { }); return ast; +} + +function babel6toBabel7(ast) { + const visitor = { + ArrowFunctionExpression: node => { + delete node.expression; + }, + ExistentialTypeParam: node => { + node.type = 'ExistsTypeAnnotation'; + }, + NumericLiteralTypeAnnotation: node => { + node.type = 'NumberLiteralTypeAnnotation'; + }, + ObjectTypeIndexer: node => { + node.end--; + node.loc.end.column--; + }, + ForAwaitStatement: node => { + node.type = 'ForOfStatement'; + node.await = true; + }, + SpreadProperty: node => { + node.type = 'SpreadElement'; + }, + RestProperty: node => { + node.type = 'RestElement'; + } + }; + + traverse(ast, { + enter(path) { + if (path.node.variance && typeof path.node.variance === 'string') { + path.node.variance = { + type: 'VarianceNode', + kind: path.node.variance + }; + } + + let visitorFunc = visitor[path.node.type]; + if (visitorFunc) { + visitorFunc(path.node); + } + } + }); + + return ast; +} + +module.exports = function(ast, version) { + if (![6, 7].includes(version)) { + throw new Error('This convertor only supports Babel 6 and 7 ASTs'); + } + + return version === 7 ? babel7toBabel6(ast) : babel6toBabel7(ast); }; diff --git a/test/babel.js b/test/babel.js index e6f9e3a3732..fe4cf010d29 100644 --- a/test/babel.js +++ b/test/babel.js @@ -8,7 +8,8 @@ const traverse = require('@babel/traverse').default; const assert = require('assert'); describe.only('Babel', function() { - it.only('Should be able to convert Babel 7 to Babel 6 AST', async function() { + let ast; + before(async function() { const options = { parserOpts: { allowReturnOutsideFunction: true, @@ -26,8 +27,11 @@ describe.only('Babel', function() { path.join(__dirname, './integration/babel-ast-conversion/index.js'), 'utf8' ); - let ast = babelCore.parse(code, options); + ast = babelCore.parse(code, options); + }); + + it('Should be able to convert Babel 7 => Babel 6 AST', async function() { ast = BabelASTConvertor(ast, 7); let elementCount = {}; @@ -73,4 +77,52 @@ describe.only('Babel', function() { assert.equal(elementCount['ArrowFunctionExpression'], 2); }); + + it('Should be able to convert Babel 6 => Babel 7 AST', async function() { + ast = BabelASTConvertor(ast, 6); + + let elementCount = {}; + traverse(ast, { + enter(path) { + if (!elementCount[path.node.type]) { + elementCount[path.node.type] = 0; + } + elementCount[path.node.type]++; + + if (path.node.variance) { + assert(!!path.node.variance.kind); + assert.equal(path.node.variance.type, 'VarianceNode'); + } + + if (path.node.type === 'ForOfStatement') { + assert(path.node.await); + } + + if (path.node.type === 'ArrowFunctionExpression') { + assert(path.node.expression === undefined); + } + } + }); + + // Check Renaming/Removal of Nodes + assert.equal(elementCount['ExistsTypeAnnotation'], 1); + assert.equal(elementCount['ExistentialTypeParam'], undefined); + + assert.equal(elementCount['NumberLiteralTypeAnnotation'], 1); + assert.equal(elementCount['NumericLiteralTypeAnnotation'], undefined); + + assert.equal(elementCount['ForOfStatement'], 1); + assert.equal(elementCount['ForAwaitStatement'], undefined); + + assert.equal(elementCount['SpreadElement'], 2); + assert.equal(elementCount['SpreadProperty'], undefined); + + assert.equal(elementCount['RestElement'], 2); + assert.equal(elementCount['RestProperty'], undefined); + + // Check node count + assert.equal(elementCount['TypeParameter'], 6); + + assert.equal(elementCount['ArrowFunctionExpression'], 2); + }); }); From 762cc0001e188df3c3e3be3b9341537ab9c89c26 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 13:27:26 -0700 Subject: [PATCH 20/43] add js tests back in --- test/javascript.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/javascript.js b/test/javascript.js index 21f8b4aafc7..2d9424d94ce 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -4,7 +4,7 @@ const path = require('path'); const {bundle, run, assertBundleTree, deferred} = require('./utils'); const {mkdirp} = require('../src/utils/fs'); -describe('javascript', function() { +describe.only('javascript', function() { it('should produce a basic JS bundle with CommonJS requires', async function() { let b = await bundle(__dirname + '/integration/commonjs/index.js'); From 74ab5f7e68bd600566bd17ff4fd5121768e499b5 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Thu, 30 Aug 2018 13:29:03 -0700 Subject: [PATCH 21/43] fix typo --- src/transforms/{babelASTConvertor.js => babelASTConverter.js} | 0 test/babel.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/transforms/{babelASTConvertor.js => babelASTConverter.js} (100%) diff --git a/src/transforms/babelASTConvertor.js b/src/transforms/babelASTConverter.js similarity index 100% rename from src/transforms/babelASTConvertor.js rename to src/transforms/babelASTConverter.js diff --git a/test/babel.js b/test/babel.js index fe4cf010d29..e2e45d3e72a 100644 --- a/test/babel.js +++ b/test/babel.js @@ -1,6 +1,6 @@ const babelCore = require('@babel/core'); const fs = require('../src/utils/fs'); -const BabelASTConvertor = require('../src/transforms/babelASTConvertor'); +const BabelASTConvertor = require('../src/transforms/babelASTConverter'); const path = require('path'); const BabelFlowPreset = require('@babel/preset-flow'); const babelPresetEnv = require('@babel/preset-env'); From b0fa467fcfdc7cf0ef82809ad41fe00c86c4fc5a Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Fri, 31 Aug 2018 10:35:12 -0700 Subject: [PATCH 22/43] add babel-runtime --- package.json | 2 ++ src/.babelrc | 1 + test/.babelrc | 1 + yarn.lock | 20 +++++++++++++++++++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index d1c9fab36d7..48515a1fdec 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.0.0", "@babel/plugin-transform-react-jsx": "^7.0.0", "@babel/preset-env": "^7.0.0", + "@babel/runtime": "^7.0.0", "@babel/template": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", @@ -73,6 +74,7 @@ }, "devDependencies": { "@babel/cli": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", "@babel/preset-flow": "^7.0.0", "@babel/register": "^7.0.0", "@vue/component-compiler-utils": "^2.0.0", diff --git a/src/.babelrc b/src/.babelrc index 76f70cd2639..b42df74e6ff 100644 --- a/src/.babelrc +++ b/src/.babelrc @@ -4,5 +4,6 @@ "node": "6" } }]], + "plugins": ["@babel/plugin-transform-runtime"], "ignore": ["builtins"] } diff --git a/test/.babelrc b/test/.babelrc index dcbe7cc5cd4..4465e6da664 100644 --- a/test/.babelrc +++ b/test/.babelrc @@ -4,5 +4,6 @@ "node": "current" } }]], + "plugins": ["@babel/plugin-transform-runtime"], "ignore": ["integration", "input", "dist"] } diff --git a/yarn.lock b/yarn.lock index fea31fffa06..519eb8ef8e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -466,6 +466,14 @@ dependencies: regenerator-transform "^0.13.3" +"@babel/plugin-transform-runtime@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0.tgz#0f1443c07bac16dba8efa939e0c61d6922740062" + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + "@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" @@ -571,6 +579,12 @@ pirates "^4.0.0" source-map-support "^0.5.9" +"@babel/runtime@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + dependencies: + regenerator-runtime "^0.12.0" + "@babel/template@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" @@ -6525,6 +6539,10 @@ regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -6703,7 +6721,7 @@ resolve@^1.0.0, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.4.0: dependencies: path-parse "^1.0.5" -resolve@^1.3.2: +resolve@^1.3.2, resolve@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: From 2173572910d19b3430870ecb43886993b25f2f35 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Fri, 31 Aug 2018 10:44:26 -0700 Subject: [PATCH 23/43] add babel-runtime for smaller pkg size --- test/integration/dynamic-hoist/.babelrc | 3 +++ test/integration/dynamic-references-raw/.babelrc | 3 +++ test/integration/es6/.babelrc | 3 +++ test/integration/es6/package.json | 4 ++++ test/integration/js-same-contents-same-dependencies/.babelrc | 3 +++ test/integration/object-rest-spread/.babelrc | 3 +++ 6 files changed, 19 insertions(+) create mode 100644 test/integration/dynamic-hoist/.babelrc create mode 100644 test/integration/dynamic-references-raw/.babelrc create mode 100644 test/integration/es6/.babelrc create mode 100644 test/integration/es6/package.json create mode 100644 test/integration/js-same-contents-same-dependencies/.babelrc create mode 100644 test/integration/object-rest-spread/.babelrc diff --git a/test/integration/dynamic-hoist/.babelrc b/test/integration/dynamic-hoist/.babelrc new file mode 100644 index 00000000000..077404aaa41 --- /dev/null +++ b/test/integration/dynamic-hoist/.babelrc @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/test/integration/dynamic-references-raw/.babelrc b/test/integration/dynamic-references-raw/.babelrc new file mode 100644 index 00000000000..077404aaa41 --- /dev/null +++ b/test/integration/dynamic-references-raw/.babelrc @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/test/integration/es6/.babelrc b/test/integration/es6/.babelrc new file mode 100644 index 00000000000..077404aaa41 --- /dev/null +++ b/test/integration/es6/.babelrc @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/test/integration/es6/package.json b/test/integration/es6/package.json new file mode 100644 index 00000000000..ea19cf4f5c8 --- /dev/null +++ b/test/integration/es6/package.json @@ -0,0 +1,4 @@ +{ + "name": "es6", + "private": true +} diff --git a/test/integration/js-same-contents-same-dependencies/.babelrc b/test/integration/js-same-contents-same-dependencies/.babelrc new file mode 100644 index 00000000000..077404aaa41 --- /dev/null +++ b/test/integration/js-same-contents-same-dependencies/.babelrc @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file diff --git a/test/integration/object-rest-spread/.babelrc b/test/integration/object-rest-spread/.babelrc new file mode 100644 index 00000000000..077404aaa41 --- /dev/null +++ b/test/integration/object-rest-spread/.babelrc @@ -0,0 +1,3 @@ +{ + +} \ No newline at end of file From 16d9fa7c5921a575f1dba9a71e237ec03636f8bc Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Fri, 31 Aug 2018 14:33:06 -0700 Subject: [PATCH 24/43] run babel 7 => babel 6 => babel 7 --- src/assets/JSAsset.js | 16 +++++++----- src/transforms/babel.js | 54 +++++++++++++++++++++++++++++------------ 2 files changed, 48 insertions(+), 22 deletions(-) diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 80e09eef76d..25912dc576c 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -77,12 +77,16 @@ class JSAsset extends Asset { }; // Check if there is a babel config file. If so, determine which parser plugins to enable - this.babelConfig = await babel.getConfig(this); - Object.assign(options, this.babelConfig); - // if (this.babelConfig) { - // const file = new BabelFile(this.babelConfig); - // options.plugins.push(...file.parserOpts.plugins); - // } + let babelConfig = await babel.getConfig(this); + + if (babelConfig && babelConfig.babelVersion !== 6) { + this.babelConfig = await babel.getConfig(this); + Object.assign(options, this.babelConfig); + // if (this.babelConfig) { + // const file = new BabelFile(this.babelConfig); + // options.plugins.push(...file.parserOpts.plugins); + // } + } return options; } diff --git a/src/transforms/babel.js b/src/transforms/babel.js index a7cf5aa1150..9fd1c25ffb6 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -2,8 +2,8 @@ const presetEnv = require('@babel/preset-env'); const getTargetEngines = require('../utils/getTargetEngines'); const localRequire = require('../utils/localRequire'); const path = require('path'); -// const {util: babelUtils} = require('@babel/core'); const fs = require('../utils/fs'); +const babelASTConverter = require('./babelASTConverter'); const NODE_MODULES = `${path.sep}node_modules${path.sep}`; const ENV_PLUGINS = require('@babel/preset-env/data/plugins'); @@ -35,6 +35,24 @@ async function babelTransform(asset) { await asset.parseIfNeeded(); + // Pre-Transform Babel 6 + if (config.babelVersion && config.babelVersion === 6) { + // Flag it as Babel 6 so we skip config fetching for Babel 6 + asset.isBabel6 = true; + + let babel6 = await localRequire('babel-core', asset.name); + asset.ast = babelASTConverter(asset.ast, 7); + let res = babel6.transformFromAst(asset.ast, asset.contents, config); + if (res.ast) { + asset.ast = res.ast; + asset.isAstDirty = true; + } + + asset.ast = babelASTConverter(asset.ast, 6); + + return babelTransform(asset); + } + // If this is an internally generated config, use our internal @babel/core, // otherwise require a local version from the package we're compiling. let babel = config.internal @@ -70,6 +88,14 @@ async function getConfig(asset) { value: internal, configurable: true }); + + // Hide config version from babel + let babelVersion = config.babelVersion; + delete config.babelVersion; + Object.defineProperty(config, 'babelVersion', { + value: babelVersion, + configurable: true + }); } return config; @@ -99,16 +125,14 @@ async function getBabelConfig(asset) { !asset.name.includes(NODE_MODULES); // Try to resolve a .babelrc file. If one is found, consider the module source code. - let babelrc = await getBabelRc(asset, isSource); - let isBabel7 = true; - if (babelrc) { - isBabel7 = babelrc.version === 7; - babelrc = babelrc.config; - - if (!isBabel7) { - console.log('Found a babel 6 module in: ', asset.name); + let babelrc = null; + if (asset.isBabel6 !== true) { + babelrc = await getBabelRc(asset, isSource); + if (babelrc && babelrc.babelVersion === 6) { + return babelrc; } } + isSource = isSource || !!babelrc; let envConfig = await getEnvConfig(asset, isSource); @@ -211,7 +235,7 @@ function testPluginArrayForBabelScope(plugins) { return false; } -function isBabel7Config(babelrc) { +function isBabel7Config(babelrc = {}) { if (!babelrc.presets && !babelrc.presets) { return true; } @@ -262,12 +286,10 @@ async function getBabelRc(asset, isSource) { // Otherwise, don't load .babelrc for node_modules. // See https://github.com/parcel-bundler/parcel/issues/13. - return babelrc - ? { - version: isBabel7Config(babelrc) ? 7 : 6, - config: babelrc - } - : null; + if (babelrc) { + babelrc.babelVersion = isBabel7Config(babelrc) ? 7 : 6; + } + return babelrc; } async function findBabelRc(asset) { From 112ebf345742efa0152f1a3f576adab9698511ef Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Fri, 31 Aug 2018 15:21:02 -0700 Subject: [PATCH 25/43] cleanup & add parsing for Babel 6 --- package.json | 1 + src/assets/JSAsset.js | 29 ++++++++++++++++++++++------- src/transforms/babel.js | 22 ++++++++++------------ 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 48515a1fdec..fa8ac203e47 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "@vue/component-compiler-utils": "^2.0.0", "babel-core": "^6.26.3", "babel-preset-env": "^1.7.0", + "babylon": "^6.18.0", "bsb-js": "^1.0.1", "codecov": "^3.0.0", "coffeescript": "^2.0.3", diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 25912dc576c..e39e72f0cd4 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -5,6 +5,7 @@ const collectDependencies = require('../visitors/dependencies'); const walk = require('babylon-walk'); const Asset = require('../Asset'); // const babylon = require('@babel/parser'); +const localRequire = require('../utils/localRequire'); const insertGlobals = require('../visitors/globals'); const fsVisitor = require('../visitors/fs'); const envVisitor = require('../visitors/env'); @@ -62,7 +63,7 @@ class JSAsset extends Asset { async getParserOptions() { // Babylon options. We enable a few plugins by default. - const options = { + let options = { parserOpts: { filename: this.name, allowReturnOutsideFunction: true, @@ -71,17 +72,26 @@ class JSAsset extends Asset { strictMode: false, sourceType: 'module', locations: true, - tokens: true, // TODO: Set this to false if there is no babel 6 config plugins: ['exportExtensions', 'dynamicImport'] } }; // Check if there is a babel config file. If so, determine which parser plugins to enable - let babelConfig = await babel.getConfig(this); + this.babelConfig = await babel.getConfig(this); + if (this.babelConfig) { + if (this.babelConfig.babelVersion === 6) { + options.parserOpts.tokens = true; + options = options.parserOpts; + } - if (babelConfig && babelConfig.babelVersion !== 6) { - this.babelConfig = await babel.getConfig(this); Object.assign(options, this.babelConfig); + + let babelVersion = this.babelConfig.babelVersion; + Object.defineProperty(options, 'babelVersion', { + value: babelVersion, + configurable: true + }); + // if (this.babelConfig) { // const file = new BabelFile(this.babelConfig); // options.plugins.push(...file.parserOpts.plugins); @@ -93,8 +103,13 @@ class JSAsset extends Asset { async parse(code) { const options = await this.getParserOptions(); - // return babylon.parse(code, options); - return babelCore.parse(code, options); + + if (options.babelVersion === 6) { + let babylon = await localRequire('babylon', this.name); + return babylon.parse(code, options); + } else { + return babelCore.parse(code, options); + } } traverse(visitor) { diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 9fd1c25ffb6..a1139b08bca 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -27,8 +27,8 @@ const JSX_PRAGMA = { hyperapp: 'h' }; -async function babelTransform(asset) { - let config = await getConfig(asset); +async function babelTransform(asset, version) { + let config = await getConfig(asset, version); if (!config) { return; } @@ -37,11 +37,7 @@ async function babelTransform(asset) { // Pre-Transform Babel 6 if (config.babelVersion && config.babelVersion === 6) { - // Flag it as Babel 6 so we skip config fetching for Babel 6 - asset.isBabel6 = true; - let babel6 = await localRequire('babel-core', asset.name); - asset.ast = babelASTConverter(asset.ast, 7); let res = babel6.transformFromAst(asset.ast, asset.contents, config); if (res.ast) { asset.ast = res.ast; @@ -50,7 +46,7 @@ async function babelTransform(asset) { asset.ast = babelASTConverter(asset.ast, 6); - return babelTransform(asset); + return babelTransform(asset, 7); } // If this is an internally generated config, use our internal @babel/core, @@ -73,8 +69,8 @@ async function babelTransform(asset) { module.exports = babelTransform; -async function getConfig(asset) { - let config = await getBabelConfig(asset); +async function getConfig(asset, version) { + let config = await getBabelConfig(asset, version); if (config) { config.code = false; config.ast = true; @@ -103,7 +99,7 @@ async function getConfig(asset) { babelTransform.getConfig = getConfig; -async function getBabelConfig(asset) { +async function getBabelConfig(asset, version) { // If asset is marked as an ES6 modules, this is a second pass after dependencies are extracted. // Just compile modules to CommonJS. if (asset.isES6Module) { @@ -114,7 +110,9 @@ async function getBabelConfig(asset) { } if (asset.babelConfig) { - return asset.babelConfig; + if (asset.babelConfig.babelVersion === version) { + return asset.babelConfig; + } } // Consider the module source code rather than precompiled if the resolver @@ -126,7 +124,7 @@ async function getBabelConfig(asset) { // Try to resolve a .babelrc file. If one is found, consider the module source code. let babelrc = null; - if (asset.isBabel6 !== true) { + if (!asset.babelConfig) { babelrc = await getBabelRc(asset, isSource); if (babelrc && babelrc.babelVersion === 6) { return babelrc; From 0dd2663e3c4fec17786255d81ea4406b1009feae Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Fri, 31 Aug 2018 15:29:52 -0700 Subject: [PATCH 26/43] cleanup some comments --- src/transforms/babel.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/transforms/babel.js b/src/transforms/babel.js index a1139b08bca..645b77c7449 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -55,11 +55,6 @@ async function babelTransform(asset, version) { ? require('@babel/core') : await localRequire('@babel/core', asset.name); - // TODO: support other versions of babel - // if (parseInt(babel.version, 10) !== 6) { - // throw new Error(`Unsupported babel version: ${babel.version}`); - // } - let res = babel.transformFromAst(asset.ast, asset.contents, config); if (res.ast) { asset.ast = res.ast; @@ -359,13 +354,6 @@ async function getEnvPlugins(targets, useBuiltIns = false) { } ).plugins; - // @babel/preset-env version 6.x does not cover object-rest-spread so always - // add it. - // plugins.push([ - // require('babel-plugin-transform-object-rest-spread'), - // {useBuiltIns} - // ]); - envCache.set(key, plugins); return plugins; } From 367d5ec3543df974ddfebf4ca20f288f8f5f0711 Mon Sep 17 00:00:00 2001 From: DeMoorJasper Date: Fri, 31 Aug 2018 16:49:19 -0700 Subject: [PATCH 27/43] cleanup the empty babel files --- test/integration/dynamic-hoist/.babelrc | 3 --- test/integration/dynamic-references-raw/.babelrc | 3 --- test/integration/es6/.babelrc | 3 --- test/integration/es6/package.json | 4 ---- test/integration/js-same-contents-same-dependencies/.babelrc | 3 --- test/integration/object-rest-spread/.babelrc | 3 --- 6 files changed, 19 deletions(-) delete mode 100644 test/integration/dynamic-hoist/.babelrc delete mode 100644 test/integration/dynamic-references-raw/.babelrc delete mode 100644 test/integration/es6/.babelrc delete mode 100644 test/integration/es6/package.json delete mode 100644 test/integration/js-same-contents-same-dependencies/.babelrc delete mode 100644 test/integration/object-rest-spread/.babelrc diff --git a/test/integration/dynamic-hoist/.babelrc b/test/integration/dynamic-hoist/.babelrc deleted file mode 100644 index 077404aaa41..00000000000 --- a/test/integration/dynamic-hoist/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/test/integration/dynamic-references-raw/.babelrc b/test/integration/dynamic-references-raw/.babelrc deleted file mode 100644 index 077404aaa41..00000000000 --- a/test/integration/dynamic-references-raw/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/test/integration/es6/.babelrc b/test/integration/es6/.babelrc deleted file mode 100644 index 077404aaa41..00000000000 --- a/test/integration/es6/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/test/integration/es6/package.json b/test/integration/es6/package.json deleted file mode 100644 index ea19cf4f5c8..00000000000 --- a/test/integration/es6/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "es6", - "private": true -} diff --git a/test/integration/js-same-contents-same-dependencies/.babelrc b/test/integration/js-same-contents-same-dependencies/.babelrc deleted file mode 100644 index 077404aaa41..00000000000 --- a/test/integration/js-same-contents-same-dependencies/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/test/integration/object-rest-spread/.babelrc b/test/integration/object-rest-spread/.babelrc deleted file mode 100644 index 077404aaa41..00000000000 --- a/test/integration/object-rest-spread/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file From 4b65127c369c485a287abf022513f07d2bd3e2f3 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sun, 9 Sep 2018 11:02:27 -0700 Subject: [PATCH 28/43] wip --- src/assets/JSAsset.js | 10 +--- src/transforms/babel.js | 103 ++++++++++++++++++++++++++-------------- test/babel.js | 2 +- test/javascript.js | 4 +- 4 files changed, 72 insertions(+), 47 deletions(-) diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index e39e72f0cd4..8491b9d791a 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -81,7 +81,7 @@ class JSAsset extends Asset { if (this.babelConfig) { if (this.babelConfig.babelVersion === 6) { options.parserOpts.tokens = true; - options = options.parserOpts; + // options = options.parserOpts; } Object.assign(options, this.babelConfig); @@ -103,13 +103,7 @@ class JSAsset extends Asset { async parse(code) { const options = await this.getParserOptions(); - - if (options.babelVersion === 6) { - let babylon = await localRequire('babylon', this.name); - return babylon.parse(code, options); - } else { - return babelCore.parse(code, options); - } + return babelCore.parse(code, options); } traverse(visitor) { diff --git a/src/transforms/babel.js b/src/transforms/babel.js index 645b77c7449..2e809fae62a 100644 --- a/src/transforms/babel.js +++ b/src/transforms/babel.js @@ -4,6 +4,8 @@ const localRequire = require('../utils/localRequire'); const path = require('path'); const fs = require('../utils/fs'); const babelASTConverter = require('./babelASTConverter'); +const babelCore = require('@babel/core'); +const {buildRootChain} = require('@babel/core/lib/config/config-chain'); const NODE_MODULES = `${path.sep}node_modules${path.sep}`; const ENV_PLUGINS = require('@babel/preset-env/data/plugins'); @@ -53,7 +55,7 @@ async function babelTransform(asset, version) { // otherwise require a local version from the package we're compiling. let babel = config.internal ? require('@babel/core') - : await localRequire('@babel/core', asset.name); + : await localRequire(config.babelVersion === 6 ? 'babel-core' : '@babel/core', asset.name); let res = babel.transformFromAst(asset.ast, asset.contents, config); if (res.ast) { @@ -89,6 +91,7 @@ async function getConfig(asset, version) { }); } + console.log(config) return config; } @@ -105,9 +108,9 @@ async function getBabelConfig(asset, version) { } if (asset.babelConfig) { - if (asset.babelConfig.babelVersion === version) { + // if (asset.babelConfig.babelVersion === version) { return asset.babelConfig; - } + // } } // Consider the module source code rather than precompiled if the resolver @@ -118,12 +121,9 @@ async function getBabelConfig(asset, version) { !asset.name.includes(NODE_MODULES); // Try to resolve a .babelrc file. If one is found, consider the module source code. - let babelrc = null; - if (!asset.babelConfig) { - babelrc = await getBabelRc(asset, isSource); - if (babelrc && babelrc.babelVersion === 6) { - return babelrc; - } + let babelrc = await getBabelRc(asset, isSource); + if (babelrc) { + babelrc.babelVersion = getBabelVersion(babelrc); } isSource = isSource || !!babelrc; @@ -182,7 +182,6 @@ async function getBabelConfig(asset, version) { if (envConfig && (envConfig.plugins.length > 0 || jsxConfig || flowConfig)) { mergeConfigs(envConfig, jsxConfig); mergeConfigs(envConfig, flowConfig); - return envConfig; } @@ -209,6 +208,14 @@ function mergeConfigs(a, b) { return a; } +function getBabel6TransformPlugin(asset) { + return function () { + return { + + }; + }; +} + function hasPlugin(arr, plugins) { return ( Array.isArray(arr) && arr.some(p => plugins.includes(getPluginName(p))) @@ -216,31 +223,29 @@ function hasPlugin(arr, plugins) { } function getPluginName(p) { - return Array.isArray(p) ? p[0] : p; + // return Array.isArray(p) ? p[0] : p; + return p.file ? p.file.request : ''; } -function testPluginArrayForBabelScope(plugins) { - for (let plugin of plugins) { - if (getPluginName(plugin).startsWith('@babel/')) { - return true; - } - } - return false; +function hasBabel7Plugin(plugins) { + return plugins.some(plugin => + getPluginName(plugin).startsWith('@babel/') + ); } -function isBabel7Config(babelrc = {}) { +function getBabelVersion(babelrc = {}) { if (!babelrc.presets && !babelrc.presets) { - return true; + return 7; } if ( - (babelrc.presets && testPluginArrayForBabelScope(babelrc.presets)) || - (babelrc.plugins && testPluginArrayForBabelScope(babelrc.plugins)) + (babelrc.presets && hasBabel7Plugin(babelrc.presets)) || + (babelrc.plugins && hasBabel7Plugin(babelrc.plugins)) ) { - return true; + return 7; } - return false; + return 6; } /** @@ -263,32 +268,58 @@ async function getBabelRc(asset, isSource) { // If specified as an array, override the config with the one specified if (Array.isArray(babelify) && babelify[1]) { - babelrc = babelify[1]; + return babelify[1]; } // Otherwise, return the .babelrc if babelify was found - if (!babelrc && babelify) { - babelrc = await findBabelRc(asset); - } + return babelify ? await findBabelRc(asset) : null; } // If this asset is not in node_modules, always use the .babelrc - if (!babelrc && isSource) { - babelrc = await findBabelRc(asset); + if (isSource) { + return await findBabelRc(asset); } // Otherwise, don't load .babelrc for node_modules. // See https://github.com/parcel-bundler/parcel/issues/13. - if (babelrc) { - babelrc.babelVersion = isBabel7Config(babelrc) ? 7 : 6; - } - return babelrc; + return null; } async function findBabelRc(asset) { - return await asset.getConfig(['.babelrc', '.babelrc.js'], { - packageKey: 'babel' + // return await asset.getConfig(['.babelrc', '.babelrc.js'], { + // packageKey: 'babel' + // }); + let config = babelCore.loadPartialConfig({ + filename: asset.name }); + // let chain = buildRootChain({filename: asset.name}, { + // filename: asset.name, + // cwd: process.cwd(), + // root: process.cwd(), + // envName: process.env.NODE_ENV + // }); + // console.log(chain) + + if (config) { + for (let file in [config.babelrc, config.babelignore, config.config]) { + if (file) { + asset.addDependency(file, {includedInParent: true}); + } + } + + return config.options; + } +} + +function getBabel6Config(config) { + let res = Object.assign({}, config); + delete res.configFile + delete res.envName; + delete res.cwd; + delete res.root; + res.plugins = (res.plugins || []).map(p => p._descriptor); + res.presets = (res.presets || []).map(p => p._descriptor); + return res; } /*function shouldIgnoreBabelrc(filename, babelrc) { diff --git a/test/babel.js b/test/babel.js index e2e45d3e72a..8aa84697e15 100644 --- a/test/babel.js +++ b/test/babel.js @@ -7,7 +7,7 @@ const babelPresetEnv = require('@babel/preset-env'); const traverse = require('@babel/traverse').default; const assert = require('assert'); -describe.only('Babel', function() { +describe('Babel', function() { let ast; before(async function() { const options = { diff --git a/test/javascript.js b/test/javascript.js index 2d9424d94ce..8912a30c10f 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -28,7 +28,7 @@ describe.only('javascript', function() { assert.equal(output.default(), 3); }); - it('should produce a basic JS bundle using Babel 6', async function() { + it.only('should produce a basic JS bundle using Babel 6', async function() { let b = await bundle( __dirname + '/integration/babel-6-compatibility/index.js' ); @@ -938,7 +938,7 @@ describe.only('javascript', function() { assert(json.includes('{a:1,b:{c:2}}')); }); - it('should support compiling with babel using .babelrc config', async function() { + it.only('should support compiling with babel using .babelrc config', async function() { await bundle(__dirname + '/integration/babel/index.js'); let file = await fs.readFile(__dirname + '/dist/index.js', 'utf8'); From 62b5b4fee822c4f098d1d5c97c675b27dd5a62e0 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sun, 9 Sep 2018 21:29:34 -0700 Subject: [PATCH 29/43] refactor --- src/assets/JSAsset.js | 28 +++-- .../astConverter.js} | 9 +- src/transforms/babel/babel6.js | 19 +++ src/transforms/babel/babel7.js | 29 +++++ src/transforms/babel/babelrc.js | 83 +++++++++++++ src/transforms/babel/config.js | 110 ++++++++++++++++++ src/transforms/babel/env.js | 65 +++++++++++ src/transforms/babel/flow.js | 18 +++ src/transforms/babel/jsx.js | 51 ++++++++ src/transforms/babel/transform.js | 19 +++ test/babel.js | 2 +- 11 files changed, 415 insertions(+), 18 deletions(-) rename src/transforms/{babelASTConverter.js => babel/astConverter.js} (91%) create mode 100644 src/transforms/babel/babel6.js create mode 100644 src/transforms/babel/babel7.js create mode 100644 src/transforms/babel/babelrc.js create mode 100644 src/transforms/babel/config.js create mode 100644 src/transforms/babel/env.js create mode 100644 src/transforms/babel/flow.js create mode 100644 src/transforms/babel/jsx.js create mode 100644 src/transforms/babel/transform.js diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 8491b9d791a..0606b85f419 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -4,12 +4,13 @@ const codeFrame = require('@babel/code-frame').codeFrameColumns; const collectDependencies = require('../visitors/dependencies'); const walk = require('babylon-walk'); const Asset = require('../Asset'); -// const babylon = require('@babel/parser'); +const babelParser = require('@babel/parser'); const localRequire = require('../utils/localRequire'); const insertGlobals = require('../visitors/globals'); const fsVisitor = require('../visitors/fs'); const envVisitor = require('../visitors/env'); -const babel = require('../transforms/babel'); +const babel = require('../transforms/babel/transform'); +const babel7 = require('../transforms/babel/babel7'); const generate = require('@babel/generator').default; const terser = require('../transforms/terser'); const SourceMap = require('../SourceMap'); @@ -67,12 +68,9 @@ class JSAsset extends Asset { parserOpts: { filename: this.name, allowReturnOutsideFunction: true, - allowHashBang: true, - ecmaVersion: Infinity, strictMode: false, sourceType: 'module', - locations: true, - plugins: ['exportExtensions', 'dynamicImport'] + plugins: ['exportExtensions', 'exportDefaultFrom', 'exportNamespaceFrom', 'dynamicImport'] } }; @@ -102,8 +100,15 @@ class JSAsset extends Asset { } async parse(code) { - const options = await this.getParserOptions(); - return babelCore.parse(code, options); + // const options = await this.getParserOptions(); + // return babelCore.parse(code, options); + await babel(this); + if (!this.ast) { + console.log('NO AST') + this.ast = babelParser.parse(code); + } + + return this.ast; } traverse(visitor) { @@ -195,7 +200,7 @@ class JSAsset extends Asset { async pretransform() { await this.loadSourceMap(); - await babel(this); + // await babel(this); // Inline environment variables if (this.options.target === 'browser' && ENV_RE.test(this.contents)) { @@ -232,7 +237,10 @@ class JSAsset extends Asset { this.isAstDirty = true; } else { if (this.isES6Module) { - await babel(this); + // await babel(this); + await babel7(this, { + plugins: [require('@babel/plugin-transform-modules-commonjs')] + }); } } diff --git a/src/transforms/babelASTConverter.js b/src/transforms/babel/astConverter.js similarity index 91% rename from src/transforms/babelASTConverter.js rename to src/transforms/babel/astConverter.js index 2653a2c6a51..4d9a51bb2b2 100644 --- a/src/transforms/babelASTConverter.js +++ b/src/transforms/babel/astConverter.js @@ -101,10 +101,5 @@ function babel6toBabel7(ast) { return ast; } -module.exports = function(ast, version) { - if (![6, 7].includes(version)) { - throw new Error('This convertor only supports Babel 6 and 7 ASTs'); - } - - return version === 7 ? babel7toBabel6(ast) : babel6toBabel7(ast); -}; +exports.babel7toBabel6 = babel7toBabel6; +exports.babel6toBabel7 = babel6toBabel7; diff --git a/src/transforms/babel/babel6.js b/src/transforms/babel/babel6.js new file mode 100644 index 00000000000..d67bbcdfbe7 --- /dev/null +++ b/src/transforms/babel/babel6.js @@ -0,0 +1,19 @@ +const localRequire = require('../../utils/localRequire'); +const {babel6toBabel7} = require('./astConverter'); + +async function babel6(asset, config) { + let babel = await localRequire('babel-core', asset.name); + + config.code = false; + config.ast = true; + config.filename = asset.name; + config.babelrc = false; + + let res = babel.transform(asset.contents, config); + if (res.ast) { + asset.ast = babel6toBabel7(res.ast); + asset.isAstDirty = true; + } +} + +module.exports = babel6; diff --git a/src/transforms/babel/babel7.js b/src/transforms/babel/babel7.js new file mode 100644 index 00000000000..b2fd33b2d30 --- /dev/null +++ b/src/transforms/babel/babel7.js @@ -0,0 +1,29 @@ +const localRequire = require('../../utils/localRequire'); + +async function babel7(asset, config) { + // If this is an internally generated config, use our internal @babel/core, + // otherwise require a local version from the package we're compiling. + let babel = config.internal + ? require('@babel/core') + : await localRequire('@babel/core', asset.name); + + config.code = false; + config.ast = true; + config.filename = asset.name; + config.babelrc = false; + config.configFile = false; + + let res; + if (asset.ast) { + res = babel.transformFromAst(asset.ast, asset.contents, config); + } else { + res = babel.transformSync(asset.contents, config); + } + + if (res.ast) { + asset.ast = res.ast; + asset.isAstDirty = true; + } +} + +module.exports = babel7; diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js new file mode 100644 index 00000000000..ffeacbad8d6 --- /dev/null +++ b/src/transforms/babel/babelrc.js @@ -0,0 +1,83 @@ +const {buildRootChain} = require('@babel/core/lib/config/config-chain'); +const {mergeOptions} = require('@babel/core/lib/config/util'); + +async function getBabelConfig(asset, isSource) { + let config = await getBabelRc(asset, isSource); + if (!config) { + return null; + } + + return { + babelVersion: getBabelVersion(config), + config + }; +} + +module.exports = getBabelConfig; + +/** + * Finds a .babelrc for an asset. By default, .babelrc files inside node_modules are not used. + * However, there are some exceptions: + * - if `browserify.transforms` includes "babelify" in package.json (for legacy module compat) + * - the `source` field in package.json is used by the resolver + */ +async function getBabelRc(asset, isSource) { + // Support legacy browserify packages + let pkg = await asset.getPackage(); + let browserify = pkg && pkg.browserify; + if (browserify && Array.isArray(browserify.transform)) { + // Look for babelify in the browserify transform list + let babelify = browserify.transform.find( + t => (Array.isArray(t) ? t[0] : t) === 'babelify' + ); + + // If specified as an array, override the config with the one specified + if (Array.isArray(babelify) && babelify[1]) { + return babelify[1]; + } + + // Otherwise, return the .babelrc if babelify was found + return babelify ? await findBabelRc(asset) : null; + } + + // If this asset is not in node_modules, always use the .babelrc + if (isSource) { + return await findBabelRc(asset); + } + + // Otherwise, don't load .babelrc for node_modules. + // See https://github.com/parcel-bundler/parcel/issues/13. + return null; +} + +async function findBabelRc(asset) { + // TODO: support babelignore, etc. + return await asset.getConfig(['.babelrc', '.babelrc.js'], { + packageKey: 'babel' + }); +} + +function getBabelVersion(babelrc) { + if (!babelrc.presets && !babelrc.presets) { + return 7; + } + + if ( + (babelrc.presets && hasBabel7Plugin(babelrc.presets)) || + (babelrc.plugins && hasBabel7Plugin(babelrc.plugins)) + ) { + return 7; + } + + return 6; +} + +function hasBabel7Plugin(plugins) { + return plugins.some(plugin => + getPluginName(plugin).startsWith('@babel/') + ); +} + +function getPluginName(p) { + return Array.isArray(p) ? p[0] : p; +} diff --git a/src/transforms/babel/config.js b/src/transforms/babel/config.js new file mode 100644 index 00000000000..7f99e0e5466 --- /dev/null +++ b/src/transforms/babel/config.js @@ -0,0 +1,110 @@ +const getBabelRc = require('./babelrc'); +const getEnvConfig = require('./env'); +const getJSXConfig = require('./jsx'); +const getFlowConfig = require('./flow'); +const path = require('path'); + +const NODE_MODULES = `${path.sep}node_modules${path.sep}`; +const ENV_PLUGINS = require('@babel/preset-env/data/plugins'); +const ENV_PRESETS = { + es2015: true, + es2016: true, + es2017: true, + latest: true, + env: true, + '@babel/preset-env': true, + '@babel/env': true +}; + +async function getBabelConfig(asset) { + // Consider the module source code rather than precompiled if the resolver + // used the `source` field, or it is not in node_modules. + let pkg = await asset.getPackage(); + let isSource = + !!(pkg && pkg.source && (await fs.realpath(asset.name)) !== asset.name) || + !asset.name.includes(NODE_MODULES); + + // Try to resolve a .babelrc file. If one is found, consider the module source code. + let babelrc = await getBabelRc(asset, isSource); + isSource = isSource || !!babelrc; + + let envConfig = await getEnvConfig(asset, isSource); + let jsxConfig = await getJSXConfig(asset, isSource); + let flowConfig = getFlowConfig(asset, isSource); + + if (babelrc && envConfig) { + // Filter out presets that are already applied by @babel/preset-env + if (Array.isArray(babelrc.config.presets)) { + babelrc.config.presets = babelrc.config.presets.filter(preset => { + return !ENV_PRESETS[getPluginName(preset)]; + }); + } + + // Filter out plugins that are already applied by @babel/preset-env + if (Array.isArray(babelrc.config.plugins)) { + babelrc.config.plugins = babelrc.config.plugins.filter(plugin => { + return !ENV_PLUGINS[getPluginName(plugin)]; + }); + } + } + + let result = {}; + mergeConfigs(result, babelrc); + mergeConfigs(result, envConfig); + + // Add JSX config if it isn't already specified in the babelrc + let hasReact = + babelrc && + hasPlugin(babelrc.config.presets, ['react', '@babel/preset-react']) || + hasPlugin(babelrc.config.plugins, [ + 'transform-react-jsx', + '@babel/plugin-transform-react-jsx' + ]); + + if (!hasReact) { + mergeConfigs(babelrc, jsxConfig); + } + + // Add Flow stripping config if it isn't already specified in the babelrc + let hasFlow = + babelrc && + hasPlugin(babelrc.config.plugins, [ + 'transform-flow-strip-types', + '@babel/plugin-transform-flow-strip-types' + ]); + + if (!hasFlow) { + mergeConfigs(babelrc, flowConfig); + } + + return result; +} + +module.exports = getBabelConfig; + +function mergeConfigs(result, config) { + if (!config || ((!config.config.presets || config.config.presets.length === 0) && (!config.config.plugins || config.config.plugins.length === 0))) { + return; + } + + let merged = result[config.babelVersion]; + if (merged) { + merged.presets = (merged.presets || []).concat(config.config.presets || []); + merged.plugins = (merged.plugins || []).concat(config.config.plugins || []); + } else { + result[config.babelVersion] = config.config; + } + + return merged; +} + +function hasPlugin(arr, plugins) { + return ( + Array.isArray(arr) && arr.some(p => plugins.includes(getPluginName(p))) + ); +} + +function getPluginName(p) { + return Array.isArray(p) ? p[0] : p; +} + diff --git a/src/transforms/babel/env.js b/src/transforms/babel/env.js new file mode 100644 index 00000000000..39154f275b2 --- /dev/null +++ b/src/transforms/babel/env.js @@ -0,0 +1,65 @@ +const presetEnv = require('@babel/preset-env'); +const getTargetEngines = require('../../utils/getTargetEngines'); + +/** + * Generates a @babel/preset-env config for an asset. + * This is done by finding the source module's target engines, and the app's + * target engines, and doing a diff to include only the necessary plugins. + */ +async function getEnvConfig(asset, isSourceModule) { + // Load the target engines for the app and generate a @babel/preset-env config + let targetEngines = await getTargetEngines(asset, true); + let targetEnv = await getEnvPlugins(targetEngines, true); + if (!targetEnv) { + return null; + } + + // If this is the app module, the source and target will be the same, so just compile everything. + // Otherwise, load the source engines and generate a babel-present-env config. + if (!isSourceModule) { + let sourceEngines = await getTargetEngines(asset, false); + let sourceEnv = (await getEnvPlugins(sourceEngines, false)) || targetEnv; + + // Do a diff of the returned plugins. We only need to process the remaining plugins to get to the app target. + let sourcePlugins = new Set(sourceEnv.map(p => p[0])); + targetEnv = targetEnv.filter(plugin => { + return !sourcePlugins.has(plugin[0]); + }); + } + + return { + internal: true, + babelVersion: 7, + config: { + plugins: targetEnv, + } + }; +} + +const envCache = new Map(); + +async function getEnvPlugins(targets, useBuiltIns = false) { + if (!targets) { + return null; + } + + let key = JSON.stringify(targets); + if (envCache.has(key)) { + return envCache.get(key); + } + + let plugins = presetEnv.default( + {assertVersion: () => true}, + { + targets, + modules: false, + useBuiltIns: useBuiltIns ? 'entry' : false, + shippedProposals: true + } + ).plugins; + + envCache.set(key, plugins); + return plugins; +} + +module.exports = getEnvConfig; diff --git a/src/transforms/babel/flow.js b/src/transforms/babel/flow.js new file mode 100644 index 00000000000..dea1768061e --- /dev/null +++ b/src/transforms/babel/flow.js @@ -0,0 +1,18 @@ +/** + * Generates a babel config for stripping away Flow types. + */ +function getFlowConfig(asset) { + if (/^(\/{2}|\/\*+) *@flow/.test(asset.contents.substring(0, 20))) { + return { + internal: true, + babelVersion: 7, + config: { + plugins: [[require('@babel/plugin-transform-flow-strip-types')]] + } + }; + } + + return null; +} + +module.exports = getFlowConfig; diff --git a/src/transforms/babel/jsx.js b/src/transforms/babel/jsx.js new file mode 100644 index 00000000000..600f4aef4d0 --- /dev/null +++ b/src/transforms/babel/jsx.js @@ -0,0 +1,51 @@ +const path = require('path'); + +const JSX_EXTENSIONS = { + '.jsx': true, + '.tsx': true +}; + +const JSX_PRAGMA = { + react: 'React.createElement', + preact: 'h', + nervjs: 'Nerv.createElement', + hyperapp: 'h' +}; + +/** + * Generates a babel config for JSX. Attempts to detect react or react-like libraries + * and changes the pragma accordingly. + */ +async function getJSXConfig(asset, isSourceModule) { + // Don't enable JSX in node_modules + if (!isSourceModule) { + return null; + } + + let pkg = await asset.getPackage(); + + // Find a dependency that we can map to a JSX pragma + let pragma = null; + for (let dep in JSX_PRAGMA) { + if ( + pkg && + ((pkg.dependencies && pkg.dependencies[dep]) || + (pkg.devDependencies && pkg.devDependencies[dep])) + ) { + pragma = JSX_PRAGMA[dep]; + break; + } + } + + if (pragma || JSX_EXTENSIONS[path.extname(asset.name)]) { + return { + internal: true, + babelVersion: 7, + config: { + plugins: [[require('@babel/plugin-transform-react-jsx'), {pragma}]], + } + }; + } +} + +module.exports = getJSXConfig; diff --git a/src/transforms/babel/transform.js b/src/transforms/babel/transform.js new file mode 100644 index 00000000000..12bd5173aa3 --- /dev/null +++ b/src/transforms/babel/transform.js @@ -0,0 +1,19 @@ +const babel6 = require('./babel6'); +const babel7 = require('./babel7'); +const getBabelConfig = require('./config'); + +async function babelTransform(asset) { + let config = await getBabelConfig(asset); + + if (config[6]) { + await babel6(asset, config[6]); + } + + if (config[7]) { + await babel7(asset, config[7]); + } + + return asset.ast; +} + +module.exports = babelTransform; diff --git a/test/babel.js b/test/babel.js index 8aa84697e15..f8216a5f815 100644 --- a/test/babel.js +++ b/test/babel.js @@ -1,6 +1,6 @@ const babelCore = require('@babel/core'); const fs = require('../src/utils/fs'); -const BabelASTConvertor = require('../src/transforms/babelASTConverter'); +const BabelASTConvertor = require('../src/transforms/babel/astConverter'); const path = require('path'); const BabelFlowPreset = require('@babel/preset-flow'); const babelPresetEnv = require('@babel/preset-env'); From 5a02f3ed1e3951aa05c5bfc3bc130f9a3b39c155 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sun, 9 Sep 2018 21:32:15 -0700 Subject: [PATCH 30/43] remove old transform --- src/transforms/babel.js | 437 ---------------------------------------- 1 file changed, 437 deletions(-) delete mode 100644 src/transforms/babel.js diff --git a/src/transforms/babel.js b/src/transforms/babel.js deleted file mode 100644 index 2e809fae62a..00000000000 --- a/src/transforms/babel.js +++ /dev/null @@ -1,437 +0,0 @@ -const presetEnv = require('@babel/preset-env'); -const getTargetEngines = require('../utils/getTargetEngines'); -const localRequire = require('../utils/localRequire'); -const path = require('path'); -const fs = require('../utils/fs'); -const babelASTConverter = require('./babelASTConverter'); -const babelCore = require('@babel/core'); -const {buildRootChain} = require('@babel/core/lib/config/config-chain'); - -const NODE_MODULES = `${path.sep}node_modules${path.sep}`; -const ENV_PLUGINS = require('@babel/preset-env/data/plugins'); -const ENV_PRESETS = { - es2015: true, - es2016: true, - es2017: true, - latest: true, - env: true -}; - -const JSX_EXTENSIONS = { - '.jsx': true, - '.tsx': true -}; - -const JSX_PRAGMA = { - react: 'React.createElement', - preact: 'h', - nervjs: 'Nerv.createElement', - hyperapp: 'h' -}; - -async function babelTransform(asset, version) { - let config = await getConfig(asset, version); - if (!config) { - return; - } - - await asset.parseIfNeeded(); - - // Pre-Transform Babel 6 - if (config.babelVersion && config.babelVersion === 6) { - let babel6 = await localRequire('babel-core', asset.name); - let res = babel6.transformFromAst(asset.ast, asset.contents, config); - if (res.ast) { - asset.ast = res.ast; - asset.isAstDirty = true; - } - - asset.ast = babelASTConverter(asset.ast, 6); - - return babelTransform(asset, 7); - } - - // If this is an internally generated config, use our internal @babel/core, - // otherwise require a local version from the package we're compiling. - let babel = config.internal - ? require('@babel/core') - : await localRequire(config.babelVersion === 6 ? 'babel-core' : '@babel/core', asset.name); - - let res = babel.transformFromAst(asset.ast, asset.contents, config); - if (res.ast) { - asset.ast = res.ast; - asset.isAstDirty = true; - } -} - -module.exports = babelTransform; - -async function getConfig(asset, version) { - let config = await getBabelConfig(asset, version); - if (config) { - config.code = false; - config.ast = true; - config.filename = asset.name; - config.babelrc = false; - - // Hide the internal property from babel - let internal = config.internal; - delete config.internal; - Object.defineProperty(config, 'internal', { - value: internal, - configurable: true - }); - - // Hide config version from babel - let babelVersion = config.babelVersion; - delete config.babelVersion; - Object.defineProperty(config, 'babelVersion', { - value: babelVersion, - configurable: true - }); - } - - console.log(config) - return config; -} - -babelTransform.getConfig = getConfig; - -async function getBabelConfig(asset, version) { - // If asset is marked as an ES6 modules, this is a second pass after dependencies are extracted. - // Just compile modules to CommonJS. - if (asset.isES6Module) { - return { - internal: true, - plugins: [require('@babel/plugin-transform-modules-commonjs')] - }; - } - - if (asset.babelConfig) { - // if (asset.babelConfig.babelVersion === version) { - return asset.babelConfig; - // } - } - - // Consider the module source code rather than precompiled if the resolver - // used the `source` field, or it is not in node_modules. - let pkg = await asset.getPackage(); - let isSource = - !!(pkg && pkg.source && (await fs.realpath(asset.name)) !== asset.name) || - !asset.name.includes(NODE_MODULES); - - // Try to resolve a .babelrc file. If one is found, consider the module source code. - let babelrc = await getBabelRc(asset, isSource); - if (babelrc) { - babelrc.babelVersion = getBabelVersion(babelrc); - } - - isSource = isSource || !!babelrc; - - let envConfig = await getEnvConfig(asset, isSource); - let jsxConfig = await getJSXConfig(asset, isSource); - let flowConfig = getFlowConfig(asset, isSource); - - // Merge the @babel/preset-env config and the babelrc if needed - if (babelrc && !shouldIgnoreBabelrc(asset.name, babelrc)) { - if (envConfig) { - // Filter out presets that are already applied by @babel/preset-env - if (Array.isArray(babelrc.presets)) { - babelrc.presets = babelrc.presets.filter(preset => { - return !ENV_PRESETS[getPluginName(preset)]; - }); - } - - // Filter out plugins that are already applied by @babel/preset-env - if (Array.isArray(babelrc.plugins)) { - babelrc.plugins = babelrc.plugins.filter(plugin => { - return !ENV_PLUGINS[getPluginName(plugin)]; - }); - } - - // Add plugins generated by @babel/preset-env to get to the app's target engines. - mergeConfigs(babelrc, envConfig); - } - - // Add JSX config if it isn't already specified in the babelrc - let hasReact = - hasPlugin(babelrc.presets, ['react', '@babel/preset-react']) || - hasPlugin(babelrc.plugins, [ - 'transform-react-jsx', - '@babel/plugin-transform-react-jsx' - ]); - - if (!hasReact) { - mergeConfigs(babelrc, jsxConfig); - } - - // Add Flow stripping config if it isn't already specified in the babelrc - let hasFlow = hasPlugin(babelrc.plugins, [ - 'transform-flow-strip-types', - '@babel/plugin-transform-flow-strip-types' - ]); - - if (!hasFlow && flowConfig) { - mergeConfigs(babelrc, flowConfig); - } - - return babelrc; - } - - // If there is a @babel/preset-env config, and it isn't empty use that - if (envConfig && (envConfig.plugins.length > 0 || jsxConfig || flowConfig)) { - mergeConfigs(envConfig, jsxConfig); - mergeConfigs(envConfig, flowConfig); - return envConfig; - } - - // If there is a JSX config, return that - if (jsxConfig) { - return jsxConfig; - } - - // If there is a Flow config, return that - if (flowConfig) { - return flowConfig; - } - - // Otherwise, don't run babel at all - return null; -} - -function mergeConfigs(a, b) { - if (b) { - a.presets = (a.presets || []).concat(b.presets || []); - a.plugins = (a.plugins || []).concat(b.plugins || []); - } - - return a; -} - -function getBabel6TransformPlugin(asset) { - return function () { - return { - - }; - }; -} - -function hasPlugin(arr, plugins) { - return ( - Array.isArray(arr) && arr.some(p => plugins.includes(getPluginName(p))) - ); -} - -function getPluginName(p) { - // return Array.isArray(p) ? p[0] : p; - return p.file ? p.file.request : ''; -} - -function hasBabel7Plugin(plugins) { - return plugins.some(plugin => - getPluginName(plugin).startsWith('@babel/') - ); -} - -function getBabelVersion(babelrc = {}) { - if (!babelrc.presets && !babelrc.presets) { - return 7; - } - - if ( - (babelrc.presets && hasBabel7Plugin(babelrc.presets)) || - (babelrc.plugins && hasBabel7Plugin(babelrc.plugins)) - ) { - return 7; - } - - return 6; -} - -/** - * Finds a .babelrc for an asset. By default, .babelrc files inside node_modules are not used. - * However, there are some exceptions: - * - if `browserify.transforms` includes "babelify" in package.json (for legacy module compat) - * - the `source` field in package.json is used by the resolver - */ -async function getBabelRc(asset, isSource) { - let babelrc = null; - - // Support legacy browserify packages - let pkg = await asset.getPackage(); - let browserify = pkg && pkg.browserify; - if (browserify && Array.isArray(browserify.transform)) { - // Look for babelify in the browserify transform list - let babelify = browserify.transform.find( - t => (Array.isArray(t) ? t[0] : t) === 'babelify' - ); - - // If specified as an array, override the config with the one specified - if (Array.isArray(babelify) && babelify[1]) { - return babelify[1]; - } - - // Otherwise, return the .babelrc if babelify was found - return babelify ? await findBabelRc(asset) : null; - } - - // If this asset is not in node_modules, always use the .babelrc - if (isSource) { - return await findBabelRc(asset); - } - - // Otherwise, don't load .babelrc for node_modules. - // See https://github.com/parcel-bundler/parcel/issues/13. - return null; -} - -async function findBabelRc(asset) { - // return await asset.getConfig(['.babelrc', '.babelrc.js'], { - // packageKey: 'babel' - // }); - let config = babelCore.loadPartialConfig({ - filename: asset.name - }); - // let chain = buildRootChain({filename: asset.name}, { - // filename: asset.name, - // cwd: process.cwd(), - // root: process.cwd(), - // envName: process.env.NODE_ENV - // }); - // console.log(chain) - - if (config) { - for (let file in [config.babelrc, config.babelignore, config.config]) { - if (file) { - asset.addDependency(file, {includedInParent: true}); - } - } - - return config.options; - } -} - -function getBabel6Config(config) { - let res = Object.assign({}, config); - delete res.configFile - delete res.envName; - delete res.cwd; - delete res.root; - res.plugins = (res.plugins || []).map(p => p._descriptor); - res.presets = (res.presets || []).map(p => p._descriptor); - return res; -} - -/*function shouldIgnoreBabelrc(filename, babelrc) { - // Determine if we should ignore this babelrc file. We do this here instead of - // letting @babel/core handle it because this config might be merged with our - // autogenerated one later which shouldn't be ignored. - let ignore = babelUtils.arrayify(babelrc.ignore, babelUtils.regexify); - let only = babelrc.only && babelUtils.arrayify(babelrc.only, babelUtils.regexify); - return babelUtils.shouldIgnore(filename, ignore, only); -}*/ -function shouldIgnoreBabelrc() { - return false; -} - -/** - * Generates a @babel/preset-env config for an asset. - * This is done by finding the source module's target engines, and the app's - * target engines, and doing a diff to include only the necessary plugins. - */ -async function getEnvConfig(asset, isSourceModule) { - // Load the target engines for the app and generate a @babel/preset-env config - let targetEngines = await getTargetEngines(asset, true); - let targetEnv = await getEnvPlugins(targetEngines, true); - if (!targetEnv) { - return null; - } - - // If this is the app module, the source and target will be the same, so just compile everything. - // Otherwise, load the source engines and generate a babel-present-env config. - if (!isSourceModule) { - let sourceEngines = await getTargetEngines(asset, false); - let sourceEnv = (await getEnvPlugins(sourceEngines, false)) || targetEnv; - - // Do a diff of the returned plugins. We only need to process the remaining plugins to get to the app target. - let sourcePlugins = new Set(sourceEnv.map(p => p[0])); - targetEnv = targetEnv.filter(plugin => { - return !sourcePlugins.has(plugin[0]); - }); - } - - return {plugins: targetEnv, internal: true}; -} - -const envCache = new Map(); - -async function getEnvPlugins(targets, useBuiltIns = false) { - if (!targets) { - return null; - } - - let key = JSON.stringify(targets); - if (envCache.has(key)) { - return envCache.get(key); - } - - let plugins = presetEnv.default( - {assertVersion: () => true}, - { - targets, - modules: false, - useBuiltIns: useBuiltIns ? 'entry' : false, - shippedProposals: true - } - ).plugins; - - envCache.set(key, plugins); - return plugins; -} - -/** - * Generates a babel config for JSX. Attempts to detect react or react-like libraries - * and changes the pragma accordingly. - */ -async function getJSXConfig(asset, isSourceModule) { - // Don't enable JSX in node_modules - if (!isSourceModule) { - return null; - } - - let pkg = await asset.getPackage(); - - // Find a dependency that we can map to a JSX pragma - let pragma = null; - for (let dep in JSX_PRAGMA) { - if ( - pkg && - ((pkg.dependencies && pkg.dependencies[dep]) || - (pkg.devDependencies && pkg.devDependencies[dep])) - ) { - pragma = JSX_PRAGMA[dep]; - break; - } - } - - if (pragma || JSX_EXTENSIONS[path.extname(asset.name)]) { - return { - plugins: [[require('@babel/plugin-transform-react-jsx'), {pragma}]], - internal: true - }; - } -} - -/** - * Generates a babel config for stripping away Flow types. - */ -function getFlowConfig(asset) { - if (/^(\/{2}|\/\*+) *@flow/.test(asset.contents.substring(0, 20))) { - return { - plugins: [[require('@babel/plugin-transform-flow-strip-types')]], - internal: true - }; - } - - return null; -} From 6ce3fc3f57aa6eb34e44138bd6610571dcb1ee1b Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Tue, 11 Sep 2018 22:18:52 -0700 Subject: [PATCH 31/43] Use internal version of babel if no babelrc --- src/assets/JSAsset.js | 6 ++++-- src/transforms/babel/babel6.js | 3 ++- src/transforms/babel/babel7.js | 6 ++++-- src/transforms/babel/config.js | 10 +++++----- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 0606b85f419..3b96435c59f 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -237,9 +237,11 @@ class JSAsset extends Asset { this.isAstDirty = true; } else { if (this.isES6Module) { - // await babel(this); await babel7(this, { - plugins: [require('@babel/plugin-transform-modules-commonjs')] + internal: true, + config: { + plugins: [require('@babel/plugin-transform-modules-commonjs')] + } }); } } diff --git a/src/transforms/babel/babel6.js b/src/transforms/babel/babel6.js index d67bbcdfbe7..67e3238d8ac 100644 --- a/src/transforms/babel/babel6.js +++ b/src/transforms/babel/babel6.js @@ -1,9 +1,10 @@ const localRequire = require('../../utils/localRequire'); const {babel6toBabel7} = require('./astConverter'); -async function babel6(asset, config) { +async function babel6(asset, options) { let babel = await localRequire('babel-core', asset.name); + let config = options.config; config.code = false; config.ast = true; config.filename = asset.name; diff --git a/src/transforms/babel/babel7.js b/src/transforms/babel/babel7.js index b2fd33b2d30..260062ff0ce 100644 --- a/src/transforms/babel/babel7.js +++ b/src/transforms/babel/babel7.js @@ -1,9 +1,11 @@ const localRequire = require('../../utils/localRequire'); -async function babel7(asset, config) { +async function babel7(asset, options) { + let config = options.config; + // If this is an internally generated config, use our internal @babel/core, // otherwise require a local version from the package we're compiling. - let babel = config.internal + let babel = options.internal ? require('@babel/core') : await localRequire('@babel/core', asset.name); diff --git a/src/transforms/babel/config.js b/src/transforms/babel/config.js index 7f99e0e5466..e97ebb62ce7 100644 --- a/src/transforms/babel/config.js +++ b/src/transforms/babel/config.js @@ -54,12 +54,12 @@ async function getBabelConfig(asset) { // Add JSX config if it isn't already specified in the babelrc let hasReact = - babelrc && + babelrc && ( hasPlugin(babelrc.config.presets, ['react', '@babel/preset-react']) || hasPlugin(babelrc.config.plugins, [ 'transform-react-jsx', '@babel/plugin-transform-react-jsx' - ]); + ])); if (!hasReact) { mergeConfigs(babelrc, jsxConfig); @@ -89,10 +89,10 @@ function mergeConfigs(result, config) { let merged = result[config.babelVersion]; if (merged) { - merged.presets = (merged.presets || []).concat(config.config.presets || []); - merged.plugins = (merged.plugins || []).concat(config.config.plugins || []); + merged.config.presets = (merged.config.presets || []).concat(config.config.presets || []); + merged.config.plugins = (merged.config.plugins || []).concat(config.config.plugins || []); } else { - result[config.babelVersion] = config.config; + result[config.babelVersion] = config; } return merged; From b73e9e05b757a422efb88e02b0133a256f6fbafd Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Tue, 11 Sep 2018 22:22:27 -0700 Subject: [PATCH 32/43] Infer version of babel --- src/transforms/babel/babelrc.js | 162 +++++++++++++++++++++++++++++--- src/utils/installPackage.js | 13 ++- 2 files changed, 161 insertions(+), 14 deletions(-) diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js index ffeacbad8d6..ac6a39fc912 100644 --- a/src/transforms/babel/babelrc.js +++ b/src/transforms/babel/babelrc.js @@ -1,14 +1,28 @@ const {buildRootChain} = require('@babel/core/lib/config/config-chain'); const {mergeOptions} = require('@babel/core/lib/config/util'); +const semver = require('semver'); +const logger = require('../../logger'); +const path = require('path'); +const promisify = require('../../utils/promisify'); +const resolve = promisify(require('resolve')); +const installPackage = require('../../utils/installPackage'); async function getBabelConfig(asset, isSource) { let config = await getBabelRc(asset, isSource); if (!config) { return null; } + + // Ignore if the config is empty. + if ((!config.plugins || config.plugins.length === 0) || + (!config.presets || config.presets.length === 0)) { + return null; + } + + let babelVersion = await getBabelVersion(asset, config); return { - babelVersion: getBabelVersion(config), + babelVersion, config }; } @@ -57,27 +71,149 @@ async function findBabelRc(asset) { }); } -function getBabelVersion(babelrc) { - if (!babelrc.presets && !babelrc.presets) { - return 7; +async function getBabelVersion(asset, babelrc) { + // Check the package.json to determine the babel version that is installed + let pkg = await asset.getPackage(); + let babelLegacy = getDependency(pkg, 'babel-core'); + let babelModern = getDependency(pkg, '@babel/core'); + + if (babelModern) { + return getMaxMajor(babelModern); } - if ( - (babelrc.presets && hasBabel7Plugin(babelrc.presets)) || - (babelrc.plugins && hasBabel7Plugin(babelrc.plugins)) - ) { - return 7; + if (babelLegacy) { + return 6; } - return 6; + // No version was installed. This is either an old app where we didn't require a version to be installed, + // or a new app that just added a .babelrc without manually installing a version of babel core. + // We will attempt to infer a verison of babel and install it based on the dependencies of the plugins + // in the config. This should only happen once since we save babel core into package.json for subsequent runs. + let inferred = await inferBabelVersion(asset, babelrc); + let name = inferred === 6 ? 'babel-core' : `@babel/core`; + await installPackage([name], asset.name); + return inferred; } -function hasBabel7Plugin(plugins) { - return plugins.some(plugin => - getPluginName(plugin).startsWith('@babel/') +function getDependency(pkg, dep) { + return ( + (pkg.dependencies && pkg.dependencies[dep]) || + (pkg.peerDependencies && pkg.peerDependencies[dep]) || + (pkg.devDependencies && pkg.devDependencies[dep]) ); } +// Core babel packages we use to infer the major version of babel to use. +const CORE_DEPS = new Set([ + '@babel/core', + '@babel/runtime', + '@babel/template', + '@babel/parser', + 'babel-core', + 'babel-runtime', + 'babel-template', + 'babylon' +]); + +async function inferBabelVersion(asset, babelrc) { + // Attempt to determine version based on dependencies of plugins + let basedir = path.dirname(asset.name); + let presets = (babelrc.presets || []).map(p => resolveModule('preset', getPluginName(p), basedir)); + let plugins = (babelrc.plugins || []).map(p => resolveModule('plugin', getPluginName(p), basedir)); + let results = await Promise.all([...presets, ...plugins]); + let version; + + for (let pkg of results) { + if (!pkg) { + continue; + } + + for (let name of CORE_DEPS) { + let dep = getDependency(pkg, name); + if (dep) { + // Parse version range (ignore prerelease), and ensure it overlaps with the existing version (if any) + let range = new semver.Range(dep.replace(/-.*(\s|\|\||$)?/, '')); + if (version && !version.intersects(range)) { + throw new Error('Conflicting babel versions found in .babelrc. Make sure all of your plugins and presets depend on the same major version of babel.'); + } + + version = range; + break; + } + } + } + + // Find the maximum major version allowed in the range and use that. + // e.g. if ^6 || ^7 were specified, use 7. + version = getMaxMajor(version); + if (!version) { + logger.warn(`Could not infer babel version. Defaulting to babel 7. Please add either babel-core or @babel/core as a dependency.`); + version = 7; + } + + return version; +} + function getPluginName(p) { return Array.isArray(p) ? p[0] : p; } + +function getMaxMajor(version) { + try { + let range = new semver.Range(version); + let sorted = range.set.sort((a, b) => a[0].semver.compare(b[0].semver)); + return semver.major(sorted.pop()[0].semver.version); + } catch (err) { + return null; + } +} + +async function resolveModule(type, name, basedir) { + try { + name = standardizeName(type, name); + return await resolve(name, {basedir}).then(([name, pkg]) => pkg); + } catch (err) { + return null; + } +} + +// Copied from https://github.com/babel/babel/blob/3a399d1eb907df520f2b85bf9ddbc6533e256f6d/packages/babel-core/src/config/files/plugins.js#L61 + +const EXACT_RE = /^module:/; +const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/; +const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/; +const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/; +const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/; +const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/; +const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/; +const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/; + +function standardizeName(type, name) { + // Let absolute and relative paths through. + if (path.isAbsolute(name)) return name; + + const isPreset = type === "preset"; + + return ( + name + // foo -> babel-preset-foo + .replace( + isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, + `babel-${type}-`, + ) + // @babel/es2015 -> @babel/preset-es2015 + .replace( + isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, + `$1${type}-`, + ) + // @foo/mypreset -> @foo/babel-preset-mypreset + .replace( + isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, + `$1babel-${type}-`, + ) + // @foo -> @foo/babel-preset + .replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`) + // module:mypreset -> mypreset + .replace(EXACT_RE, "") + ); +} diff --git a/src/utils/installPackage.js b/src/utils/installPackage.js index e6595d20df1..57c133d7fa8 100644 --- a/src/utils/installPackage.js +++ b/src/utils/installPackage.js @@ -7,6 +7,7 @@ const pipeSpawn = require('./pipeSpawn'); const PromiseQueue = require('./PromiseQueue'); const path = require('path'); const fs = require('./fs'); +const WorkerFarm = require('../workerfarm/WorkerFarm'); async function install(modules, filepath, options = {}) { let {installPeers = true, saveDev = true, packageManager} = options; @@ -99,7 +100,17 @@ async function checkForYarnCommand() { } let queue = new PromiseQueue(install, {maxConcurrent: 1, retry: false}); -module.exports = function(...args) { +module.exports = async function(...args) { + // Ensure that this function is always called on the master process so we + // don't call multiple installs in parallel. + if (WorkerFarm.isWorker()) { + await WorkerFarm.callMaster({ + location: __filename, + args + }); + return; + } + queue.add(...args); return queue.run(); }; From a814cf8d0a04031b4db63f8ef2e594bfa4477d2d Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Tue, 11 Sep 2018 22:49:36 -0700 Subject: [PATCH 33/43] Remove unused imports --- src/transforms/babel/babelrc.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js index ac6a39fc912..94e3f095ce9 100644 --- a/src/transforms/babel/babelrc.js +++ b/src/transforms/babel/babelrc.js @@ -1,5 +1,3 @@ -const {buildRootChain} = require('@babel/core/lib/config/config-chain'); -const {mergeOptions} = require('@babel/core/lib/config/util'); const semver = require('semver'); const logger = require('../../logger'); const path = require('path'); From 341dc8f288defc84a95ba93e1be6ec71e4b94eb8 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 15:34:10 -0700 Subject: [PATCH 34/43] Auto install babel plugins as needed --- src/Bundler.js | 2 +- src/transforms/babel/babelrc.js | 33 ++++++++++++++++++--------------- src/utils/installPackage.js | 3 +++ src/utils/localRequire.js | 19 +++++++++++-------- src/utils/pipeSpawn.js | 3 ++- 5 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/Bundler.js b/src/Bundler.js index 87057e0d577..e24f089ea86 100644 --- a/src/Bundler.js +++ b/src/Bundler.js @@ -499,7 +499,7 @@ class Bundler extends EventEmitter { // If the module resolved (i.e. wasn't a local file), but the module directory wasn't found, install it. if (resolved.moduleName && !resolved.moduleDir) { try { - await installPackage([resolved.moduleName], asset.name, { + await installPackage(resolved.moduleName, asset.name, { saveDev: false }); } catch (err) { diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js index 94e3f095ce9..5aef56b391e 100644 --- a/src/transforms/babel/babelrc.js +++ b/src/transforms/babel/babelrc.js @@ -1,8 +1,7 @@ const semver = require('semver'); const logger = require('../../logger'); const path = require('path'); -const promisify = require('../../utils/promisify'); -const resolve = promisify(require('resolve')); +const localRequire = require('../../utils/localRequire'); const installPackage = require('../../utils/installPackage'); async function getBabelConfig(asset, isSource) { @@ -12,12 +11,13 @@ async function getBabelConfig(asset, isSource) { } // Ignore if the config is empty. - if ((!config.plugins || config.plugins.length === 0) || + if ((!config.plugins || config.plugins.length === 0) && (!config.presets || config.presets.length === 0)) { return null; } - let babelVersion = await getBabelVersion(asset, config); + let plugins = await installPlugins(asset, config); + let babelVersion = await getBabelVersion(asset, plugins); return { babelVersion, @@ -69,7 +69,7 @@ async function findBabelRc(asset) { }); } -async function getBabelVersion(asset, babelrc) { +async function getBabelVersion(asset, plugins) { // Check the package.json to determine the babel version that is installed let pkg = await asset.getPackage(); let babelLegacy = getDependency(pkg, 'babel-core'); @@ -87,9 +87,9 @@ async function getBabelVersion(asset, babelrc) { // or a new app that just added a .babelrc without manually installing a version of babel core. // We will attempt to infer a verison of babel and install it based on the dependencies of the plugins // in the config. This should only happen once since we save babel core into package.json for subsequent runs. - let inferred = await inferBabelVersion(asset, babelrc); + let inferred = await inferBabelVersion(asset, plugins); let name = inferred === 6 ? 'babel-core' : `@babel/core`; - await installPackage([name], asset.name); + await installPackage(name, asset.name); return inferred; } @@ -113,15 +113,11 @@ const CORE_DEPS = new Set([ 'babylon' ]); -async function inferBabelVersion(asset, babelrc) { +async function inferBabelVersion(asset, plugins) { // Attempt to determine version based on dependencies of plugins - let basedir = path.dirname(asset.name); - let presets = (babelrc.presets || []).map(p => resolveModule('preset', getPluginName(p), basedir)); - let plugins = (babelrc.plugins || []).map(p => resolveModule('plugin', getPluginName(p), basedir)); - let results = await Promise.all([...presets, ...plugins]); let version; - for (let pkg of results) { + for (let pkg of plugins) { if (!pkg) { continue; } @@ -166,10 +162,17 @@ function getMaxMajor(version) { } } -async function resolveModule(type, name, basedir) { +async function installPlugins(asset, babelrc) { + let presets = (babelrc.presets || []).map(p => resolveModule('preset', getPluginName(p), asset.name)); + let plugins = (babelrc.plugins || []).map(p => resolveModule('plugin', getPluginName(p), asset.name)); + return await Promise.all([...presets, ...plugins]); +} + +async function resolveModule(type, name, path) { try { name = standardizeName(type, name); - return await resolve(name, {basedir}).then(([name, pkg]) => pkg); + let [, pkg] = await localRequire.resolve(name, path); + return pkg; } catch (err) { return null; } diff --git a/src/utils/installPackage.js b/src/utils/installPackage.js index 57c133d7fa8..dbd76284647 100644 --- a/src/utils/installPackage.js +++ b/src/utils/installPackage.js @@ -11,6 +11,9 @@ const WorkerFarm = require('../workerfarm/WorkerFarm'); async function install(modules, filepath, options = {}) { let {installPeers = true, saveDev = true, packageManager} = options; + if (typeof modules === 'string') { + modules = [modules]; + } logger.progress(`Installing ${modules.join(', ')}...`); diff --git a/src/utils/localRequire.js b/src/utils/localRequire.js index a7e2f1a3fb0..a34e6e84c57 100644 --- a/src/utils/localRequire.js +++ b/src/utils/localRequire.js @@ -1,31 +1,34 @@ const {dirname} = require('path'); const promisify = require('../utils/promisify'); const resolve = promisify(require('resolve')); -const WorkerFarm = require('../workerfarm/WorkerFarm'); +const installPackage = require('./installPackage'); const cache = new Map(); async function localRequire(name, path, triedInstall = false) { + let [resolved] = await localResolve(name, path, triedInstall); + return require(resolved); +} + +async function localResolve(name, path, triedInstall = false) { let basedir = dirname(path); let key = basedir + ':' + name; let resolved = cache.get(key); if (!resolved) { try { - resolved = await resolve(name, {basedir}).then(([name]) => name); + resolved = await resolve(name, {basedir}); } catch (e) { if (e.code === 'MODULE_NOT_FOUND' && !triedInstall) { - await WorkerFarm.callMaster({ - location: require.resolve('./installPackage.js'), - args: [[name], path] - }); - return localRequire(name, path, true); + await installPackage(name, path); + return await localResolve(name, path, true); } throw e; } cache.set(key, resolved); } - return require(resolved); + return resolved; } +localRequire.resolve = localResolve; module.exports = localRequire; diff --git a/src/utils/pipeSpawn.js b/src/utils/pipeSpawn.js index 823cbf9ac6e..b5fda80799e 100644 --- a/src/utils/pipeSpawn.js +++ b/src/utils/pipeSpawn.js @@ -13,7 +13,8 @@ function pipeSpawn(cmd, params, opts) { npm_config_color: logger.color ? 'always' : '', npm_config_progress: true }, - process.env + process.env, + {NODE_ENV: null} // Passing NODE_ENV through causes strange issues with yarn ) }, opts From f3bc04c8a98a3d33a1bd0c8019efa8de9bbea2b9 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 18:29:30 -0700 Subject: [PATCH 35/43] Support babelignore --- src/transforms/babel/babelrc.js | 80 ++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js index 5aef56b391e..e76597bdf3f 100644 --- a/src/transforms/babel/babelrc.js +++ b/src/transforms/babel/babelrc.js @@ -3,6 +3,8 @@ const logger = require('../../logger'); const path = require('path'); const localRequire = require('../../utils/localRequire'); const installPackage = require('../../utils/installPackage'); +const fs = require('../../utils/fs'); +const micromatch = require('micromatch'); async function getBabelConfig(asset, isSource) { let config = await getBabelRc(asset, isSource); @@ -63,10 +65,84 @@ async function getBabelRc(asset, isSource) { } async function findBabelRc(asset) { - // TODO: support babelignore, etc. - return await asset.getConfig(['.babelrc', '.babelrc.js'], { + // TODO: use the babel API to do this config resolution and support all of its features. + // This is not currently possible because babel tries to actually load plugins and presets + // while resolving the config, but those plugins might not be installed yet. + let config = await asset.getConfig(['.babelrc', '.babelrc.js'], { packageKey: 'babel' }); + + if (!config) { + return null; + } + + if (typeof config === 'function') { + // We cannot support function configs since there is no exposed method in babel + // to create the API that is passed to them... + throw new Error('Parcel does not support function configs in .babelrc.js yet.'); + } + + for (let key of ['extends', 'overrides', 'test', 'include', 'exclude']) { + if (config[key]) { + throw new Error(`Parcel does not support babel 7 advanced configuration option "${key}" yet.`); + } + } + + // Support ignore/only config options. + if (shouldIgnore(asset, config)) { + return null; + } + + // Support .babelignore + let ignoreConfig = await getIgnoreConfig(asset); + if (ignoreConfig && shouldIgnore(asset, ignoreConfig)) { + return null; + } + + return config; +} + +async function getIgnoreConfig(asset) { + let ignoreFile = await asset.getConfig(['.babelignore'], { + load: false + }); + + if (!ignoreFile) { + return null; + } + + let data = await fs.readFile(ignoreFile, 'utf8'); + let patterns = data.split('\n') + .map(line => line.replace(/#.*$/, '').trim()) + .filter(Boolean); + + return {ignore: patterns}; +} + +function shouldIgnore(asset, config) { + if (config.ignore && matchesPatterns(config.ignore, asset.name)) { + return true; + } + + if (config.only && !matchesPatterns(config.only, asset.name)) { + return true; + } + + return false; +} + +function matchesPatterns(patterns, path) { + return patterns.some(pattern => { + if (typeof pattern === 'function') { + return !!pattern(path); + } + + if (typeof pattern === 'string') { + return micromatch.isMatch(path, '**/' + pattern + '/**'); + } + + return pattern.test(string); + }); } async function getBabelVersion(asset, plugins) { From 29e2175ace76b669be57c0cc41c35cdbe8f99512 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 18:29:53 -0700 Subject: [PATCH 36/43] fixes --- .gitignore | 3 + src/assets/JSAsset.js | 55 +++---------------- src/transforms/babel/babel6.js | 9 +++ src/transforms/babel/babel7.js | 6 ++ src/transforms/babel/babelrc.js | 12 +++- src/transforms/babel/config.js | 15 +++-- .../node_modules/foo/package.json | 3 + test/javascript.js | 4 +- 8 files changed, 52 insertions(+), 55 deletions(-) diff --git a/.gitignore b/.gitignore index 58b93d3ba21..fc1b4628edd 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,9 @@ lib *.min.js test/integration/**/target test/integration/**/Cargo.lock +test/**/node_modules +test/**/yarn.lock +test/**/package-lock.json # Logs logs *.log diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 3b96435c59f..043b914203d 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -62,53 +62,14 @@ class JSAsset extends Asset { ); } - async getParserOptions() { - // Babylon options. We enable a few plugins by default. - let options = { - parserOpts: { - filename: this.name, - allowReturnOutsideFunction: true, - strictMode: false, - sourceType: 'module', - plugins: ['exportExtensions', 'exportDefaultFrom', 'exportNamespaceFrom', 'dynamicImport'] - } - }; - - // Check if there is a babel config file. If so, determine which parser plugins to enable - this.babelConfig = await babel.getConfig(this); - if (this.babelConfig) { - if (this.babelConfig.babelVersion === 6) { - options.parserOpts.tokens = true; - // options = options.parserOpts; - } - - Object.assign(options, this.babelConfig); - - let babelVersion = this.babelConfig.babelVersion; - Object.defineProperty(options, 'babelVersion', { - value: babelVersion, - configurable: true - }); - - // if (this.babelConfig) { - // const file = new BabelFile(this.babelConfig); - // options.plugins.push(...file.parserOpts.plugins); - // } - } - - return options; - } - async parse(code) { - // const options = await this.getParserOptions(); - // return babelCore.parse(code, options); - await babel(this); - if (!this.ast) { - console.log('NO AST') - this.ast = babelParser.parse(code); - } - - return this.ast; + return babelParser.parse(code, { + filename: this.name, + allowReturnOutsideFunction: true, + strictMode: false, + sourceType: 'module', + plugins: ['exportDefaultFrom', 'exportNamespaceFrom', 'dynamicImport'] + }); } traverse(visitor) { @@ -200,7 +161,7 @@ class JSAsset extends Asset { async pretransform() { await this.loadSourceMap(); - // await babel(this); + await babel(this); // Inline environment variables if (this.options.target === 'browser' && ENV_RE.test(this.contents)) { diff --git a/src/transforms/babel/babel6.js b/src/transforms/babel/babel6.js index 67e3238d8ac..45248176075 100644 --- a/src/transforms/babel/babel6.js +++ b/src/transforms/babel/babel6.js @@ -9,6 +9,15 @@ async function babel6(asset, options) { config.ast = true; config.filename = asset.name; config.babelrc = false; + config.parserOpts = Object.assign({}, config.parserOpts, { + allowReturnOutsideFunction: true, + allowHashBang: true, + ecmaVersion: Infinity, + strictMode: false, + sourceType: 'module', + locations: true, + plugins: ['exportExtensions', 'dynamicImport'] + }); let res = babel.transform(asset.contents, config); if (res.ast) { diff --git a/src/transforms/babel/babel7.js b/src/transforms/babel/babel7.js index 260062ff0ce..7de00b7d57e 100644 --- a/src/transforms/babel/babel7.js +++ b/src/transforms/babel/babel7.js @@ -14,6 +14,12 @@ async function babel7(asset, options) { config.filename = asset.name; config.babelrc = false; config.configFile = false; + config.parserOpts = Object.assign({}, config.parserOpts, { + allowReturnOutsideFunction: true, + strictMode: false, + sourceType: 'module', + plugins: ['exportDefaultFrom', 'exportNamespaceFrom', 'dynamicImport'] + }); let res; if (asset.ast) { diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js index e76597bdf3f..f9b41f8d14d 100644 --- a/src/transforms/babel/babelrc.js +++ b/src/transforms/babel/babelrc.js @@ -182,11 +182,21 @@ const CORE_DEPS = new Set([ '@babel/core', '@babel/runtime', '@babel/template', + '@babel/traverse', + '@babel/types', '@babel/parser', + '@babel/cli', + '@babel/register', + '@babel/generator', 'babel-core', 'babel-runtime', 'babel-template', - 'babylon' + 'babel-traverse', + 'babel-types', + 'babylon', + 'babel-cli', + 'babel-register', + 'babel-generator' ]); async function inferBabelVersion(asset, plugins) { diff --git a/src/transforms/babel/config.js b/src/transforms/babel/config.js index e97ebb62ce7..402d2a45b4a 100644 --- a/src/transforms/babel/config.js +++ b/src/transforms/babel/config.js @@ -3,6 +3,7 @@ const getEnvConfig = require('./env'); const getJSXConfig = require('./jsx'); const getFlowConfig = require('./flow'); const path = require('path'); +const fs = require('../../utils/fs'); const NODE_MODULES = `${path.sep}node_modules${path.sep}`; const ENV_PLUGINS = require('@babel/preset-env/data/plugins'); @@ -55,14 +56,19 @@ async function getBabelConfig(asset) { // Add JSX config if it isn't already specified in the babelrc let hasReact = babelrc && ( - hasPlugin(babelrc.config.presets, ['react', '@babel/preset-react']) || + hasPlugin(babelrc.config.presets, [ + 'react', + '@babel/react', + '@babel/preset-react' + ]) || hasPlugin(babelrc.config.plugins, [ 'transform-react-jsx', + '@babel/transform-react-jsx', '@babel/plugin-transform-react-jsx' ])); if (!hasReact) { - mergeConfigs(babelrc, jsxConfig); + mergeConfigs(result, jsxConfig); } // Add Flow stripping config if it isn't already specified in the babelrc @@ -70,11 +76,12 @@ async function getBabelConfig(asset) { babelrc && hasPlugin(babelrc.config.plugins, [ 'transform-flow-strip-types', + '@babel/transform-flow-strip-types', '@babel/plugin-transform-flow-strip-types' ]); if (!hasFlow) { - mergeConfigs(babelrc, flowConfig); + mergeConfigs(result, flowConfig); } return result; @@ -94,8 +101,6 @@ function mergeConfigs(result, config) { } else { result[config.babelVersion] = config; } - - return merged; } function hasPlugin(arr, plugins) { diff --git a/test/integration/babel-node-modules-browserify/node_modules/foo/package.json b/test/integration/babel-node-modules-browserify/node_modules/foo/package.json index 5ebd6f0e494..6e9c1a02dff 100644 --- a/test/integration/babel-node-modules-browserify/node_modules/foo/package.json +++ b/test/integration/babel-node-modules-browserify/node_modules/foo/package.json @@ -4,5 +4,8 @@ "transform": [ "babelify" ] + }, + "devDependencies": { + "babel-core": "^6.26.3" } } diff --git a/test/javascript.js b/test/javascript.js index 8912a30c10f..2d9424d94ce 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -28,7 +28,7 @@ describe.only('javascript', function() { assert.equal(output.default(), 3); }); - it.only('should produce a basic JS bundle using Babel 6', async function() { + it('should produce a basic JS bundle using Babel 6', async function() { let b = await bundle( __dirname + '/integration/babel-6-compatibility/index.js' ); @@ -938,7 +938,7 @@ describe.only('javascript', function() { assert(json.includes('{a:1,b:{c:2}}')); }); - it.only('should support compiling with babel using .babelrc config', async function() { + it('should support compiling with babel using .babelrc config', async function() { await bundle(__dirname + '/integration/babel/index.js'); let file = await fs.readFile(__dirname + '/dist/index.js', 'utf8'); From 10934f085bd8bfb76a26ab76f5007b512fdadc3a Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 21:37:07 -0700 Subject: [PATCH 37/43] Fix tests --- src/assets/JSAsset.js | 15 ++++++--------- src/scope-hoisting/hoist.js | 9 +++++---- test/babel.js | 8 ++++---- test/hmr.js | 4 ++-- test/javascript.js | 23 ++++------------------- 5 files changed, 21 insertions(+), 38 deletions(-) diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 043b914203d..985b693223f 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -73,15 +73,6 @@ class JSAsset extends Asset { } traverse(visitor) { - // Create a babel File object if one hasn't been created yet. - // This is needed so that cached NodePath objects get a `hub` object on them. - // Plugins like babel-minify depend on this to get the original source code string. - // if (!this.babelFile) { - // this.babelFile = new BabelFile(this.babelConfig || {}); - // this.babelFile.addCode(this.contents); - // this.babelFile.addAst(this.ast); - // } - return traverse(this.ast, visitor, null, this); } @@ -274,6 +265,12 @@ class JSAsset extends Asset { generateErrorMessage(err) { const loc = err.loc; if (loc) { + // Babel 7 adds its own code frame on the error message itself + // We need to remove it and pass it separately. + if (err.message.startsWith(this.name)) { + err.message = err.message.slice(this.name.length + 1, err.message.indexOf('\n')).trim(); + } + err.codeFrame = codeFrame(this.contents, {start: loc}); err.highlightedCodeFrame = codeFrame( this.contents, diff --git a/src/scope-hoisting/hoist.js b/src/scope-hoisting/hoist.js index e96664e91b4..55cd87b7908 100644 --- a/src/scope-hoisting/hoist.js +++ b/src/scope-hoisting/hoist.js @@ -75,7 +75,7 @@ module.exports = { ReturnStatement(path) { // Wrap in a function if we see a top-level return statement. - if (path.getFunctionParent().isProgram()) { + if (!path.getFunctionParent()) { shouldWrap = true; asset.cacheData.isCommonJS = true; path.replaceWith( @@ -522,9 +522,10 @@ function addExport(asset, path, local, exported) { LOCAL: identifier }); - let constantViolations = scope - .getBinding(local.name) - .constantViolations.concat(path); + let binding = scope.getBinding(local.name); + let constantViolations = binding + ? binding.constantViolations.concat(path) + : [path]; if (!asset.cacheData.exports[exported.name]) { asset.cacheData.exports[exported.name] = identifier.name; diff --git a/test/babel.js b/test/babel.js index f8216a5f815..64bddc22454 100644 --- a/test/babel.js +++ b/test/babel.js @@ -1,13 +1,13 @@ const babelCore = require('@babel/core'); const fs = require('../src/utils/fs'); -const BabelASTConvertor = require('../src/transforms/babel/astConverter'); +const {babel6toBabel7, babel7toBabel6} = require('../src/transforms/babel/astConverter'); const path = require('path'); const BabelFlowPreset = require('@babel/preset-flow'); const babelPresetEnv = require('@babel/preset-env'); const traverse = require('@babel/traverse').default; const assert = require('assert'); -describe('Babel', function() { +describe('babel', function() { let ast; before(async function() { const options = { @@ -32,7 +32,7 @@ describe('Babel', function() { }); it('Should be able to convert Babel 7 => Babel 6 AST', async function() { - ast = BabelASTConvertor(ast, 7); + ast = babel7toBabel6(ast); let elementCount = {}; traverse(ast, { @@ -79,7 +79,7 @@ describe('Babel', function() { }); it('Should be able to convert Babel 6 => Babel 7 AST', async function() { - ast = BabelASTConvertor(ast, 6); + ast = babel6toBabel7(ast); let elementCount = {}; traverse(ast, { diff --git a/test/hmr.js b/test/hmr.js index 776aae39cf0..11acfba2ca1 100644 --- a/test/hmr.js +++ b/test/hmr.js @@ -168,11 +168,11 @@ describe('hmr', function() { `${path.join( __dirname, '/input/local.js' - )}:1:12: Unexpected token, expected , (1:12)` + )}:1:12: Unexpected token, expected "," (1:12)` ); assert.equal( msg.error.stack, - '> 1 | require("fs"; exports.a = 5; exports.b = 5;\n | ^' + '> 1 | require("fs"; exports.a = 5; exports.b = 5;\n | ^' ); await buildEnd; diff --git a/test/javascript.js b/test/javascript.js index 2d9424d94ce..463f041e177 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -4,7 +4,7 @@ const path = require('path'); const {bundle, run, assertBundleTree, deferred} = require('./utils'); const {mkdirp} = require('../src/utils/fs'); -describe.only('javascript', function() { +describe('javascript', function() { it('should produce a basic JS bundle with CommonJS requires', async function() { let b = await bundle(__dirname + '/integration/commonjs/index.js'); @@ -1285,12 +1285,7 @@ describe.only('javascript', function() { }, { type: 'css', - assets: ['index.css'], - childBundles: [ - { - type: 'js' - } - ] + assets: ['index.css'] } ] } @@ -1332,12 +1327,7 @@ describe.only('javascript', function() { }, { type: 'css', - assets: ['index.css'], - childBundles: [ - { - type: 'js' - } - ] + assets: ['index.css'] } ] } @@ -1375,12 +1365,7 @@ describe.only('javascript', function() { }, { type: 'css', - assets: ['index.css'], - childBundles: [ - { - type: 'js' - } - ] + assets: ['index.css'] } ] } From de1e21889e3abe3e296c8ad2c5e44ae232e26632 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 21:46:22 -0700 Subject: [PATCH 38/43] lint + prettier --- src/assets/JSAsset.js | 6 ++-- src/scope-hoisting/hoist.js | 4 +-- src/transforms/babel/babelrc.js | 49 +++++++++++++++++++++------------ src/transforms/babel/config.js | 31 +++++++++++++-------- src/transforms/babel/env.js | 2 +- src/transforms/babel/jsx.js | 2 +- src/utils/installPackage.js | 2 +- test/babel.js | 5 +++- 8 files changed, 63 insertions(+), 38 deletions(-) diff --git a/src/assets/JSAsset.js b/src/assets/JSAsset.js index 985b693223f..1cbd8a33ad8 100644 --- a/src/assets/JSAsset.js +++ b/src/assets/JSAsset.js @@ -1,11 +1,9 @@ -const babelCore = require('@babel/core'); const traverse = require('@babel/traverse').default; const codeFrame = require('@babel/code-frame').codeFrameColumns; const collectDependencies = require('../visitors/dependencies'); const walk = require('babylon-walk'); const Asset = require('../Asset'); const babelParser = require('@babel/parser'); -const localRequire = require('../utils/localRequire'); const insertGlobals = require('../visitors/globals'); const fsVisitor = require('../visitors/fs'); const envVisitor = require('../visitors/env'); @@ -268,7 +266,9 @@ class JSAsset extends Asset { // Babel 7 adds its own code frame on the error message itself // We need to remove it and pass it separately. if (err.message.startsWith(this.name)) { - err.message = err.message.slice(this.name.length + 1, err.message.indexOf('\n')).trim(); + err.message = err.message + .slice(this.name.length + 1, err.message.indexOf('\n')) + .trim(); } err.codeFrame = codeFrame(this.contents, {start: loc}); diff --git a/src/scope-hoisting/hoist.js b/src/scope-hoisting/hoist.js index 55cd87b7908..afc01e49be5 100644 --- a/src/scope-hoisting/hoist.js +++ b/src/scope-hoisting/hoist.js @@ -523,8 +523,8 @@ function addExport(asset, path, local, exported) { }); let binding = scope.getBinding(local.name); - let constantViolations = binding - ? binding.constantViolations.concat(path) + let constantViolations = binding + ? binding.constantViolations.concat(path) : [path]; if (!asset.cacheData.exports[exported.name]) { diff --git a/src/transforms/babel/babelrc.js b/src/transforms/babel/babelrc.js index f9b41f8d14d..0e7c8414ad4 100644 --- a/src/transforms/babel/babelrc.js +++ b/src/transforms/babel/babelrc.js @@ -13,14 +13,16 @@ async function getBabelConfig(asset, isSource) { } // Ignore if the config is empty. - if ((!config.plugins || config.plugins.length === 0) && - (!config.presets || config.presets.length === 0)) { + if ( + (!config.plugins || config.plugins.length === 0) && + (!config.presets || config.presets.length === 0) + ) { return null; } let plugins = await installPlugins(asset, config); let babelVersion = await getBabelVersion(asset, plugins); - + return { babelVersion, config @@ -79,12 +81,16 @@ async function findBabelRc(asset) { if (typeof config === 'function') { // We cannot support function configs since there is no exposed method in babel // to create the API that is passed to them... - throw new Error('Parcel does not support function configs in .babelrc.js yet.'); + throw new Error( + 'Parcel does not support function configs in .babelrc.js yet.' + ); } for (let key of ['extends', 'overrides', 'test', 'include', 'exclude']) { if (config[key]) { - throw new Error(`Parcel does not support babel 7 advanced configuration option "${key}" yet.`); + throw new Error( + `Parcel does not support babel 7 advanced configuration option "${key}" yet.` + ); } } @@ -112,7 +118,8 @@ async function getIgnoreConfig(asset) { } let data = await fs.readFile(ignoreFile, 'utf8'); - let patterns = data.split('\n') + let patterns = data + .split('\n') .map(line => line.replace(/#.*$/, '').trim()) .filter(Boolean); @@ -141,7 +148,7 @@ function matchesPatterns(patterns, path) { return micromatch.isMatch(path, '**/' + pattern + '/**'); } - return pattern.test(string); + return pattern.test(path); }); } @@ -180,7 +187,7 @@ function getDependency(pkg, dep) { // Core babel packages we use to infer the major version of babel to use. const CORE_DEPS = new Set([ '@babel/core', - '@babel/runtime', + '@babel/runtime', '@babel/template', '@babel/traverse', '@babel/types', @@ -214,7 +221,9 @@ async function inferBabelVersion(asset, plugins) { // Parse version range (ignore prerelease), and ensure it overlaps with the existing version (if any) let range = new semver.Range(dep.replace(/-.*(\s|\|\||$)?/, '')); if (version && !version.intersects(range)) { - throw new Error('Conflicting babel versions found in .babelrc. Make sure all of your plugins and presets depend on the same major version of babel.'); + throw new Error( + 'Conflicting babel versions found in .babelrc. Make sure all of your plugins and presets depend on the same major version of babel.' + ); } version = range; @@ -227,7 +236,9 @@ async function inferBabelVersion(asset, plugins) { // e.g. if ^6 || ^7 were specified, use 7. version = getMaxMajor(version); if (!version) { - logger.warn(`Could not infer babel version. Defaulting to babel 7. Please add either babel-core or @babel/core as a dependency.`); + logger.warn( + `Could not infer babel version. Defaulting to babel 7. Please add either babel-core or @babel/core as a dependency.` + ); version = 7; } @@ -249,8 +260,12 @@ function getMaxMajor(version) { } async function installPlugins(asset, babelrc) { - let presets = (babelrc.presets || []).map(p => resolveModule('preset', getPluginName(p), asset.name)); - let plugins = (babelrc.plugins || []).map(p => resolveModule('plugin', getPluginName(p), asset.name)); + let presets = (babelrc.presets || []).map(p => + resolveModule('preset', getPluginName(p), asset.name) + ); + let plugins = (babelrc.plugins || []).map(p => + resolveModule('plugin', getPluginName(p), asset.name) + ); return await Promise.all([...presets, ...plugins]); } @@ -279,28 +294,28 @@ function standardizeName(type, name) { // Let absolute and relative paths through. if (path.isAbsolute(name)) return name; - const isPreset = type === "preset"; + const isPreset = type === 'preset'; return ( name // foo -> babel-preset-foo .replace( isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, - `babel-${type}-`, + `babel-${type}-` ) // @babel/es2015 -> @babel/preset-es2015 .replace( isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, - `$1${type}-`, + `$1${type}-` ) // @foo/mypreset -> @foo/babel-preset-mypreset .replace( isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, - `$1babel-${type}-`, + `$1babel-${type}-` ) // @foo -> @foo/babel-preset .replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`) // module:mypreset -> mypreset - .replace(EXACT_RE, "") + .replace(EXACT_RE, '') ); } diff --git a/src/transforms/babel/config.js b/src/transforms/babel/config.js index 402d2a45b4a..abffc73bc80 100644 --- a/src/transforms/babel/config.js +++ b/src/transforms/babel/config.js @@ -55,24 +55,24 @@ async function getBabelConfig(asset) { // Add JSX config if it isn't already specified in the babelrc let hasReact = - babelrc && ( - hasPlugin(babelrc.config.presets, [ + babelrc && + (hasPlugin(babelrc.config.presets, [ 'react', '@babel/react', '@babel/preset-react' ]) || - hasPlugin(babelrc.config.plugins, [ - 'transform-react-jsx', - '@babel/transform-react-jsx', - '@babel/plugin-transform-react-jsx' - ])); + hasPlugin(babelrc.config.plugins, [ + 'transform-react-jsx', + '@babel/transform-react-jsx', + '@babel/plugin-transform-react-jsx' + ])); if (!hasReact) { mergeConfigs(result, jsxConfig); } // Add Flow stripping config if it isn't already specified in the babelrc - let hasFlow = + let hasFlow = babelrc && hasPlugin(babelrc.config.plugins, [ 'transform-flow-strip-types', @@ -90,14 +90,22 @@ async function getBabelConfig(asset) { module.exports = getBabelConfig; function mergeConfigs(result, config) { - if (!config || ((!config.config.presets || config.config.presets.length === 0) && (!config.config.plugins || config.config.plugins.length === 0))) { + if ( + !config || + ((!config.config.presets || config.config.presets.length === 0) && + (!config.config.plugins || config.config.plugins.length === 0)) + ) { return; } let merged = result[config.babelVersion]; if (merged) { - merged.config.presets = (merged.config.presets || []).concat(config.config.presets || []); - merged.config.plugins = (merged.config.plugins || []).concat(config.config.plugins || []); + merged.config.presets = (merged.config.presets || []).concat( + config.config.presets || [] + ); + merged.config.plugins = (merged.config.plugins || []).concat( + config.config.plugins || [] + ); } else { result[config.babelVersion] = config; } @@ -112,4 +120,3 @@ function hasPlugin(arr, plugins) { function getPluginName(p) { return Array.isArray(p) ? p[0] : p; } - diff --git a/src/transforms/babel/env.js b/src/transforms/babel/env.js index 39154f275b2..a108b6bee30 100644 --- a/src/transforms/babel/env.js +++ b/src/transforms/babel/env.js @@ -31,7 +31,7 @@ async function getEnvConfig(asset, isSourceModule) { internal: true, babelVersion: 7, config: { - plugins: targetEnv, + plugins: targetEnv } }; } diff --git a/src/transforms/babel/jsx.js b/src/transforms/babel/jsx.js index 600f4aef4d0..de4ceb70210 100644 --- a/src/transforms/babel/jsx.js +++ b/src/transforms/babel/jsx.js @@ -42,7 +42,7 @@ async function getJSXConfig(asset, isSourceModule) { internal: true, babelVersion: 7, config: { - plugins: [[require('@babel/plugin-transform-react-jsx'), {pragma}]], + plugins: [[require('@babel/plugin-transform-react-jsx'), {pragma}]] } }; } diff --git a/src/utils/installPackage.js b/src/utils/installPackage.js index dbd76284647..6c9fb3462e4 100644 --- a/src/utils/installPackage.js +++ b/src/utils/installPackage.js @@ -104,7 +104,7 @@ async function checkForYarnCommand() { let queue = new PromiseQueue(install, {maxConcurrent: 1, retry: false}); module.exports = async function(...args) { - // Ensure that this function is always called on the master process so we + // Ensure that this function is always called on the master process so we // don't call multiple installs in parallel. if (WorkerFarm.isWorker()) { await WorkerFarm.callMaster({ diff --git a/test/babel.js b/test/babel.js index 64bddc22454..8ebedb1d75a 100644 --- a/test/babel.js +++ b/test/babel.js @@ -1,6 +1,9 @@ const babelCore = require('@babel/core'); const fs = require('../src/utils/fs'); -const {babel6toBabel7, babel7toBabel6} = require('../src/transforms/babel/astConverter'); +const { + babel6toBabel7, + babel7toBabel6 +} = require('../src/transforms/babel/astConverter'); const path = require('path'); const BabelFlowPreset = require('@babel/preset-flow'); const babelPresetEnv = require('@babel/preset-env'); From 5e126c534d64ba40ddb94463bad90a571c51f913 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 21:56:47 -0700 Subject: [PATCH 39/43] Restore removed test --- package.json | 2 +- test/integration/babel-polyfill/.eslintrc | 6 ++++++ test/integration/babel-polyfill/index.js | 3 +++ test/integration/babel-polyfill/package.json | 7 +++++++ test/javascript.js | 8 ++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 test/integration/babel-polyfill/.eslintrc create mode 100644 test/integration/babel-polyfill/index.js create mode 100644 test/integration/babel-polyfill/package.json diff --git a/package.json b/package.json index fa8ac203e47..dd2ce8a720a 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "build": "yarn minify && babel src -d lib && ncp src/builtins lib/builtins", "prepublish": "yarn build", "minify": "terser -c -m -o src/builtins/prelude.min.js src/builtins/prelude.js && terser -c -m -o src/builtins/prelude2.min.js src/builtins/prelude2.js", - "precommit": "npm run lint && lint-staged", + "precommit": "lint-staged", "lint": "eslint . && prettier \"./{src,bin,test}/**/*.{js,json,md}\" --list-different", "postinstall": "node -e \"console.log('\\u001b[35m\\u001b[1mLove Parcel? You can now donate to our open collective:\\u001b[22m\\u001b[39m\\n > \\u001b[34mhttps://opencollective.com/parcel/donate\\u001b[0m')\"" }, diff --git a/test/integration/babel-polyfill/.eslintrc b/test/integration/babel-polyfill/.eslintrc new file mode 100644 index 00000000000..f89e231fa93 --- /dev/null +++ b/test/integration/babel-polyfill/.eslintrc @@ -0,0 +1,6 @@ +{ + "extends": "../.eslintrc.json", + "parserOptions": { + "sourceType": "module" + } +} \ No newline at end of file diff --git a/test/integration/babel-polyfill/index.js b/test/integration/babel-polyfill/index.js new file mode 100644 index 00000000000..6dc46a04259 --- /dev/null +++ b/test/integration/babel-polyfill/index.js @@ -0,0 +1,3 @@ +import '@babel/polyfill'; + +export async function Bar() {} diff --git a/test/integration/babel-polyfill/package.json b/test/integration/babel-polyfill/package.json new file mode 100644 index 00000000000..c2f78bd89e6 --- /dev/null +++ b/test/integration/babel-polyfill/package.json @@ -0,0 +1,7 @@ +{ + "name": "parcel-test-babel-polyfill-browserslist", + "private": true, + "browserslist": [ + "last 2 Chrome versions" + ] +} diff --git a/test/javascript.js b/test/javascript.js index 463f041e177..a79f646a3d4 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -962,6 +962,14 @@ describe('javascript', function() { assert(file.includes('function Bar')); }); + it('should support splitting babel-polyfill using browserlist', async function() { + await bundle(__dirname + '/integration/babel-polyfill/index.js'); + + let file = await fs.readFile(__dirname + '/dist/index.js', 'utf8'); + assert(file.includes('async function')); + assert(!file.includes('regenerator')); + }); + it('should support compiling with babel using browserslist for different environments', async function() { async function testBrowserListMultipleEnv(projectBasePath) { // Transpiled destructuring, like r = p.prop1, o = p.prop2, a = p.prop3; From e7468cb871d1ad48fa6697a2d12bfc170dcb96cc Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 22:16:54 -0700 Subject: [PATCH 40/43] Add more babel version autoinstall tests --- test/integration/babel-6-autoinstall/.babelrc | 3 ++ test/integration/babel-6-autoinstall/index.js | 3 ++ .../babel-6-autoinstall/package.json | 3 ++ .../babel-6-compatibility/package.json | 6 +++ test/integration/babel-7-autoinstall/.babelrc | 3 ++ test/integration/babel-7-autoinstall/index.js | 3 ++ .../babel-7-autoinstall/package.json | 3 ++ test/javascript.js | 46 +++++++++++++++++++ 8 files changed, 70 insertions(+) create mode 100644 test/integration/babel-6-autoinstall/.babelrc create mode 100644 test/integration/babel-6-autoinstall/index.js create mode 100644 test/integration/babel-6-autoinstall/package.json create mode 100644 test/integration/babel-6-compatibility/package.json create mode 100644 test/integration/babel-7-autoinstall/.babelrc create mode 100644 test/integration/babel-7-autoinstall/index.js create mode 100644 test/integration/babel-7-autoinstall/package.json diff --git a/test/integration/babel-6-autoinstall/.babelrc b/test/integration/babel-6-autoinstall/.babelrc new file mode 100644 index 00000000000..002b4aa0d58 --- /dev/null +++ b/test/integration/babel-6-autoinstall/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["env"] +} diff --git a/test/integration/babel-6-autoinstall/index.js b/test/integration/babel-6-autoinstall/index.js new file mode 100644 index 00000000000..9e0528522b0 --- /dev/null +++ b/test/integration/babel-6-autoinstall/index.js @@ -0,0 +1,3 @@ +export default function () { + return 3; +} diff --git a/test/integration/babel-6-autoinstall/package.json b/test/integration/babel-6-autoinstall/package.json new file mode 100644 index 00000000000..c60911d3b62 --- /dev/null +++ b/test/integration/babel-6-autoinstall/package.json @@ -0,0 +1,3 @@ +{ + "name": "babel-6-autoinstall" +} diff --git a/test/integration/babel-6-compatibility/package.json b/test/integration/babel-6-compatibility/package.json new file mode 100644 index 00000000000..4c4dd6414ed --- /dev/null +++ b/test/integration/babel-6-compatibility/package.json @@ -0,0 +1,6 @@ +{ + "name": "babel-6-compatibility", + "devDependencies": { + "babel-core": "^6.26.3" + } +} diff --git a/test/integration/babel-7-autoinstall/.babelrc b/test/integration/babel-7-autoinstall/.babelrc new file mode 100644 index 00000000000..0ef5ffc2144 --- /dev/null +++ b/test/integration/babel-7-autoinstall/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/env"] +} diff --git a/test/integration/babel-7-autoinstall/index.js b/test/integration/babel-7-autoinstall/index.js new file mode 100644 index 00000000000..9e0528522b0 --- /dev/null +++ b/test/integration/babel-7-autoinstall/index.js @@ -0,0 +1,3 @@ +export default function () { + return 3; +} diff --git a/test/integration/babel-7-autoinstall/package.json b/test/integration/babel-7-autoinstall/package.json new file mode 100644 index 00000000000..ee223ad4137 --- /dev/null +++ b/test/integration/babel-7-autoinstall/package.json @@ -0,0 +1,3 @@ +{ + "name": "babel-7-autoinstall" +} diff --git a/test/javascript.js b/test/javascript.js index a79f646a3d4..b22c0879f3e 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -39,6 +39,52 @@ describe('javascript', function() { assert.equal(output.default(), 3); }); + it('should auto install babel-core v6', async function() { + let originalPkg = await fs.readFile( + __dirname + '/integration/babel-6-autoinstall/package.json' + ); + let b = await bundle( + __dirname + '/integration/babel-6-autoinstall/index.js' + ); + + let output = await run(b); + assert.equal(typeof output, 'object'); + assert.equal(typeof output.default, 'function'); + assert.equal(output.default(), 3); + + let pkg = await fs.readFile( + __dirname + '/integration/babel-6-autoinstall/package.json' + ); + assert(JSON.parse(pkg).devDependencies['babel-core']); + await fs.writeFile( + __dirname + '/integration/babel-6-autoinstall/package.json', + originalPkg + ); + }); + + it('should auto install @babel/core v7', async function() { + let originalPkg = await fs.readFile( + __dirname + '/integration/babel-7-autoinstall/package.json' + ); + let b = await bundle( + __dirname + '/integration/babel-7-autoinstall/index.js' + ); + + let output = await run(b); + assert.equal(typeof output, 'object'); + assert.equal(typeof output.default, 'function'); + assert.equal(output.default(), 3); + + let pkg = await fs.readFile( + __dirname + '/integration/babel-7-autoinstall/package.json' + ); + assert(JSON.parse(pkg).devDependencies['@babel/core']); + await fs.writeFile( + __dirname + '/integration/babel-7-autoinstall/package.json', + originalPkg + ); + }); + it('should produce a basic JS bundle with object rest spread support', async function() { let b = await bundle( __dirname + '/integration/object-rest-spread/object-rest-spread.js' From 6a53c001c908897cf4ee3122a27cf214d8e7105c Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 22:35:40 -0700 Subject: [PATCH 41/43] Resolve plugins relative to the correct dir --- src/transforms/babel/babel7.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/transforms/babel/babel7.js b/src/transforms/babel/babel7.js index 7de00b7d57e..6a3f8e39409 100644 --- a/src/transforms/babel/babel7.js +++ b/src/transforms/babel/babel7.js @@ -9,9 +9,12 @@ async function babel7(asset, options) { ? require('@babel/core') : await localRequire('@babel/core', asset.name); + let pkg = await asset.getPackage(); + config.code = false; config.ast = true; config.filename = asset.name; + config.cwd = pkg ? pkg.pkgdir : asset.options.rootDir; config.babelrc = false; config.configFile = false; config.parserOpts = Object.assign({}, config.parserOpts, { From 2e3872aa9d77e35ab2e26e06aac7e160d5dd3a92 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 22:35:52 -0700 Subject: [PATCH 42/43] Test autoinstalling babel plugins --- .../babel-plugin-autoinstall/.babelrc | 3 +++ .../babel-plugin-autoinstall/index.js | 3 +++ .../babel-plugin-autoinstall/package.json | 3 +++ test/javascript.js | 26 +++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 test/integration/babel-plugin-autoinstall/.babelrc create mode 100644 test/integration/babel-plugin-autoinstall/index.js create mode 100644 test/integration/babel-plugin-autoinstall/package.json diff --git a/test/integration/babel-plugin-autoinstall/.babelrc b/test/integration/babel-plugin-autoinstall/.babelrc new file mode 100644 index 00000000000..6fd4bf184d6 --- /dev/null +++ b/test/integration/babel-plugin-autoinstall/.babelrc @@ -0,0 +1,3 @@ +{ + "plugins": ["@babel/proposal-class-properties"] +} diff --git a/test/integration/babel-plugin-autoinstall/index.js b/test/integration/babel-plugin-autoinstall/index.js new file mode 100644 index 00000000000..9e0528522b0 --- /dev/null +++ b/test/integration/babel-plugin-autoinstall/index.js @@ -0,0 +1,3 @@ +export default function () { + return 3; +} diff --git a/test/integration/babel-plugin-autoinstall/package.json b/test/integration/babel-plugin-autoinstall/package.json new file mode 100644 index 00000000000..f6e1215bef5 --- /dev/null +++ b/test/integration/babel-plugin-autoinstall/package.json @@ -0,0 +1,3 @@ +{ + "name": "babel-plugin-autoinstall" +} diff --git a/test/javascript.js b/test/javascript.js index b22c0879f3e..522f7c74664 100644 --- a/test/javascript.js +++ b/test/javascript.js @@ -85,6 +85,32 @@ describe('javascript', function() { ); }); + it('should auto install babel plugins', async function() { + let originalPkg = await fs.readFile( + __dirname + '/integration/babel-plugin-autoinstall/package.json' + ); + let b = await bundle( + __dirname + '/integration/babel-plugin-autoinstall/index.js' + ); + + let output = await run(b); + assert.equal(typeof output, 'object'); + assert.equal(typeof output.default, 'function'); + assert.equal(output.default(), 3); + + let pkg = await fs.readFile( + __dirname + '/integration/babel-plugin-autoinstall/package.json' + ); + assert(JSON.parse(pkg).devDependencies['@babel/core']); + assert( + JSON.parse(pkg).devDependencies['@babel/plugin-proposal-class-properties'] + ); + await fs.writeFile( + __dirname + '/integration/babel-plugin-autoinstall/package.json', + originalPkg + ); + }); + it('should produce a basic JS bundle with object rest spread support', async function() { let b = await bundle( __dirname + '/integration/object-rest-spread/object-rest-spread.js' From 00e4ab08eb0a35c922b940446a093d9acb942647 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Sat, 15 Sep 2018 22:56:41 -0700 Subject: [PATCH 43/43] Upgrade browserslist --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dd2ce8a720a..a482ed3246a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@babel/types": "^7.0.0", "ansi-to-html": "^0.6.4", "babylon-walk": "^1.0.2", - "browserslist": "^3.2.6", + "browserslist": "^4.1.0", "chalk": "^2.1.0", "clone": "^2.1.1", "command-exists": "^1.2.6",