Add stage-3 plugin option (#384)

This commit is contained in:
Brian Ng 2017-09-19 14:24:15 -05:00 committed by Henry Zhu
parent 9f0f8d99d5
commit 27b155aa71
29 changed files with 732 additions and 140 deletions

View File

@ -1,5 +1,3 @@
// https://github.com/zloirock/core-js
const typedArrayMethods = [ const typedArrayMethods = [
"typed arrays / %TypedArray%.from", "typed arrays / %TypedArray%.from",
"typed arrays / %TypedArray%.of", "typed arrays / %TypedArray%.of",
@ -80,7 +78,18 @@ const es2015 = {
"es6.reflect.set": "Reflect / Reflect.set", "es6.reflect.set": "Reflect / Reflect.set",
"es6.reflect.set-prototype-of": "Reflect / Reflect.setPrototypeOf", "es6.reflect.set-prototype-of": "Reflect / Reflect.setPrototypeOf",
"es6.promise": "Promise", "es6.promise": {
features: [
"Promise / basic functionality",
"Promise / constructor requires new",
"Promise / Promise.prototype isn\'t an instance",
"Promise / Promise.all",
"Promise / Promise.all, generic iterables",
"Promise / Promise.race",
"Promise / Promise.race, generic iterables",
"Promise / Promise[Symbol.species]"
]
},
"es6.symbol": { "es6.symbol": {
features: [ features: [
@ -178,4 +187,6 @@ const es2017 = {
"es7.string.pad-end": "String padding / String.prototype.padEnd", "es7.string.pad-end": "String padding / String.prototype.padEnd",
}; };
module.exports = Object.assign({}, es2015, es2016, es2017); const stage3 = require("./stage3").builtIns;
module.exports = Object.assign({}, es2015, es2016, es2017, stage3);

View File

@ -164,7 +164,7 @@
"es6.reflect.construct": { "es6.reflect.construct": {
"chrome": "49", "chrome": "49",
"edge": "13", "edge": "13",
"firefox": "45", "firefox": "44",
"safari": "10", "safari": "10",
"node": "6", "node": "6",
"ios": "10", "ios": "10",
@ -691,6 +691,7 @@
"firefox": "23", "firefox": "23",
"safari": "7", "safari": "7",
"node": "0.12", "node": "0.12",
"android": "4.4",
"ios": "7", "ios": "7",
"opera": "17", "opera": "17",
"electron": "0.2" "electron": "0.2"
@ -824,5 +825,6 @@
"ios": "10", "ios": "10",
"opera": "44", "opera": "44",
"electron": "1.7" "electron": "1.7"
} },
"es7.promise.finally": {}
} }

View File

@ -135,4 +135,6 @@ const es2017 = {
} }
}; };
module.exports = Object.assign({}, es2015, es2016, es2017); const stage3 = require("./stage3").plugins;
module.exports = Object.assign({}, es2015, es2016, es2017, stage3);

View File

@ -62,7 +62,6 @@
}, },
"transform-es2015-destructuring": { "transform-es2015-destructuring": {
"chrome": "51", "chrome": "51",
"edge": "15",
"firefox": "53", "firefox": "53",
"safari": "10", "safari": "10",
"node": "6.5", "node": "6.5",
@ -238,5 +237,14 @@
"ios": "10", "ios": "10",
"opera": "45", "opera": "45",
"electron": "1.7" "electron": "1.7"
} },
"transform-async-generator-functions": {},
"transform-object-rest-spread": {
"chrome": "60",
"firefox": "55",
"node": "8.3",
"opera": "47"
},
"transform-optional-catch-binding": {},
"transform-unicode-property-regex": {}
} }

View File

@ -0,0 +1,19 @@
const builtIns = {
"es7.promise.finally": "Promise.prototype.finally"
};
const plugins = {
"transform-async-generator-functions": "Asynchronous Iterators",
"transform-object-rest-spread": "object rest/spread properties",
"transform-optional-catch-binding": "optional catch binding",
"transform-unicode-property-regex": "RegExp Unicode Property Escapes",
};
const pluginSyntaxMap = new Map([
["transform-async-generator-functions", "syntax-async-generators"],
["transform-object-rest-spread", "syntax-object-rest-spread"],
["transform-optional-catch-binding", "syntax-optional-catch-binding"],
["transform-unicode-property-regex", null],
]);
module.exports = { builtIns, plugins, pluginSyntaxMap };

View File

@ -26,8 +26,12 @@
}, },
"dependencies": { "dependencies": {
"babel-plugin-check-es2015-constants": "7.0.0-beta.0", "babel-plugin-check-es2015-constants": "7.0.0-beta.0",
"babel-plugin-syntax-async-generators": "7.0.0-beta.0",
"babel-plugin-syntax-object-rest-spread": "7.0.0-beta.0",
"babel-plugin-syntax-optional-catch-binding": "7.0.0-beta.0",
"babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0", "babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0",
"babel-plugin-transform-async-to-generator": "7.0.0-beta.0", "babel-plugin-transform-async-to-generator": "7.0.0-beta.0",
"babel-plugin-transform-async-generator-functions": "7.0.0-beta.0",
"babel-plugin-transform-es2015-arrow-functions": "7.0.0-beta.0", "babel-plugin-transform-es2015-arrow-functions": "7.0.0-beta.0",
"babel-plugin-transform-es2015-block-scoped-functions": "7.0.0-beta.0", "babel-plugin-transform-es2015-block-scoped-functions": "7.0.0-beta.0",
"babel-plugin-transform-es2015-block-scoping": "7.0.0-beta.0", "babel-plugin-transform-es2015-block-scoping": "7.0.0-beta.0",
@ -53,6 +57,9 @@
"babel-plugin-transform-exponentiation-operator": "7.0.0-beta.0", "babel-plugin-transform-exponentiation-operator": "7.0.0-beta.0",
"babel-plugin-transform-new-target": "7.0.0-beta.0", "babel-plugin-transform-new-target": "7.0.0-beta.0",
"babel-plugin-transform-regenerator": "7.0.0-beta.0", "babel-plugin-transform-regenerator": "7.0.0-beta.0",
"babel-plugin-transform-object-rest-spread": "7.0.0-beta.0",
"babel-plugin-transform-optional-catch-binding": "7.0.0-beta.0",
"babel-plugin-transform-unicode-property-regex": "^2.0.5",
"browserslist": "^2.4.0", "browserslist": "^2.4.0",
"invariant": "^2.2.2", "invariant": "^2.2.2",
"semver": "^5.3.0" "semver": "^5.3.0"
@ -68,7 +75,7 @@
"babel-register": "7.0.0-alpha.16", "babel-register": "7.0.0-alpha.16",
"chai": "^4.0.2", "chai": "^4.0.2",
"codecov": "^2.2.0", "codecov": "^2.2.0",
"compat-table": "kangax/compat-table#d88c80ea6dcbc7064112eb46bb020718107892f7", "compat-table": "kangax/compat-table#b8477cc0f6d65c000c46213e654d19f350de9fa8",
"eslint": "^3.17.1", "eslint": "^3.17.1",
"eslint-config-babel": "^6.0.0", "eslint-config-babel": "^6.0.0",
"eslint-plugin-flowtype": "^2.33.0", "eslint-plugin-flowtype": "^2.33.0",

View File

@ -3,14 +3,11 @@
const fs = require("fs"); const fs = require("fs");
const path = require("path"); const path = require("path");
const flatten = require("lodash/flatten");
const flattenDeep = require("lodash/flattenDeep"); const flattenDeep = require("lodash/flattenDeep");
const isEqual = require("lodash/isEqual"); const isEqual = require("lodash/isEqual");
const mapValues = require("lodash/mapValues"); const mapValues = require("lodash/mapValues");
const pickBy = require("lodash/pickBy"); const pickBy = require("lodash/pickBy");
const electronToChromiumVersions = require("electron-to-chromium").versions; const electronToChromiumVersions = require("electron-to-chromium").versions;
const pluginFeatures = require("../data/plugin-features");
const builtInFeatures = require("../data/built-in-features");
const electronToChromiumKeys = Object.keys( const electronToChromiumKeys = Object.keys(
electronToChromiumVersions electronToChromiumVersions
@ -36,8 +33,10 @@ const findClosestElectronVersion = targetVersion => {
const chromiumToElectron = chromium => const chromiumToElectron = chromium =>
chromiumToElectronMap[chromium] || findClosestElectronVersion(chromium); chromiumToElectronMap[chromium] || findClosestElectronVersion(chromium);
const renameTests = (tests, getName) => const renameTests = (tests, getName, category) =>
tests.map(test => Object.assign({}, test, { name: getName(test.name) })); tests.map(test =>
Object.assign({}, test, { name: getName(test.name), category })
);
// The following is adapted from compat-table: // The following is adapted from compat-table:
// https://github.com/kangax/compat-table/blob/gh-pages/build.js // https://github.com/kangax/compat-table/blob/gh-pages/build.js
@ -54,11 +53,16 @@ const byTestSuite = suite => browser => {
: true; : true;
}; };
const es6 = require("compat-table/data-es6"); const compatSources = [
es6.browsers = pickBy(envs, byTestSuite("es6")); "es6",
"es2016plus",
const es2016plus = require("compat-table/data-es2016plus"); "esnext",
es2016plus.browsers = pickBy(envs, byTestSuite("es2016plus")); ].reduce((result, source) => {
const data = require(`compat-table/data-${source}`);
data.browsers = pickBy(envs, byTestSuite(source));
result.push(data);
return result;
}, []);
const interpolateAllResults = (rawBrowsers, tests) => { const interpolateAllResults = (rawBrowsers, tests) => {
const interpolateResults = res => { const interpolateResults = res => {
@ -111,8 +115,9 @@ const interpolateAllResults = (rawBrowsers, tests) => {
}); });
}; };
interpolateAllResults(es6.browsers, es6.tests); compatSources.forEach(({ browsers, tests }) =>
interpolateAllResults(es2016plus.browsers, es2016plus.tests); interpolateAllResults(browsers, tests)
);
// End of compat-table code adaptation // End of compat-table code adaptation
@ -130,44 +135,55 @@ const environments = [
]; ];
const compatibilityTests = flattenDeep( const compatibilityTests = flattenDeep(
[es6, es2016plus].map(data => compatSources.map(data =>
data.tests.map(test => { data.tests.map(test => {
return test.subtests return test.subtests
? [test, renameTests(test.subtests, name => test.name + " / " + name)] ? [
test,
renameTests(
test.subtests,
name => test.name + " / " + name,
test.category
),
]
: test; : test;
}) })
) )
); );
const getLowestImplementedVersion = ({ features }, env) => { const getLowestImplementedVersion = ({ features }, env) => {
const tests = flatten( const tests = compatibilityTests
compatibilityTests .filter(test => {
.filter(test => { return (
return ( features.indexOf(test.name) >= 0 ||
features.indexOf(test.name) >= 0 || // for features === ["DataView"]
// for features === ["DataView"] // it covers "DataView (Int8)" and "DataView (UInt8)"
// it covers "DataView (Int8)" and "DataView (UInt8)" (features.length === 1 && test.name.indexOf(features[0]) === 0)
(features.length === 1 && test.name.indexOf(features[0]) === 0) );
); })
}) .reduce((result, test) => {
.map(test => { const isBuiltIn =
const isBuiltIn = test.category === "built-ins" ||
test.category === "built-ins" || test.category === "built-in extensions";
test.category === "built-in extensions";
return test.subtests if (!test.subtests) {
? test.subtests.map(subtest => ({ result.push({
name: `${test.name}/${subtest.name}`, name: test.name,
res: subtest.res, res: test.res,
isBuiltIn, isBuiltIn,
})) });
: { } else {
name: test.name, test.subtests.forEach(subtest =>
res: test.res, result.push({
isBuiltIn, name: `${test.name}/${subtest.name}`,
}; res: subtest.res,
}) isBuiltIn,
); })
);
}
return result;
}, []);
const envTests = tests.map(({ res: test, name, isBuiltIn }, i) => { const envTests = tests.map(({ res: test, name, isBuiltIn }, i) => {
// Babel itself doesn't implement the feature correctly, // Babel itself doesn't implement the feature correctly,
@ -221,6 +237,7 @@ const generateData = (environments, features) => {
environments.forEach(env => { environments.forEach(env => {
const version = getLowestImplementedVersion(options, env); const version = getLowestImplementedVersion(options, env);
if (version !== null) { if (version !== null) {
plugin[env] = version.toString(); plugin[env] = version.toString();
} }
@ -245,36 +262,26 @@ const generateData = (environments, features) => {
}); });
}; };
const pluginsDataPath = path.join(__dirname, "../data/plugins.json"); ["plugin", "built-in"].forEach(target => {
const builtInsDataPath = path.join(__dirname, "../data/built-ins.json"); const newData = generateData(
environments,
require(`../data/${target}-features`)
);
const dataPath = path.join(__dirname, `../data/${target}s.json`);
const newPluginData = generateData(environments, pluginFeatures); if (process.argv[2] === "--check") {
const newBuiltInsData = generateData(environments, builtInFeatures); const currentData = require(dataPath);
if (process.argv[2] === "--check") { if (!isEqual(currentData, newData)) {
const currentPluginData = require(pluginsDataPath); console.error(
const currentBuiltInsData = require(builtInsDataPath); "The newly generated plugin/built-in data does not match the current " +
"files. Re-run `npm run build-data`."
);
process.exit(1);
}
if ( process.exit(0);
!isEqual(currentPluginData, newPluginData) ||
!isEqual(currentBuiltInsData, newBuiltInsData)
) {
console.error(
"The newly generated plugin/built-in data does not match the current " +
"files. Re-run `npm run build-data`."
);
process.exit(1);
} }
process.exit(0); fs.writeFileSync(dataPath, `${JSON.stringify(newData, null, 2)}\n`);
} });
fs.writeFileSync(
pluginsDataPath,
JSON.stringify(newPluginData, null, 2) + "\n"
);
fs.writeFileSync(
builtInsDataPath,
JSON.stringify(newBuiltInsData, null, 2) + "\n"
);

View File

@ -1,7 +1,11 @@
export default { export default {
"check-es2015-constants": require("babel-plugin-check-es2015-constants"), "check-es2015-constants": require("babel-plugin-check-es2015-constants"),
"syntax-async-generators": require("babel-plugin-syntax-async-generators"),
"syntax-object-rest-spread": require("babel-plugin-syntax-object-rest-spread"),
"syntax-optional-catch-binding": require("babel-plugin-syntax-optional-catch-binding"),
"syntax-trailing-function-commas": require("babel-plugin-syntax-trailing-function-commas"), "syntax-trailing-function-commas": require("babel-plugin-syntax-trailing-function-commas"),
"transform-async-to-generator": require("babel-plugin-transform-async-to-generator"), "transform-async-to-generator": require("babel-plugin-transform-async-to-generator"),
"transform-async-generator-functions": require("babel-plugin-transform-async-generator-functions"),
"transform-es2015-arrow-functions": require("babel-plugin-transform-es2015-arrow-functions"), "transform-es2015-arrow-functions": require("babel-plugin-transform-es2015-arrow-functions"),
"transform-es2015-block-scoped-functions": require("babel-plugin-transform-es2015-block-scoped-functions"), "transform-es2015-block-scoped-functions": require("babel-plugin-transform-es2015-block-scoped-functions"),
"transform-es2015-block-scoping": require("babel-plugin-transform-es2015-block-scoping"), "transform-es2015-block-scoping": require("babel-plugin-transform-es2015-block-scoping"),
@ -26,5 +30,8 @@ export default {
"transform-es2015-unicode-regex": require("babel-plugin-transform-es2015-unicode-regex"), "transform-es2015-unicode-regex": require("babel-plugin-transform-es2015-unicode-regex"),
"transform-exponentiation-operator": require("babel-plugin-transform-exponentiation-operator"), "transform-exponentiation-operator": require("babel-plugin-transform-exponentiation-operator"),
"transform-new-target": require("babel-plugin-transform-new-target"), "transform-new-target": require("babel-plugin-transform-new-target"),
"transform-object-rest-spread": require("babel-plugin-transform-object-rest-spread"),
"transform-optional-catch-binding": require("babel-plugin-transform-optional-catch-binding"),
"transform-regenerator": require("babel-plugin-transform-regenerator"), "transform-regenerator": require("babel-plugin-transform-regenerator"),
"transform-unicode-property-regex": require("babel-plugin-transform-unicode-property-regex"),
}; };

View File

@ -7,13 +7,36 @@ import { defaultWebIncludes } from "./default-includes";
import moduleTransformations from "./module-transformations"; import moduleTransformations from "./module-transformations";
import normalizeOptions from "./normalize-options.js"; import normalizeOptions from "./normalize-options.js";
import pluginList from "../data/plugins.json"; import pluginList from "../data/plugins.json";
import {
builtIns as stage3BuiltIns,
plugins as stage3Plugins,
pluginSyntaxMap,
} from "../data/stage3.js";
import useBuiltInsEntryPlugin from "./use-built-ins-entry-plugin"; import useBuiltInsEntryPlugin from "./use-built-ins-entry-plugin";
import addUsedBuiltInsPlugin from "./use-built-ins-plugin"; import addUsedBuiltInsPlugin from "./use-built-ins-plugin";
import getTargets from "./targets-parser"; import getTargets from "./targets-parser";
import availablePlugins from "./available-plugins"; import availablePlugins from "./available-plugins";
import { prettifyTargets, semverify } from "./utils"; import { filterStageFromList, prettifyTargets, semverify } from "./utils";
import type { Plugin, Targets } from "./types"; import type { Plugin, Targets } from "./types";
const getPlugin = (pluginName: string) => {
const plugin = availablePlugins[pluginName];
if (!plugin) {
throw new Error(
`Could not find plugin "${pluginName}". Ensure there is an entry in ./available-plugins.js for it.`,
);
}
return plugin;
};
const builtInsListWithoutStage3 = filterStageFromList(
builtInsList,
stage3BuiltIns,
);
const pluginListWithoutStage3 = filterStageFromList(pluginList, stage3Plugins);
export const isPluginRequired = ( export const isPluginRequired = (
supportedEnvironments: Targets, supportedEnvironments: Targets,
plugin: Targets, plugin: Targets,
@ -84,14 +107,28 @@ const getPlatformSpecificDefaultFor = (targets: Targets): ?Array<string> => {
return isAnyTarget || isWebTarget ? defaultWebIncludes : null; return isAnyTarget || isWebTarget ? defaultWebIncludes : null;
}; };
const filterItems = (list, includes, excludes, targets, defaultItems) => { const filterItems = (
list,
includes,
excludes,
targets,
defaultItems,
): Set<string> => {
const result = new Set(); const result = new Set();
for (const item in list) { for (const item in list) {
const excluded = excludes.has(item); const excluded = excludes.has(item);
if (!excluded && isPluginRequired(targets, list[item])) { if (!excluded) {
result.add(item); if (isPluginRequired(targets, list[item])) {
result.add(item);
} else {
const stage3Syntax = pluginSyntaxMap.get(item);
if (stage3Syntax) {
result.add(stage3Syntax);
}
}
} }
} }
@ -118,6 +155,7 @@ export default function buildPreset(
loose, loose,
modules, modules,
spec, spec,
stage3,
targets: optionsTargets, targets: optionsTargets,
useBuiltIns, useBuiltIns,
} = normalizeOptions(opts); } = normalizeOptions(opts);
@ -144,7 +182,7 @@ export default function buildPreset(
const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets; const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;
const transformations = filterItems( const transformations = filterItems(
pluginList, stage3 ? pluginList : pluginListWithoutStage3,
include.plugins, include.plugins,
exclude.plugins, exclude.plugins,
transformTargets, transformTargets,
@ -157,7 +195,7 @@ export default function buildPreset(
polyfillTargets = getBuiltInTargets(targets); polyfillTargets = getBuiltInTargets(targets);
polyfills = filterItems( polyfills = filterItems(
builtInsList, stage3 ? builtInsList : builtInsListWithoutStage3,
include.builtIns, include.builtIns,
exclude.builtIns, exclude.builtIns,
polyfillTargets, polyfillTargets,
@ -166,15 +204,19 @@ export default function buildPreset(
} }
const plugins = []; const plugins = [];
const pluginUseBuiltIns = useBuiltIns !== false;
if (modules !== false && moduleTransformations[modules]) {
plugins.push([availablePlugins[moduleTransformations[modules]], { loose }]);
}
// NOTE: not giving spec here yet to avoid compatibility issues when // NOTE: not giving spec here yet to avoid compatibility issues when
// babel-plugin-transform-es2015-modules-commonjs gets its spec mode // babel-plugin-transform-es2015-modules-commonjs gets its spec mode
if (modules !== false && moduleTransformations[modules]) {
plugins.push([getPlugin(moduleTransformations[modules]), { loose }]);
}
transformations.forEach(pluginName => transformations.forEach(pluginName =>
plugins.push([availablePlugins[pluginName], { spec, loose }]), plugins.push([
getPlugin(pluginName),
{ spec, loose, useBuiltIns: pluginUseBuiltIns },
]),
); );
const regenerator = transformations.has("transform-regenerator"); const regenerator = transformations.has("transform-regenerator");

View File

@ -91,15 +91,6 @@ export const validateBoolOption = (
return value; return value;
}; };
export const validateLooseOption = (looseOpt: boolean) =>
validateBoolOption("loose", looseOpt, false);
export const validateSpecOption = (specOpt: boolean) =>
validateBoolOption("spec", specOpt, false);
export const validateForceAllTransformsOption = (forceAllTransforms: boolean) =>
validateBoolOption("forceAllTransforms", forceAllTransforms, false);
export const validateIgnoreBrowserslistConfig = ( export const validateIgnoreBrowserslistConfig = (
ignoreBrowserslistConfig: boolean, ignoreBrowserslistConfig: boolean,
) => ) =>
@ -161,16 +152,19 @@ export default function normalizeOptions(opts: Options) {
configPath: validateConfigPathOption(opts.configPath), configPath: validateConfigPathOption(opts.configPath),
debug: opts.debug, debug: opts.debug,
exclude: validateIncludesAndExcludes(opts.exclude, "exclude"), exclude: validateIncludesAndExcludes(opts.exclude, "exclude"),
forceAllTransforms: validateForceAllTransformsOption( forceAllTransforms: validateBoolOption(
"forceAllTransforms",
opts.forceAllTransforms, opts.forceAllTransforms,
false,
), ),
ignoreBrowserslistConfig: validateIgnoreBrowserslistConfig( ignoreBrowserslistConfig: validateIgnoreBrowserslistConfig(
opts.ignoreBrowserslistConfig, opts.ignoreBrowserslistConfig,
), ),
include: validateIncludesAndExcludes(opts.include, "include"), include: validateIncludesAndExcludes(opts.include, "include"),
loose: validateLooseOption(opts.loose), loose: validateBoolOption("loose", opts.loose, false),
modules: validateModulesOption(opts.modules), modules: validateModulesOption(opts.modules),
spec: validateSpecOption(opts.spec), spec: validateBoolOption("loose", opts.spec, false),
stage3: validateBoolOption("stage3", opts.stage3, false),
targets: opts.targets, targets: opts.targets,
useBuiltIns: validateUseBuiltInsOption(opts.useBuiltIns), useBuiltIns: validateUseBuiltInsOption(opts.useBuiltIns),
}; };

View File

@ -21,6 +21,7 @@ export type Options = {
loose: boolean, loose: boolean,
modules: ModuleOption, modules: ModuleOption,
spec: boolean, spec: boolean,
stage3: boolean,
targets: Targets, targets: Targets,
useBuiltIns: BuiltInsOption, useBuiltIns: BuiltInsOption,
}; };

View File

@ -51,3 +51,13 @@ export const prettifyTargets = (targets: Targets): Object => {
return results; return results;
}, {}); }, {});
}; };
export const filterStageFromList = (list: any, stageList: any) => {
return Object.keys(list).reduce((result, item) => {
if (!stageList[item]) {
result[item] = list[item];
}
return result;
}, {});
};

View File

@ -0,0 +1 @@
import 'babel-polyfill';

View File

@ -0,0 +1,12 @@
{
"presets": [
["../../lib", {
"debug": true,
"targets": {
"browsers": "chrome 60"
},
"stage3": true,
"useBuiltIns": "entry"
}]
]
}

View File

@ -0,0 +1,23 @@
babel-preset-env: `DEBUG` option
Using targets:
{
"chrome": "60"
}
Using modules transform: commonjs
Using plugins:
transform-async-generator-functions { "chrome":"60" }
syntax-object-rest-spread { "chrome":"60" }
transform-optional-catch-binding { "chrome":"60" }
transform-unicode-property-regex { "chrome":"60" }
Using polyfills with `entry` option:
[src/in.js] Replaced `babel-polyfill` with the following polyfills:
es7.promise.finally { "chrome":"60" }
web.timers { "chrome":"60" }
web.immediate { "chrome":"60" }
web.dom.iterable { "chrome":"60" }
src/in.js -> lib/in.js

View File

@ -0,0 +1 @@
import 'babel-polyfill';

View File

@ -0,0 +1,9 @@
{
"presets": [
["../../lib", {
"debug": true,
"stage3": true,
"useBuiltIns": "entry"
}]
]
}

View File

@ -0,0 +1,128 @@
babel-preset-env: `DEBUG` option
Using targets:
{}
Using modules transform: commonjs
Using plugins:
check-es2015-constants {}
transform-es2015-arrow-functions {}
transform-es2015-block-scoped-functions {}
transform-es2015-block-scoping {}
transform-es2015-classes {}
transform-es2015-computed-properties {}
transform-es2015-destructuring {}
transform-es2015-duplicate-keys {}
transform-es2015-for-of {}
transform-es2015-function-name {}
transform-es2015-literals {}
transform-es2015-object-super {}
transform-es2015-parameters {}
transform-es2015-shorthand-properties {}
transform-es2015-spread {}
transform-es2015-sticky-regex {}
transform-es2015-template-literals {}
transform-es2015-typeof-symbol {}
transform-es2015-unicode-regex {}
transform-new-target {}
transform-regenerator {}
transform-exponentiation-operator {}
transform-async-to-generator {}
syntax-trailing-function-commas {}
transform-async-generator-functions {}
transform-object-rest-spread {}
transform-optional-catch-binding {}
transform-unicode-property-regex {}
Using polyfills with `entry` option:
[src/in.js] Replaced `babel-polyfill` with the following polyfills:
es6.typed.array-buffer {}
es6.typed.data-view {}
es6.typed.int8-array {}
es6.typed.uint8-array {}
es6.typed.uint8-clamped-array {}
es6.typed.int16-array {}
es6.typed.uint16-array {}
es6.typed.int32-array {}
es6.typed.uint32-array {}
es6.typed.float32-array {}
es6.typed.float64-array {}
es6.map {}
es6.set {}
es6.weak-map {}
es6.weak-set {}
es6.reflect.apply {}
es6.reflect.construct {}
es6.reflect.define-property {}
es6.reflect.delete-property {}
es6.reflect.get {}
es6.reflect.get-own-property-descriptor {}
es6.reflect.get-prototype-of {}
es6.reflect.has {}
es6.reflect.is-extensible {}
es6.reflect.own-keys {}
es6.reflect.prevent-extensions {}
es6.reflect.set {}
es6.reflect.set-prototype-of {}
es6.promise {}
es6.symbol {}
es6.object.assign {}
es6.object.is {}
es6.object.set-prototype-of {}
es6.function.name {}
es6.string.raw {}
es6.string.from-code-point {}
es6.string.code-point-at {}
es6.string.repeat {}
es6.string.starts-with {}
es6.string.ends-with {}
es6.string.includes {}
es6.regexp.flags {}
es6.regexp.match {}
es6.regexp.replace {}
es6.regexp.split {}
es6.regexp.search {}
es6.array.from {}
es6.array.of {}
es6.array.copy-within {}
es6.array.find {}
es6.array.find-index {}
es6.array.fill {}
es6.array.iterator {}
es6.number.is-finite {}
es6.number.is-integer {}
es6.number.is-safe-integer {}
es6.number.is-nan {}
es6.number.epsilon {}
es6.number.min-safe-integer {}
es6.number.max-safe-integer {}
es6.math.acosh {}
es6.math.asinh {}
es6.math.atanh {}
es6.math.cbrt {}
es6.math.clz32 {}
es6.math.cosh {}
es6.math.expm1 {}
es6.math.fround {}
es6.math.hypot {}
es6.math.imul {}
es6.math.log1p {}
es6.math.log10 {}
es6.math.log2 {}
es6.math.sign {}
es6.math.sinh {}
es6.math.tanh {}
es6.math.trunc {}
es7.array.includes {}
es7.object.values {}
es7.object.entries {}
es7.object.get-own-property-descriptors {}
es7.string.pad-start {}
es7.string.pad-end {}
es7.promise.finally {}
web.timers {}
web.immediate {}
web.dom.iterable {}
src/in.js -> lib/in.js

View File

@ -0,0 +1,6 @@
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ...z };
async function* agf() {
await 1;
yield 2;
}

View File

@ -0,0 +1,48 @@
"use strict";
var _asyncGenerator = function () { function AwaitValue(value) { this.value = value; } function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; return { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function _await(value) { return new AwaitValue(value); } }; }();
var agf = function () {
var _ref = _asyncGenerator.wrap(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _asyncGenerator.await(1);
case 2:
_context.next = 4;
return 2;
case 4:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function agf() {
return _ref.apply(this, arguments);
};
}();
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
var _x$y$a$b = {
x: 1,
y: 2,
a: 3,
b: 4
},
x = _x$y$a$b.x,
y = _x$y$a$b.y,
z = _objectWithoutProperties(_x$y$a$b, ["x", "y"]);
var n = Object.assign({
x: x,
y: y
}, z);

View File

@ -0,0 +1,8 @@
{
"presets": [
["../../../../lib", {
"stage3": true,
"useBuiltIns": "entry"
}]
]
}

View File

@ -0,0 +1,6 @@
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ...z };
async function* agf() {
await 1;
yield 2;
}

View File

@ -0,0 +1,56 @@
"use strict";
var _asyncGenerator = function () { function AwaitValue(value) { this.value = value; } function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; return { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function _await(value) { return new AwaitValue(value); } }; }();
var agf = function () {
var _ref = _asyncGenerator.wrap(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _asyncGenerator.await(1);
case 2:
_context.next = 4;
return 2;
case 4:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function agf() {
return _ref.apply(this, arguments);
};
}();
require("babel-polyfill/lib/core-js/modules/es6.symbol");
require("babel-polyfill/lib/core-js/modules/es6.promise");
require("babel-polyfill/lib/regenerator-runtime/runtime");
require("babel-polyfill/lib/core-js/modules/es6.object.assign");
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
var _x$y$a$b = {
x: 1,
y: 2,
a: 3,
b: 4
},
x = _x$y$a$b.x,
y = _x$y$a$b.y,
z = _objectWithoutProperties(_x$y$a$b, ["x", "y"]);
var n = Object.assign({
x: x,
y: y
}, z);

View File

@ -0,0 +1,8 @@
{
"presets": [
["../../../../lib", {
"stage3": true,
"useBuiltIns": "usage"
}]
]
}

View File

@ -0,0 +1,6 @@
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ...z };
async function* agf() {
await 1;
yield 2;
}

View File

@ -0,0 +1,50 @@
"use strict";
var _asyncGenerator = function () { function AwaitValue(value) { this.value = value; } function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; return { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function _await(value) { return new AwaitValue(value); } }; }();
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var agf = function () {
var _ref = _asyncGenerator.wrap(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _asyncGenerator.await(1);
case 2:
_context.next = 4;
return 2;
case 4:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function agf() {
return _ref.apply(this, arguments);
};
}();
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
var _x$y$a$b = {
x: 1,
y: 2,
a: 3,
b: 4
},
x = _x$y$a$b.x,
y = _x$y$a$b.y,
z = _objectWithoutProperties(_x$y$a$b, ["x", "y"]);
var n = _extends({
x: x,
y: y
}, z);

View File

@ -0,0 +1,7 @@
{
"presets": [
["../../../../lib", {
"stage3": true
}]
]
}

View File

@ -6,11 +6,9 @@ const assert = require("assert");
const { const {
checkDuplicateIncludeExcludes, checkDuplicateIncludeExcludes,
normalizePluginNames, normalizePluginNames,
validateForceAllTransformsOption, validateBoolOption,
validateIncludesAndExcludes, validateIncludesAndExcludes,
validateLooseOption,
validateModulesOption, validateModulesOption,
validateSpecOption,
} = normalizeOptions; } = normalizeOptions;
describe("normalize-options", () => { describe("normalize-options", () => {
@ -39,31 +37,25 @@ describe("normalize-options", () => {
}); });
}); });
const testBoolOption = validator => { describe("validateBoolOption", () => {
describe(validator.name, () => { it("`undefined` option returns false", () => {
it("`undefined` option returns false", () => { assert(validateBoolOption("test", undefined, false) === false);
assert(validator() === false); });
});
it("`false` option returns false", () => { it("`false` option returns false", () => {
assert(validator(false) === false); assert(validateBoolOption("test", false, false) === false);
}); });
it("`true` option returns true", () => { it("`true` option returns true", () => {
assert(validator(true) === true); assert(validateBoolOption("test", true, false) === true);
}); });
it("array option is invalid", () => { it("array option is invalid", () => {
assert.throws(() => { assert.throws(() => {
validateLooseOption([]); validateBoolOption("test", [], false);
});
}); });
}); });
}; });
testBoolOption(validateLooseOption);
testBoolOption(validateSpecOption);
testBoolOption(validateForceAllTransformsOption);
describe("checkDuplicateIncludeExcludes", function() { describe("checkDuplicateIncludeExcludes", function() {
it("should throw if duplicate names in both", function() { it("should throw if duplicate names in both", function() {

View File

@ -558,6 +558,14 @@ babel-helper-regex@^6.24.1:
babel-types "^6.24.1" babel-types "^6.24.1"
lodash "^4.2.0" lodash "^4.2.0"
babel-helper-regex@^6.26.0:
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@7.0.0-alpha.16: babel-helper-remap-async-to-generator@7.0.0-alpha.16:
version "7.0.0-alpha.16" version "7.0.0-alpha.16"
resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-7.0.0-alpha.16.tgz#3c68be8d7bebe6e64bfcd0d9a21553e859a5dc07" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-7.0.0-alpha.16.tgz#3c68be8d7bebe6e64bfcd0d9a21553e859a5dc07"
@ -709,6 +717,10 @@ babel-plugin-syntax-async-functions@^6.8.0:
version "6.13.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" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
babel-plugin-syntax-async-generators@7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-7.0.0-beta.0.tgz#a89061e968d4f4c2ee2f8a5b9c84eed19ec48488"
babel-plugin-syntax-async-generators@^6.5.0: babel-plugin-syntax-async-generators@^6.5.0:
version "6.13.0" version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a"
@ -757,10 +769,18 @@ babel-plugin-syntax-function-bind@^6.8.0:
version "6.13.0" version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46"
babel-plugin-syntax-object-rest-spread@7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-7.0.0-beta.0.tgz#34a1eee484acfb0a89effc364e386a8d769286eb"
babel-plugin-syntax-object-rest-spread@^6.8.0: babel-plugin-syntax-object-rest-spread@^6.8.0:
version "6.13.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" 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-optional-catch-binding@7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-optional-catch-binding/-/babel-plugin-syntax-optional-catch-binding-7.0.0-beta.0.tgz#9c92545c42865954c544f480648e179ba15757fb"
babel-plugin-syntax-trailing-function-commas@7.0.0-alpha.16: babel-plugin-syntax-trailing-function-commas@7.0.0-alpha.16:
version "7.0.0-alpha.16" version "7.0.0-alpha.16"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-alpha.16.tgz#daed195b88dcc26db401d51a58d346808b8e4585" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-alpha.16.tgz#daed195b88dcc26db401d51a58d346808b8e4585"
@ -773,6 +793,13 @@ babel-plugin-syntax-trailing-function-commas@^6.22.0:
version "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" 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-generator-functions@7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-7.0.0-beta.0.tgz#df506a7b90fe7a707f8ca8f309435df6b651ccf4"
dependencies:
babel-helper-remap-async-to-generator "7.0.0-beta.0"
babel-plugin-syntax-async-generators "7.0.0-beta.0"
babel-plugin-transform-async-generator-functions@^6.24.1: babel-plugin-transform-async-generator-functions@^6.24.1:
version "6.24.1" version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db"
@ -1327,6 +1354,12 @@ babel-plugin-transform-new-target@7.0.0-beta.0:
version "7.0.0-beta.0" version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-new-target/-/babel-plugin-transform-new-target-7.0.0-beta.0.tgz#0ded2d30b0e889a2916384d4955de96ddd2c2764" resolved "https://registry.yarnpkg.com/babel-plugin-transform-new-target/-/babel-plugin-transform-new-target-7.0.0-beta.0.tgz#0ded2d30b0e889a2916384d4955de96ddd2c2764"
babel-plugin-transform-object-rest-spread@7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-7.0.0-beta.0.tgz#51b6cabe5b55dc63d4fe0287b3df23a7691b11d4"
dependencies:
babel-plugin-syntax-object-rest-spread "7.0.0-beta.0"
babel-plugin-transform-object-rest-spread@^6.22.0: babel-plugin-transform-object-rest-spread@^6.22.0:
version "6.23.0" version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921"
@ -1334,6 +1367,12 @@ babel-plugin-transform-object-rest-spread@^6.22.0:
babel-plugin-syntax-object-rest-spread "^6.8.0" babel-plugin-syntax-object-rest-spread "^6.8.0"
babel-runtime "^6.22.0" babel-runtime "^6.22.0"
babel-plugin-transform-optional-catch-binding@7.0.0-beta.0:
version "7.0.0-beta.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-optional-catch-binding/-/babel-plugin-transform-optional-catch-binding-7.0.0-beta.0.tgz#363bcd26e133dd28ba1eb9b2680d1bf99c250294"
dependencies:
babel-plugin-syntax-optional-catch-binding "7.0.0-beta.0"
babel-plugin-transform-regenerator@7.0.0-alpha.16: babel-plugin-transform-regenerator@7.0.0-alpha.16:
version "7.0.0-alpha.16" version "7.0.0-alpha.16"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-7.0.0-alpha.16.tgz#892ccde496b9187c8517ca01eb1e86b7636e58ea" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-7.0.0-alpha.16.tgz#892ccde496b9187c8517ca01eb1e86b7636e58ea"
@ -1371,6 +1410,13 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0" babel-runtime "^6.22.0"
babel-types "^6.24.1" babel-types "^6.24.1"
babel-plugin-transform-unicode-property-regex@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-unicode-property-regex/-/babel-plugin-transform-unicode-property-regex-2.0.5.tgz#24922190f9598384d258a6c8e7409309dc6f3898"
dependencies:
babel-helper-regex "^6.26.0"
regexpu-core "^4.1.3"
babel-polyfill@7.0.0-alpha.16: babel-polyfill@7.0.0-alpha.16:
version "7.0.0-alpha.16" version "7.0.0-alpha.16"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-7.0.0-alpha.16.tgz#3cd865f5eb18dd065916fac33aafcf4617ca2956" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-7.0.0-alpha.16.tgz#3cd865f5eb18dd065916fac33aafcf4617ca2956"
@ -1530,6 +1576,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0:
core-js "^2.4.0" core-js "^2.4.0"
regenerator-runtime "^0.10.0" regenerator-runtime "^0.10.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@7.0.0-alpha.16: babel-template@7.0.0-alpha.16:
version "7.0.0-alpha.16" version "7.0.0-alpha.16"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-alpha.16.tgz#f8bec2b5074e150c47b415d13db231b15e45598d" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-7.0.0-alpha.16.tgz#f8bec2b5074e150c47b415d13db231b15e45598d"
@ -1625,6 +1678,15 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24
lodash "^4.2.0" lodash "^4.2.0"
to-fast-properties "^1.0.1" to-fast-properties "^1.0.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:
babel-runtime "^6.26.0"
esutils "^2.0.2"
lodash "^4.17.4"
to-fast-properties "^1.0.3"
babylon@7.0.0-beta.17: babylon@7.0.0-beta.17:
version "7.0.0-beta.17" version "7.0.0-beta.17"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.17.tgz#2aad4d6764f409dfb3ac216d855dc93d70d37911" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.17.tgz#2aad4d6764f409dfb3ac216d855dc93d70d37911"
@ -1633,14 +1695,14 @@ babylon@7.0.0-beta.22:
version "7.0.0-beta.22" version "7.0.0-beta.22"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65"
babylon@^6.11.0, babylon@^6.17.4: babylon@^6.11.0, babylon@^6.15.0, babylon@^6.17.0:
version "6.17.4"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
babylon@^6.15.0, babylon@^6.17.0:
version "6.17.0" version "6.17.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932"
babylon@^6.17.4:
version "6.17.4"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
balanced-match@^0.4.1: balanced-match@^0.4.1:
version "0.4.2" version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
@ -1694,7 +1756,14 @@ browser-stdout@1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
browserslist@^2.1.2, browserslist@^2.4.0: browserslist@^2.1.2:
version "2.1.4"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.4.tgz#cc526af4a1312b7d2e05653e56d0c8ab70c0e053"
dependencies:
caniuse-lite "^1.0.30000670"
electron-to-chromium "^1.3.11"
browserslist@^2.4.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8"
dependencies: dependencies:
@ -1739,9 +1808,13 @@ camelcase@^4.1.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
caniuse-lite@^1.0.30000670:
version "1.0.30000676"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000676.tgz#1e962123f48073f0c51c4ea0651dd64d25786498"
caniuse-lite@^1.0.30000718: caniuse-lite@^1.0.30000718:
version "1.0.30000721" version "1.0.30000733"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000721.tgz#931a21a7bd85016300328d21f126d84b73437d35" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000733.tgz#ebfc48254117cc0c66197a4536cb4397a6cfbccd"
caseless@~0.11.0: caseless@~0.11.0:
version "0.11.0" version "0.11.0"
@ -1957,9 +2030,9 @@ commoner@^0.10.1:
q "^1.1.2" q "^1.1.2"
recast "^0.11.17" recast "^0.11.17"
compat-table@kangax/compat-table#d88c80ea6dcbc7064112eb46bb020718107892f7: compat-table@kangax/compat-table#b8477cc0f6d65c000c46213e654d19f350de9fa8:
version "0.0.0" version "0.0.0"
resolved "https://codeload.github.com/kangax/compat-table/tar.gz/d88c80ea6dcbc7064112eb46bb020718107892f7" resolved "https://codeload.github.com/kangax/compat-table/tar.gz/b8477cc0f6d65c000c46213e654d19f350de9fa8"
dependencies: dependencies:
babel-core latest babel-core latest
babel-polyfill latest babel-polyfill latest
@ -2231,9 +2304,13 @@ ecc-jsbn@~0.1.1:
dependencies: dependencies:
jsbn "~0.1.0" jsbn "~0.1.0"
electron-to-chromium@^1.3.11:
version "1.3.13"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.13.tgz#1b3a5eace6e087bb5e257a100b0cbfe81b2891fc"
electron-to-chromium@^1.3.18: electron-to-chromium@^1.3.18:
version "1.3.19" version "1.3.21"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.19.tgz#73d97b0e8b05aa776cedf3cdce7fdc0538037675" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2"
elegant-spinner@^1.0.1: elegant-spinner@^1.0.1:
version "1.0.1" version "1.0.1"
@ -4204,14 +4281,28 @@ regenerate-unicode-properties@^5.0.6:
dependencies: dependencies:
regenerate "^1.3.2" regenerate "^1.3.2"
regenerate-unicode-properties@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.1.tgz#f5b947b5b7514b79ce58a756659724fa9444c06b"
dependencies:
regenerate "^1.3.2"
regenerate@^1.2.1, regenerate@^1.3.2, regenerate@latest: regenerate@^1.2.1, regenerate@^1.3.2, regenerate@latest:
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
regenerate@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
regenerator-runtime@^0.10.0: regenerator-runtime@^0.10.0:
version "0.10.5" version "0.10.5"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
regenerator-runtime@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
regenerator-transform@0.10.0: regenerator-transform@0.10.0:
version "0.10.0" version "0.10.0"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.0.tgz#f9ab3eac9cc2de38431d996a6a8abf1c50f2e459" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.0.tgz#f9ab3eac9cc2de38431d996a6a8abf1c50f2e459"
@ -4254,6 +4345,17 @@ regexpu-core@^4.0.2:
unicode-match-property-ecmascript "^1.0.1" unicode-match-property-ecmascript "^1.0.1"
unicode-match-property-value-ecmascript "^1.0.0" unicode-match-property-value-ecmascript "^1.0.0"
regexpu-core@^4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.1.3.tgz#fb81616dbbc2a917a7419b33f8379144f51eb8d0"
dependencies:
regenerate "^1.3.3"
regenerate-unicode-properties "^5.1.1"
regjsgen "^0.3.0"
regjsparser "^0.2.1"
unicode-match-property-ecmascript "^1.0.3"
unicode-match-property-value-ecmascript "^1.0.1"
regjsgen@^0.2.0: regjsgen@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
@ -4296,7 +4398,7 @@ replace-ext@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
request@2.79.0: request@2.79.0, request@^2.55.0:
version "2.79.0" version "2.79.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
dependencies: dependencies:
@ -4321,7 +4423,7 @@ request@2.79.0:
tunnel-agent "~0.4.1" tunnel-agent "~0.4.1"
uuid "^3.0.0" uuid "^3.0.0"
request@^2.55.0, request@^2.81.0: request@^2.81.0:
version "2.81.0" version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies: dependencies:
@ -4784,7 +4886,7 @@ through@^2.3.6:
version "2.3.8" version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
to-fast-properties@^1.0.1: to-fast-properties@^1.0.1, to-fast-properties@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
@ -4881,6 +4983,10 @@ unicode-canonical-property-names-ecmascript@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.0.tgz#20068aef4ada99ea2a80bf3ff8299a4db3e5bed0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.0.tgz#20068aef4ada99ea2a80bf3ff8299a4db3e5bed0"
unicode-canonical-property-names-ecmascript@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.2.tgz#08ef9ec454392fc5ed99b08a70524ae3881c0306"
unicode-match-property-ecmascript@^1.0.1: unicode-match-property-ecmascript@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.1.tgz#f380567fb895cc649828bea3a524fa34f4feb9da" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.1.tgz#f380567fb895cc649828bea3a524fa34f4feb9da"
@ -4888,14 +4994,29 @@ unicode-match-property-ecmascript@^1.0.1:
unicode-canonical-property-names-ecmascript "^1.0.0" unicode-canonical-property-names-ecmascript "^1.0.0"
unicode-property-aliases-ecmascript "^1.0.1" unicode-property-aliases-ecmascript "^1.0.1"
unicode-match-property-ecmascript@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz#db9b1cb4ffc67e0c5583780b1b59370e4cbe97b9"
dependencies:
unicode-canonical-property-names-ecmascript "^1.0.2"
unicode-property-aliases-ecmascript "^1.0.3"
unicode-match-property-value-ecmascript@^1.0.0: unicode-match-property-value-ecmascript@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.0.tgz#393fa3e8baf4de2c415b95a8d7338587e3e563be" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.0.tgz#393fa3e8baf4de2c415b95a8d7338587e3e563be"
unicode-match-property-value-ecmascript@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz#fea059120a016f403afd3bf586162b4db03e0604"
unicode-property-aliases-ecmascript@^1.0.1: unicode-property-aliases-ecmascript@^1.0.1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.2.tgz#b495f544c79c2a85cf3083c907c884ef154be1a0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.2.tgz#b495f544c79c2a85cf3083c907c884ef154be1a0"
unicode-property-aliases-ecmascript@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz#ac3522583b9e630580f916635333e00c5ead690d"
universalify@^0.1.0: universalify@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778"