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 = [
"typed arrays / %TypedArray%.from",
"typed arrays / %TypedArray%.of",
@ -80,7 +78,18 @@ const es2015 = {
"es6.reflect.set": "Reflect / Reflect.set",
"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": {
features: [
@ -178,4 +187,6 @@ const es2017 = {
"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": {
"chrome": "49",
"edge": "13",
"firefox": "45",
"firefox": "44",
"safari": "10",
"node": "6",
"ios": "10",
@ -691,6 +691,7 @@
"firefox": "23",
"safari": "7",
"node": "0.12",
"android": "4.4",
"ios": "7",
"opera": "17",
"electron": "0.2"
@ -824,5 +825,6 @@
"ios": "10",
"opera": "44",
"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": {
"chrome": "51",
"edge": "15",
"firefox": "53",
"safari": "10",
"node": "6.5",
@ -238,5 +237,14 @@
"ios": "10",
"opera": "45",
"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": {
"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-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-block-scoped-functions": "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-new-target": "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",
"invariant": "^2.2.2",
"semver": "^5.3.0"
@ -68,7 +75,7 @@
"babel-register": "7.0.0-alpha.16",
"chai": "^4.0.2",
"codecov": "^2.2.0",
"compat-table": "kangax/compat-table#d88c80ea6dcbc7064112eb46bb020718107892f7",
"compat-table": "kangax/compat-table#b8477cc0f6d65c000c46213e654d19f350de9fa8",
"eslint": "^3.17.1",
"eslint-config-babel": "^6.0.0",
"eslint-plugin-flowtype": "^2.33.0",

View File

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

View File

@ -1,7 +1,11 @@
export default {
"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"),
"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-block-scoped-functions": require("babel-plugin-transform-es2015-block-scoped-functions"),
"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-exponentiation-operator": require("babel-plugin-transform-exponentiation-operator"),
"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-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 normalizeOptions from "./normalize-options.js";
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 addUsedBuiltInsPlugin from "./use-built-ins-plugin";
import getTargets from "./targets-parser";
import availablePlugins from "./available-plugins";
import { prettifyTargets, semverify } from "./utils";
import { filterStageFromList, prettifyTargets, semverify } from "./utils";
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 = (
supportedEnvironments: Targets,
plugin: Targets,
@ -84,14 +107,28 @@ const getPlatformSpecificDefaultFor = (targets: Targets): ?Array<string> => {
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();
for (const item in list) {
const excluded = excludes.has(item);
if (!excluded && isPluginRequired(targets, list[item])) {
result.add(item);
if (!excluded) {
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,
modules,
spec,
stage3,
targets: optionsTargets,
useBuiltIns,
} = normalizeOptions(opts);
@ -144,7 +182,7 @@ export default function buildPreset(
const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;
const transformations = filterItems(
pluginList,
stage3 ? pluginList : pluginListWithoutStage3,
include.plugins,
exclude.plugins,
transformTargets,
@ -157,7 +195,7 @@ export default function buildPreset(
polyfillTargets = getBuiltInTargets(targets);
polyfills = filterItems(
builtInsList,
stage3 ? builtInsList : builtInsListWithoutStage3,
include.builtIns,
exclude.builtIns,
polyfillTargets,
@ -166,15 +204,19 @@ export default function buildPreset(
}
const plugins = [];
if (modules !== false && moduleTransformations[modules]) {
plugins.push([availablePlugins[moduleTransformations[modules]], { loose }]);
}
const pluginUseBuiltIns = useBuiltIns !== false;
// NOTE: not giving spec here yet to avoid compatibility issues when
// babel-plugin-transform-es2015-modules-commonjs gets its spec mode
if (modules !== false && moduleTransformations[modules]) {
plugins.push([getPlugin(moduleTransformations[modules]), { loose }]);
}
transformations.forEach(pluginName =>
plugins.push([availablePlugins[pluginName], { spec, loose }]),
plugins.push([
getPlugin(pluginName),
{ spec, loose, useBuiltIns: pluginUseBuiltIns },
]),
);
const regenerator = transformations.has("transform-regenerator");

View File

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

View File

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

View File

@ -51,3 +51,13 @@ export const prettifyTargets = (targets: Targets): Object => {
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 {
checkDuplicateIncludeExcludes,
normalizePluginNames,
validateForceAllTransformsOption,
validateBoolOption,
validateIncludesAndExcludes,
validateLooseOption,
validateModulesOption,
validateSpecOption,
} = normalizeOptions;
describe("normalize-options", () => {
@ -39,31 +37,25 @@ describe("normalize-options", () => {
});
});
const testBoolOption = validator => {
describe(validator.name, () => {
it("`undefined` option returns false", () => {
assert(validator() === false);
});
describe("validateBoolOption", () => {
it("`undefined` option returns false", () => {
assert(validateBoolOption("test", undefined, false) === false);
});
it("`false` option returns false", () => {
assert(validator(false) === false);
});
it("`false` option returns false", () => {
assert(validateBoolOption("test", false, false) === false);
});
it("`true` option returns true", () => {
assert(validator(true) === true);
});
it("`true` option returns true", () => {
assert(validateBoolOption("test", true, false) === true);
});
it("array option is invalid", () => {
assert.throws(() => {
validateLooseOption([]);
});
it("array option is invalid", () => {
assert.throws(() => {
validateBoolOption("test", [], false);
});
});
};
testBoolOption(validateLooseOption);
testBoolOption(validateSpecOption);
testBoolOption(validateForceAllTransformsOption);
});
describe("checkDuplicateIncludeExcludes", 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"
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:
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"
@ -709,6 +717,10 @@ 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-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:
version "6.13.0"
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"
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:
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-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:
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"
@ -773,6 +793,13 @@ 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-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:
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"
@ -1327,6 +1354,12 @@ babel-plugin-transform-new-target@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"
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:
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"
@ -1334,6 +1367,12 @@ babel-plugin-transform-object-rest-spread@^6.22.0:
babel-plugin-syntax-object-rest-spread "^6.8.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:
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"
@ -1371,6 +1410,13 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
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:
version "7.0.0-alpha.16"
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"
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:
version "7.0.0-alpha.16"
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"
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:
version "7.0.0-beta.17"
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"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65"
babylon@^6.11.0, babylon@^6.17.4:
version "6.17.4"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a"
babylon@^6.15.0, babylon@^6.17.0:
babylon@^6.11.0, babylon@^6.15.0, babylon@^6.17.0:
version "6.17.0"
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:
version "0.4.2"
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"
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"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8"
dependencies:
@ -1739,9 +1808,13 @@ camelcase@^4.1.0:
version "4.1.0"
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:
version "1.0.30000721"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000721.tgz#931a21a7bd85016300328d21f126d84b73437d35"
version "1.0.30000733"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000733.tgz#ebfc48254117cc0c66197a4536cb4397a6cfbccd"
caseless@~0.11.0:
version "0.11.0"
@ -1957,9 +2030,9 @@ commoner@^0.10.1:
q "^1.1.2"
recast "^0.11.17"
compat-table@kangax/compat-table#d88c80ea6dcbc7064112eb46bb020718107892f7:
compat-table@kangax/compat-table#b8477cc0f6d65c000c46213e654d19f350de9fa8:
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:
babel-core latest
babel-polyfill latest
@ -2231,9 +2304,13 @@ ecc-jsbn@~0.1.1:
dependencies:
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:
version "1.3.19"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.19.tgz#73d97b0e8b05aa776cedf3cdce7fdc0538037675"
version "1.3.21"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.21.tgz#a967ebdcfe8ed0083fc244d1894022a8e8113ea2"
elegant-spinner@^1.0.1:
version "1.0.1"
@ -4204,14 +4281,28 @@ regenerate-unicode-properties@^5.0.6:
dependencies:
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:
version "1.3.2"
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:
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.0"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
regenerator-transform@0.10.0:
version "0.10.0"
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-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:
version "0.2.0"
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"
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"
resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
dependencies:
@ -4321,7 +4423,7 @@ request@2.79.0:
tunnel-agent "~0.4.1"
uuid "^3.0.0"
request@^2.55.0, request@^2.81.0:
request@^2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
@ -4784,7 +4886,7 @@ through@^2.3.6:
version "2.3.8"
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"
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"
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:
version "1.0.1"
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-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:
version "1.0.0"
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:
version "1.0.2"
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:
version "0.1.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778"