Socket
Socket
Sign inDemoInstall

@babel/preset-env

Package Overview
Dependencies
Maintainers
5
Versions
175
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/preset-env - npm Package Compare versions

Comparing version 7.3.4 to 7.4.0

data/corejs2-built-in-features.js

20

CONTRIBUTING.md
# Contributing
## Adding a new plugin to support (when approved in the next ECMAScript version)
## Adding a new plugin or polyfill to support (when approved in the next ECMAScript version)

@@ -30,3 +30,3 @@ ### Update [`plugin-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/plugin-features.js)

### Update [`built-in-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/built-in-features.js)
### Update data for `core-js@2` polyfilling

@@ -42,10 +42,10 @@ *Example:*

Find the corresponding module on [core-js](https://github.com/zloirock/core-js/tree/master/modules):
Find the corresponding module on [`core-js@2`](https://github.com/zloirock/core-js/tree/v2/modules):
`es7.object.values.js`
Find required ES version in [`built-in-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/built-in-features.js) and add the new feature:
Find required ES version in [`corejs2-built-in-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/corejs2-built-in-features.js) and add the new feature:
```js
const es2017 = {
const es = {
//...

@@ -56,2 +56,12 @@ "es7.object.values": "Object static methods / Object.values"

If you wan to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related `core-js` modules to [this file](https://github.com/babel/babel/blob/master/packages/babel-preset-env/polyfills/corejs2/built-in-definitions.js).
### Update data for `core-js@3` polyfilling
Just update the version of [`core-js-compat`](https://github.com/zloirock/core-js/tree/master/packages/core-js-compat) in dependencies.
If you wan to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related [`core-js`](https://github.com/zloirock/core-js/tree/master/packages/core-js/modules) modules to [this file](https://github.com/babel/babel/blob/master/packages/babel-preset-env/polyfills/corejs3/built-in-definitions.js).
If you want to mark a new proposal as shipped, add it to [this list](https://github.com/babel/babel/blob/master/packages/babel-preset-env/polyfills/corejs3/shipped-proposals.js).
### Update [`plugins.json`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/plugins.json)

@@ -58,0 +68,0 @@

@@ -9,4 +9,4 @@ {

"ios_saf": "10.3",
"and_ff": "60"
"and_ff": "64"
}
}

@@ -6,5 +6,4 @@ {

"firefox": "34",
"safari": "9",
"node": "4",
"ios": "9",
"samsung": "3.4",
"opera": "28",

@@ -20,2 +19,3 @@ "electron": "0.24"

"ios": "9",
"samsung": "4",
"opera": "31",

@@ -30,2 +30,3 @@ "electron": "0.31"

"ios": "10",
"samsung": "5",
"opera": "38",

@@ -41,2 +42,3 @@ "electron": "1.2"

"ios": "10",
"samsung": "5",
"opera": "34",

@@ -53,2 +55,3 @@ "electron": "0.36"

"ios": "10",
"samsung": "3.4",
"opera": "28",

@@ -64,2 +67,3 @@ "electron": "0.24"

"ios": "10",
"samsung": "5",
"opera": "33",

@@ -75,2 +79,3 @@ "electron": "0.36"

"ios": "10",
"samsung": "5",
"opera": "33",

@@ -86,2 +91,3 @@ "electron": "0.36"

"ios": "9",
"samsung": "4",
"opera": "30",

@@ -97,2 +103,3 @@ "electron": "0.29"

"ios": "9",
"samsung": "3.4",
"opera": "29",

@@ -108,2 +115,3 @@ "electron": "0.27"

"ios": "8",
"samsung": "4",
"opera": "31",

@@ -119,2 +127,3 @@ "electron": "0.31"

"ios": "10",
"samsung": "5",
"opera": "38",

@@ -130,2 +139,3 @@ "electron": "1.2"

"ios": "10",
"samsung": "5",
"opera": "36",

@@ -139,4 +149,5 @@ "electron": "1"

"ios": "11.3",
"samsung": "8.2",
"opera": "49",
"electron": "3"
"electron": "3.1"
},

@@ -150,2 +161,3 @@ "transform-unicode-regex": {

"ios": "12",
"samsung": "5",
"opera": "37",

@@ -161,2 +173,3 @@ "electron": "1.1"

"ios": "10",
"samsung": "5",
"opera": "33",

@@ -172,2 +185,3 @@ "electron": "0.36"

"ios": "10",
"samsung": "5",
"opera": "36",

@@ -183,2 +197,3 @@ "electron": "1"

"ios": "10",
"samsung": "5",
"opera": "38",

@@ -194,2 +209,3 @@ "electron": "1.2"

"ios": "10.3",
"samsung": "5",
"opera": "36",

@@ -205,2 +221,3 @@ "electron": "1"

"ios": "9",
"samsung": "3",
"opera": "25",

@@ -216,2 +233,3 @@ "electron": "0.2"

"ios": "10",
"samsung": "5",
"opera": "33",

@@ -227,2 +245,3 @@ "electron": "0.36"

"ios": "10",
"samsung": "5",
"opera": "37",

@@ -238,2 +257,3 @@ "electron": "1.1"

"ios": "10.3",
"samsung": "6.2",
"opera": "39",

@@ -249,2 +269,3 @@ "electron": "1.3"

"ios": "11",
"samsung": "6.2",
"opera": "42",

@@ -257,6 +278,7 @@ "electron": "1.6"

"safari": "12",
"node": "10.0",
"node": "10",
"ios": "12",
"samsung": "8.2",
"opera": "50",
"electron": "3"
"electron": "3.1"
},

@@ -269,2 +291,3 @@ "proposal-object-rest-spread": {

"ios": "11.3",
"samsung": "8.2",
"opera": "47",

@@ -276,6 +299,6 @@ "electron": "2.1"

"safari": "11.1",
"node": "10.0",
"node": "10",
"ios": "11.3",
"opera": "51",
"electron": "3"
"electron": "3.1"
},

@@ -286,6 +309,6 @@ "proposal-json-strings": {

"safari": "12",
"node": "10.0",
"node": "10",
"ios": "12",
"opera": "53",
"electron": "3"
"electron": "3.1"
},

@@ -296,6 +319,6 @@ "proposal-optional-catch-binding": {

"safari": "11.1",
"node": "10.0",
"node": "10",
"ios": "11.3",
"opera": "53",
"electron": "3"
"electron": "3.1"
},

@@ -305,7 +328,7 @@ "transform-named-capturing-groups-regex": {

"safari": "11.1",
"node": "10.0",
"node": "10",
"ios": "11.3",
"opera": "51",
"electron": "3"
"electron": "3.1"
}
}

@@ -1,10 +0,6 @@

// These mappings represent the builtin/feature proposals that have been
// These mappings represent the syntax proposals that have been
// shipped by browsers, and are enabled by the `shippedProposals` option.
const builtIns = {
"es7.array.flat-map": "Array.prototype.{flat, flatMap} / Array.prototype.flatMap"
};
const proposalPlugins = {};
const features = {};
const pluginSyntaxMap = new Map([

@@ -18,2 +14,2 @@ ["proposal-async-generator-functions", "syntax-async-generators"],

module.exports = { builtIns, features, pluginSyntaxMap };
module.exports = { proposalPlugins, pluginSyntaxMap };

@@ -6,3 +6,3 @@ "use strict";

});
exports.logUsagePolyfills = exports.logEntryPolyfills = exports.logPlugin = exports.logMessage = void 0;
exports.logUsagePolyfills = exports.logEntryPolyfills = exports.logPluginOrPolyfill = void 0;

@@ -27,11 +27,3 @@ function _semver() {

const logMessage = (message, context) => {
const pre = context ? `[${context}] ` : "";
const logStr = ` ${pre}${message}`;
console.log(logStr);
};
exports.logMessage = logMessage;
const logPlugin = (item, targetVersions, list, context) => {
const logPluginOrPolyfill = (item, targetVersions, list) => {
const minVersions = list[item] || {};

@@ -48,3 +40,3 @@ const filteredList = Object.keys(targetVersions).reduce((result, env) => {

if (!targetIsUnreleased && (minIsUnreleased || _semver().default.lt(targetVersion, (0, _utils.semverify)(minVersion)))) {
if (!targetIsUnreleased && (minIsUnreleased || _semver().default.lt(targetVersion.toString(), (0, _utils.semverify)(minVersion)))) {
result[env] = (0, _utils.prettifyVersion)(targetVersion);

@@ -57,11 +49,10 @@ }

const formattedTargets = JSON.stringify(filteredList).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
logMessage(`${item} ${formattedTargets}`, context);
console.log(` ${item} ${formattedTargets}`);
};
exports.logPlugin = logPlugin;
exports.logPluginOrPolyfill = logPluginOrPolyfill;
const logEntryPolyfills = (importPolyfillIncluded, polyfills, filename, onDebug) => {
const logEntryPolyfills = (polyfillName, importPolyfillIncluded, polyfills, filename, polyfillTargets, allBuiltInsList) => {
if (!importPolyfillIncluded) {
console.log(`
[${filename}] \`import '@babel/polyfill'\` was not found.`);
console.log(`\n[${filename}] Import of ${polyfillName} was not found.`);
return;

@@ -71,10 +62,11 @@ }

if (!polyfills.size) {
console.log(`
[${filename}] Based on your targets, none were added.`);
console.log(`\n[${filename}] Based on your targets, polyfills were not added.`);
return;
}
console.log(`
[${filename}] Replaced \`@babel/polyfill\` with the following polyfill${wordEnds(polyfills.size)}:`);
onDebug(polyfills);
console.log(`\n[${filename}] Replaced ${polyfillName} entries with the following polyfill${wordEnds(polyfills.size)}:`);
for (const polyfill of polyfills) {
logPluginOrPolyfill(polyfill, polyfillTargets, allBuiltInsList);
}
};

@@ -84,14 +76,15 @@

const logUsagePolyfills = (polyfills, filename, onDebug) => {
const logUsagePolyfills = (polyfills, filename, polyfillTargets, allBuiltInsList) => {
if (!polyfills.size) {
console.log(`
[${filename}] Based on your code and targets, none were added.`);
console.log(`\n[${filename}] Based on your code and targets, core-js polyfills were not added.`);
return;
}
console.log(`
[${filename}] Added following polyfill${wordEnds(polyfills.size)}:`);
onDebug(polyfills);
console.log(`\n[${filename}] Added following core-js polyfill${wordEnds(polyfills.size)}:`);
for (const polyfill of polyfills) {
logPluginOrPolyfill(polyfill, polyfillTargets, allBuiltInsList);
}
};
exports.logUsagePolyfills = logUsagePolyfills;

@@ -6,32 +6,30 @@ "use strict";

});
exports.default = exports.transformIncludesAndExcludes = exports.isPluginRequired = void 0;
exports.default = exports.transformIncludesAndExcludes = void 0;
function _semver() {
const data = _interopRequireDefault(require("semver"));
var _debug = require("./debug");
_semver = function () {
return data;
};
var _getOptionSpecificExcludes = _interopRequireDefault(require("./get-option-specific-excludes"));
return data;
}
var _filterItems = _interopRequireDefault(require("./filter-items"));
var _builtIns = _interopRequireDefault(require("../data/built-ins.json"));
var _moduleTransformations = _interopRequireDefault(require("./module-transformations"));
var _debug = require("./debug");
var _normalizeOptions = _interopRequireDefault(require("./normalize-options"));
var _defaults = require("./defaults");
var _plugins = _interopRequireDefault(require("../data/plugins.json"));
var _moduleTransformations = _interopRequireDefault(require("./module-transformations"));
var _shippedProposals = require("../data/shipped-proposals");
var _normalizeOptions = _interopRequireDefault(require("./normalize-options.js"));
var _usagePlugin = _interopRequireDefault(require("./polyfills/corejs2/usage-plugin"));
var _plugins = _interopRequireDefault(require("../data/plugins.json"));
var _usagePlugin2 = _interopRequireDefault(require("./polyfills/corejs3/usage-plugin"));
var _shippedProposals = require("../data/shipped-proposals.js");
var _usagePlugin3 = _interopRequireDefault(require("./polyfills/regenerator/usage-plugin"));
var _useBuiltInsEntryPlugin = _interopRequireDefault(require("./use-built-ins-entry-plugin"));
var _entryPlugin = _interopRequireDefault(require("./polyfills/corejs2/entry-plugin"));
var _useBuiltInsPlugin = _interopRequireDefault(require("./use-built-ins-plugin"));
var _entryPlugin2 = _interopRequireDefault(require("./polyfills/corejs3/entry-plugin"));
var _entryPlugin3 = _interopRequireDefault(require("./polyfills/regenerator/entry-plugin"));
var _targetsParser = _interopRequireDefault(require("./targets-parser"));

@@ -55,2 +53,4 @@

const pluginListWithoutProposals = (0, _utils.filterStageFromList)(_plugins.default, _shippedProposals.proposalPlugins);
const getPlugin = pluginName => {

@@ -66,50 +66,5 @@ const plugin = _availablePlugins.default[pluginName];

const builtInsListWithoutProposals = (0, _utils.filterStageFromList)(_builtIns.default, _shippedProposals.builtIns);
const pluginListWithoutProposals = (0, _utils.filterStageFromList)(_plugins.default, _shippedProposals.features);
const isPluginRequired = (supportedEnvironments, plugin) => {
const targetEnvironments = Object.keys(supportedEnvironments);
if (targetEnvironments.length === 0) {
return true;
}
const isRequiredForEnvironments = targetEnvironments.filter(environment => {
if (!plugin[environment]) {
return true;
}
const lowestImplementedVersion = plugin[environment];
const lowestTargetedVersion = supportedEnvironments[environment];
if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) {
return false;
} else if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) {
return true;
}
if (!_semver().default.valid(lowestTargetedVersion)) {
throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)");
}
return _semver().default.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion);
});
return isRequiredForEnvironments.length > 0;
};
exports.isPluginRequired = isPluginRequired;
const getBuiltInTargets = targets => {
const builtInTargets = Object.assign({}, targets);
if (builtInTargets.uglify != null) {
delete builtInTargets.uglify;
}
return builtInTargets;
};
const transformIncludesAndExcludes = opts => {
return opts.reduce((result, opt) => {
const target = opt.match(/^(es\d+|web)\./) ? "builtIns" : "plugins";
const target = opt.match(/^(es|es6|es7|esnext|web)\./) ? "builtIns" : "plugins";
result[target].add(opt);

@@ -126,28 +81,2 @@ return result;

const filterItems = (list, includes, excludes, targets, defaultIncludes, defaultExcludes) => {
const result = new Set();
for (const item in list) {
if (!excludes.has(item) && (isPluginRequired(targets, list[item]) || includes.has(item))) {
result.add(item);
} else {
const shippedProposalsSyntax = _shippedProposals.pluginSyntaxMap.get(item);
if (shippedProposalsSyntax) {
result.add(shippedProposalsSyntax);
}
}
}
if (defaultIncludes) {
defaultIncludes.forEach(item => !excludes.has(item) && result.add(item));
}
if (defaultExcludes) {
defaultExcludes.forEach(item => !includes.has(item) && result.delete(item));
}
return result;
};
function supportsStaticESM(caller) {

@@ -171,3 +100,7 @@ return !!(caller && caller.supportsStaticESM);

targets: optionsTargets,
useBuiltIns
useBuiltIns,
corejs: {
version: corejs,
proposals
}
} = (0, _normalizeOptions.default)(opts);

@@ -199,13 +132,5 @@ let hasUglifyTarget = false;

const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;
const transformations = filterItems(shippedProposals ? _plugins.default : pluginListWithoutProposals, include.plugins, exclude.plugins, transformTargets, null, (0, _defaults.getOptionSpecificExcludesFor)({
const transformations = (0, _filterItems.default)(shippedProposals ? _plugins.default : pluginListWithoutProposals, include.plugins, exclude.plugins, transformTargets, null, (0, _getOptionSpecificExcludes.default)({
loose
}));
let polyfills;
let polyfillTargets;
if (useBuiltIns) {
polyfillTargets = getBuiltInTargets(targets);
polyfills = filterItems(shippedProposals ? _builtIns.default : builtInsListWithoutProposals, include.builtIns, exclude.builtIns, polyfillTargets, (0, _defaults.getPlatformSpecificDefaultFor)(polyfillTargets));
}
}), _shippedProposals.pluginSyntaxMap);
const plugins = [];

@@ -225,3 +150,2 @@ const pluginUseBuiltIns = useBuiltIns !== false;

}]));
const regenerator = transformations.has("transform-regenerator");

@@ -235,3 +159,3 @@ if (debug) {

transformations.forEach(transform => {
(0, _debug.logPlugin)(transform, targets, _plugins.default);
(0, _debug.logPluginOrPolyfill)(transform, targets, _plugins.default);
});

@@ -242,4 +166,3 @@

} else {
console.log(`
Using polyfills with \`${useBuiltIns}\` option:`);
console.log(`\nUsing polyfills with \`${useBuiltIns}\` option:`);
}

@@ -249,11 +172,37 @@ }

if (useBuiltIns === "usage" || useBuiltIns === "entry") {
const regenerator = transformations.has("transform-regenerator");
const pluginOptions = {
debug,
polyfills,
corejs,
polyfillTargets: targets,
include: include.builtIns,
exclude: exclude.builtIns,
proposals,
shippedProposals,
regenerator,
onDebug: (polyfills, context) => {
polyfills.forEach(polyfill => (0, _debug.logPlugin)(polyfill, polyfillTargets, _builtIns.default, context));
debug
};
if (corejs) {
if (useBuiltIns === "usage") {
if (corejs.major === 2) {
plugins.push([_usagePlugin.default, pluginOptions]);
} else {
plugins.push([_usagePlugin2.default, pluginOptions]);
}
if (regenerator) {
plugins.push([_usagePlugin3.default, pluginOptions]);
}
} else {
if (corejs.major === 2) {
plugins.push([_entryPlugin.default, pluginOptions]);
} else {
plugins.push([_entryPlugin2.default, pluginOptions]);
if (!regenerator) {
plugins.push([_entryPlugin3.default, pluginOptions]);
}
}
}
};
plugins.push([useBuiltIns === "usage" ? _useBuiltInsPlugin.default : _useBuiltInsEntryPlugin.default, pluginOptions]);
}
}

@@ -260,0 +209,0 @@

@@ -6,5 +6,16 @@ "use strict";

});
exports.normalizeCoreJSOption = normalizeCoreJSOption;
exports.default = normalizeOptions;
exports.validateUseBuiltInsOption = exports.objectToBrowserslist = exports.validateModulesOption = exports.validateIgnoreBrowserslistConfig = exports.validateBoolOption = exports.validateConfigPathOption = exports.checkDuplicateIncludeExcludes = exports.normalizePluginName = void 0;
exports.validateUseBuiltInsOption = exports.validateModulesOption = exports.validateIgnoreBrowserslistConfig = exports.validateBoolOption = exports.validateConfigPathOption = exports.checkDuplicateIncludeExcludes = exports.normalizePluginName = void 0;
function _data() {
const data = _interopRequireDefault(require("core-js-compat/data"));
_data = function () {
return data;
};
return data;
}
function _invariant() {

@@ -20,6 +31,6 @@ const data = _interopRequireDefault(require("invariant"));

function _browserslist() {
const data = _interopRequireDefault(require("browserslist"));
function _semver() {
const data = require("semver");
_browserslist = function () {
_semver = function () {
return data;

@@ -31,8 +42,12 @@ };

var _builtIns = _interopRequireDefault(require("../data/built-ins.json"));
var _corejs2BuiltIns = _interopRequireDefault(require("../data/corejs2-built-ins.json"));
var _defaultIncludes = require("./default-includes");
var _plugins = _interopRequireDefault(require("../data/plugins.json"));
var _moduleTransformations = _interopRequireDefault(require("./module-transformations"));
var _options = require("./options");
var _getPlatformSpecificDefault = require("./polyfills/corejs2/get-platform-specific-default");
var _targetsParser = require("./targets-parser");

@@ -42,12 +57,9 @@

var _plugins = _interopRequireDefault(require("../data/plugins.json"));
var _options = require("./options");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const validateTopLevelOptions = options => {
const validOptions = Object.keys(_options.TopLevelOptions);
for (const option in options) {
if (!_options.TopLevelOptions[option]) {
const validOptions = (0, _utils.getValues)(_options.TopLevelOptions);
throw new Error(`Invalid Option: ${option} is not a valid top-level option.

@@ -59,3 +71,6 @@ Maybe you meant to use '${(0, _utils.findSuggestion)(validOptions, option)}'?`);

const validIncludesAndExcludes = new Set([...Object.keys(_plugins.default), ...Object.keys(_moduleTransformations.default).map(m => _moduleTransformations.default[m]), ...Object.keys(_builtIns.default), ..._defaultIncludes.defaultWebIncludes]);
const allPluginsList = [...Object.keys(_plugins.default), ...Object.keys(_moduleTransformations.default).map(m => _moduleTransformations.default[m])];
const validIncludesAndExcludesWithoutCoreJS = new Set(allPluginsList);
const validIncludesAndExcludesWithCoreJS2 = new Set([...allPluginsList, ...Object.keys(_corejs2BuiltIns.default), ..._getPlatformSpecificDefault.defaultWebIncludes]);
const validIncludesAndExcludesWithCoreJS3 = new Set([...allPluginsList, ...Object.keys(_data().default)]);

@@ -72,9 +87,9 @@ const pluginToRegExp = plugin => {

const selectPlugins = regexp => Array.from(validIncludesAndExcludes).filter(item => regexp instanceof RegExp && regexp.test(item));
const selectPlugins = (regexp, corejs) => Array.from(corejs ? corejs == 2 ? validIncludesAndExcludesWithCoreJS2 : validIncludesAndExcludesWithCoreJS3 : validIncludesAndExcludesWithoutCoreJS).filter(item => regexp instanceof RegExp && regexp.test(item));
const flatten = array => [].concat(...array);
const expandIncludesAndExcludes = (plugins = [], type) => {
const expandIncludesAndExcludes = (plugins = [], type, corejs) => {
if (plugins.length === 0) return [];
const selectedPlugins = plugins.map(plugin => selectPlugins(pluginToRegExp(plugin)));
const selectedPlugins = plugins.map(plugin => selectPlugins(pluginToRegExp(plugin), corejs));
const invalidRegExpList = plugins.filter((p, i) => selectedPlugins[i].length === 0);

@@ -86,4 +101,2 @@ (0, _invariant().default)(invalidRegExpList.length === 0, `Invalid Option: The plugins/built-ins '${invalidRegExpList.join(", ")}' passed to the '${type}' option are not

const validBrowserslistTargets = [...Object.keys(_browserslist().default.data), ...Object.keys(_browserslist().default.aliases)];
const normalizePluginName = plugin => plugin.replace(/^(@babel\/|babel-)(plugin-)?/, "");

@@ -137,3 +150,3 @@

const validateModulesOption = (modulesOpt = _options.ModulesOption.auto) => {
(0, _invariant().default)(_options.ModulesOption[modulesOpt] || _options.ModulesOption[modulesOpt] === _options.ModulesOption.false, `Invalid Option: The 'modules' option must be one of \n` + ` - 'false' to indicate no module processing\n` + ` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` + ` - 'auto' (default) which will automatically select 'false' if the current\n` + ` process is known to support ES module syntax, or "commonjs" otherwise\n`);
(0, _invariant().default)(_options.ModulesOption[modulesOpt.toString()] || _options.ModulesOption[modulesOpt.toString()] === _options.ModulesOption.false, `Invalid Option: The 'modules' option must be one of \n` + ` - 'false' to indicate no module processing\n` + ` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` + ` - 'auto' (default) which will automatically select 'false' if the current\n` + ` process is known to support ES module syntax, or "commonjs" otherwise\n`);
return modulesOpt;

@@ -144,17 +157,4 @@ };

const objectToBrowserslist = object => {
return Object.keys(object).reduce((list, targetName) => {
if (validBrowserslistTargets.indexOf(targetName) >= 0) {
const targetVersion = object[targetName];
return list.concat(`${targetName} ${targetVersion}`);
}
return list;
}, []);
};
exports.objectToBrowserslist = objectToBrowserslist;
const validateUseBuiltInsOption = (builtInsOpt = false) => {
(0, _invariant().default)(_options.UseBuiltInsOption[builtInsOpt] || _options.UseBuiltInsOption[builtInsOpt] === _options.UseBuiltInsOption.false, `Invalid Option: The 'useBuiltIns' option must be either
(0, _invariant().default)(_options.UseBuiltInsOption[builtInsOpt.toString()] || _options.UseBuiltInsOption[builtInsOpt.toString()] === _options.UseBuiltInsOption.false, `Invalid Option: The 'useBuiltIns' option must be either
'false' (default) to indicate no polyfill,

@@ -168,9 +168,43 @@ '"entry"' to indicate replacing the entry polyfill, or

function normalizeCoreJSOption(corejs, useBuiltIns) {
let proposals = false;
let rawVersion;
if (useBuiltIns && corejs === undefined) {
rawVersion = 2;
console.log("\nWith `useBuiltIns` option, required direct setting of `corejs` option\n");
} else if (typeof corejs === "object" && corejs !== null) {
rawVersion = corejs.version;
proposals = Boolean(corejs.proposals);
} else {
rawVersion = corejs;
}
const version = rawVersion ? (0, _semver().coerce)(String(rawVersion)) : false;
if (!useBuiltIns && version) {
console.log("\n`corejs` option required only with `useBuiltIns` option\n");
}
if (useBuiltIns && (!version || version.major < 2 || version.major > 3)) {
throw new RangeError("Supported only core-js@2 and core-js@3.");
}
return {
version,
proposals
};
}
function normalizeOptions(opts) {
validateTopLevelOptions(opts);
const include = expandIncludesAndExcludes(opts.include, _options.TopLevelOptions.include);
const exclude = expandIncludesAndExcludes(opts.exclude, _options.TopLevelOptions.exclude);
const useBuiltIns = validateUseBuiltInsOption(opts.useBuiltIns);
const corejs = normalizeCoreJSOption(opts.corejs, useBuiltIns);
const include = expandIncludesAndExcludes(opts.include, _options.TopLevelOptions.include, !!corejs.version && corejs.version.major);
const exclude = expandIncludesAndExcludes(opts.exclude, _options.TopLevelOptions.exclude, !!corejs.version && corejs.version.major);
checkDuplicateIncludeExcludes(include, exclude);
const shippedProposals = validateBoolOption(_options.TopLevelOptions.shippedProposals, opts.shippedProposals, false) || corejs.proposals;
return {
configPath: validateConfigPathOption(opts.configPath),
corejs,
debug: validateBoolOption(_options.TopLevelOptions.debug, opts.debug, false),

@@ -183,7 +217,7 @@ include,

modules: validateModulesOption(opts.modules),
shippedProposals: validateBoolOption(_options.TopLevelOptions.shippedProposals, opts.shippedProposals, false),
shippedProposals,
spec: validateBoolOption(_options.TopLevelOptions.spec, opts.spec, false),
targets: normalizeTargets(opts.targets),
useBuiltIns: validateUseBuiltInsOption(opts.useBuiltIns)
useBuiltIns: useBuiltIns
};
}

@@ -9,2 +9,3 @@ "use strict";

configPath: "configPath",
corejs: "corejs",
debug: "debug",

@@ -51,4 +52,6 @@ exclude: "exclude",

android: "android",
electron: "electron"
electron: "electron",
samsung: "samsung",
uglify: "uglify"
};
exports.TargetNames = TargetNames;

@@ -40,4 +40,2 @@ "use strict";

var _normalizeOptions = require("./normalize-options");
var _builtInModules = _interopRequireDefault(require("../data/built-in-modules.json"));

@@ -51,8 +49,22 @@

const validateTargetNames = (validTargets, targets) => {
const validBrowserslistTargets = [...Object.keys(_browserslist().default.data), ...Object.keys(_browserslist().default.aliases)];
const objectToBrowserslist = object => {
return Object.keys(object).reduce((list, targetName) => {
if (validBrowserslistTargets.indexOf(targetName) >= 0) {
const targetVersion = object[targetName];
return list.concat(`${targetName} ${targetVersion}`);
}
return list;
}, []);
};
const validateTargetNames = targets => {
const validTargets = Object.keys(_options.TargetNames);
for (const target in targets) {
if (!_options.TargetNames[target]) {
const validOptions = (0, _utils.getValues)(_options.TargetNames);
throw new Error(`Invalid Option: '${target}' is not a valid target
Maybe you meant to use '${(0, _utils.findSuggestion)(validOptions, target)}'?`);
Maybe you meant to use '${(0, _utils.findSuggestion)(validTargets, target)}'?`);
}

@@ -72,3 +84,4 @@ }

opera: "opera",
safari: "safari"
safari: "safari",
samsung: "samsung"
};

@@ -186,3 +199,3 @@

if (shouldParseBrowsers || shouldSearchForConfig) {
_browserslist().default.defaults = (0, _normalizeOptions.objectToBrowserslist)(targets);
_browserslist().default.defaults = objectToBrowserslist(targets);
const browsers = (0, _browserslist().default)(browsersquery, {

@@ -189,0 +202,0 @@ path: options.configPath

@@ -6,4 +6,28 @@ "use strict";

});
exports.isRequire = exports.createImport = exports.getModulePath = exports.isPolyfillSource = exports.filterStageFromList = exports.getLowestUnreleased = exports.isUnreleasedVersion = exports.prettifyTargets = exports.prettifyVersion = exports.findSuggestion = exports.getValues = exports.semverify = void 0;
exports.getType = getType;
exports.semverify = semverify;
exports.intersection = intersection;
exports.findSuggestion = findSuggestion;
exports.prettifyVersion = prettifyVersion;
exports.prettifyTargets = prettifyTargets;
exports.isUnreleasedVersion = isUnreleasedVersion;
exports.getLowestUnreleased = getLowestUnreleased;
exports.filterStageFromList = filterStageFromList;
exports.getImportSource = getImportSource;
exports.getRequireSource = getRequireSource;
exports.isPolyfillSource = isPolyfillSource;
exports.getModulePath = getModulePath;
exports.createImport = createImport;
exports.has = void 0;
function t() {
const data = _interopRequireWildcard(require("@babel/types"));
t = function () {
return data;
};
return data;
}
function _invariant() {

@@ -55,5 +79,14 @@ const data = _interopRequireDefault(require("invariant"));

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
const has = Object.hasOwnProperty.call.bind(Object.hasOwnProperty);
exports.has = has;
function getType(target) {
return Object.prototype.toString.call(target).slice(8, -1).toLowerCase();
}
const versionRegExp = /^(\d+|\d+.\d+)$/;
const semverify = version => {
function semverify(version) {
if (typeof version === "string" && _semver().default.valid(version)) {

@@ -71,11 +104,15 @@ return version;

return split.join(".");
};
}
exports.semverify = semverify;
function intersection(first, second, third) {
const result = new Set();
const getValues = object => Object.keys(object).map(key => object[key]);
for (const el of first) {
if (second.has(el) && third.has(el)) result.add(el);
}
exports.getValues = getValues;
return result;
}
const findSuggestion = (options, option) => {
function findSuggestion(options, option) {
let levenshteinValue = Infinity;

@@ -92,7 +129,5 @@ return options.reduce((suggestion, validOption) => {

}, undefined);
};
}
exports.findSuggestion = findSuggestion;
const prettifyVersion = version => {
function prettifyVersion(version) {
if (typeof version !== "string") {

@@ -117,7 +152,5 @@ return version;

return parts.join(".");
};
}
exports.prettifyVersion = prettifyVersion;
const prettifyTargets = targets => {
function prettifyTargets(targets) {
return Object.keys(targets).reduce((results, target) => {

@@ -134,14 +167,10 @@ let value = targets[target];

}, {});
};
}
exports.prettifyTargets = prettifyTargets;
const isUnreleasedVersion = (version, env) => {
function isUnreleasedVersion(version, env) {
const unreleasedLabel = _unreleasedLabels.default[env];
return !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase();
};
}
exports.isUnreleasedVersion = isUnreleasedVersion;
const getLowestUnreleased = (a, b, env) => {
function getLowestUnreleased(a, b, env) {
const unreleasedLabel = _unreleasedLabels.default[env];

@@ -155,7 +184,5 @@ const hasUnreleased = [a, b].some(item => item === unreleasedLabel);

return (0, _targetsParser.semverMin)(a, b);
};
}
exports.getLowestUnreleased = getLowestUnreleased;
const filterStageFromList = (list, stageList) => {
function filterStageFromList(list, stageList) {
return Object.keys(list).reduce((result, item) => {

@@ -168,9 +195,25 @@ if (!stageList[item]) {

}, {});
};
}
exports.filterStageFromList = filterStageFromList;
function getImportSource({
node
}) {
if (node.specifiers.length === 0) return node.source.value;
}
const isPolyfillSource = source => source === "@babel/polyfill" || source === "core-js";
function getRequireSource({
node
}) {
if (!t().isExpressionStatement(node)) return;
const {
expression
} = node;
const isRequire = t().isCallExpression(expression) && t().isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t().isStringLiteral(expression.arguments[0]);
if (isRequire) return expression.arguments[0].value;
}
exports.isPolyfillSource = isPolyfillSource;
function isPolyfillSource(source) {
return source === "@babel/polyfill" || source === "core-js";
}
const modulePathMap = {

@@ -180,12 +223,8 @@ "regenerator-runtime": "regenerator-runtime/runtime"

const getModulePath = mod => modulePathMap[mod] || `core-js/modules/${mod}`;
function getModulePath(mod) {
return modulePathMap[mod] || `core-js/modules/${mod}`;
}
exports.getModulePath = getModulePath;
const createImport = (path, mod) => (0, _helperModuleImports().addSideEffect)(path, getModulePath(mod));
exports.createImport = createImport;
const isRequire = (t, path) => t.isExpressionStatement(path.node) && t.isCallExpression(path.node.expression) && t.isIdentifier(path.node.expression.callee) && path.node.expression.callee.name === "require" && path.node.expression.arguments.length === 1 && t.isStringLiteral(path.node.expression.arguments[0]) && isPolyfillSource(path.node.expression.arguments[0].value);
exports.isRequire = isRequire;
function createImport(path, mod) {
return (0, _helperModuleImports().addSideEffect)(path, getModulePath(mod));
}
{
"name": "@babel/preset-env",
"version": "7.3.4",
"version": "7.4.0",
"description": "A Babel preset for each environment.",

@@ -21,5 +21,5 @@ "author": "Henry Zhu <hi@henryzoo.com>",

"@babel/plugin-proposal-json-strings": "^7.2.0",
"@babel/plugin-proposal-object-rest-spread": "^7.3.4",
"@babel/plugin-proposal-object-rest-spread": "^7.4.0",
"@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
"@babel/plugin-proposal-unicode-property-regex": "^7.4.0",
"@babel/plugin-syntax-async-generators": "^7.2.0",

@@ -30,23 +30,23 @@ "@babel/plugin-syntax-json-strings": "^7.2.0",

"@babel/plugin-transform-arrow-functions": "^7.2.0",
"@babel/plugin-transform-async-to-generator": "^7.3.4",
"@babel/plugin-transform-async-to-generator": "^7.4.0",
"@babel/plugin-transform-block-scoped-functions": "^7.2.0",
"@babel/plugin-transform-block-scoping": "^7.3.4",
"@babel/plugin-transform-classes": "^7.3.4",
"@babel/plugin-transform-block-scoping": "^7.4.0",
"@babel/plugin-transform-classes": "^7.4.0",
"@babel/plugin-transform-computed-properties": "^7.2.0",
"@babel/plugin-transform-destructuring": "^7.2.0",
"@babel/plugin-transform-destructuring": "^7.4.0",
"@babel/plugin-transform-dotall-regex": "^7.2.0",
"@babel/plugin-transform-duplicate-keys": "^7.2.0",
"@babel/plugin-transform-exponentiation-operator": "^7.2.0",
"@babel/plugin-transform-for-of": "^7.2.0",
"@babel/plugin-transform-for-of": "^7.4.0",
"@babel/plugin-transform-function-name": "^7.2.0",
"@babel/plugin-transform-literals": "^7.2.0",
"@babel/plugin-transform-modules-amd": "^7.2.0",
"@babel/plugin-transform-modules-commonjs": "^7.2.0",
"@babel/plugin-transform-modules-systemjs": "^7.3.4",
"@babel/plugin-transform-modules-commonjs": "^7.4.0",
"@babel/plugin-transform-modules-systemjs": "^7.4.0",
"@babel/plugin-transform-modules-umd": "^7.2.0",
"@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
"@babel/plugin-transform-new-target": "^7.0.0",
"@babel/plugin-transform-new-target": "^7.4.0",
"@babel/plugin-transform-object-super": "^7.2.0",
"@babel/plugin-transform-parameters": "^7.2.0",
"@babel/plugin-transform-regenerator": "^7.3.4",
"@babel/plugin-transform-parameters": "^7.4.0",
"@babel/plugin-transform-regenerator": "^7.4.0",
"@babel/plugin-transform-shorthand-properties": "^7.2.0",

@@ -58,3 +58,5 @@ "@babel/plugin-transform-spread": "^7.2.0",

"@babel/plugin-transform-unicode-regex": "^7.2.0",
"browserslist": "^4.3.4",
"@babel/types": "^7.4.0",
"browserslist": "^4.4.2",
"core-js-compat": "^3.0.0",
"invariant": "^2.2.2",

@@ -69,10 +71,11 @@ "js-levenshtein": "^1.1.3",

"@babel/cli": "^7.2.3",
"@babel/core": "^7.3.4",
"@babel/core": "^7.4.0",
"@babel/helper-fixtures": "^7.2.0",
"@babel/helper-plugin-test-runner": "^7.0.0",
"caniuse-db": "1.0.30000851",
"compat-table": "kangax/compat-table#1e7b377fbdda9243cf9602872fcb493cdbdd565f",
"electron-to-chromium": "1.3.79"
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"caniuse-db": "1.0.30000938",
"compat-table": "kangax/compat-table#6d012ba020fa7415e8a2d29e87924bab79b128a3",
"electron-to-chromium": "1.3.113"
},
"gitHead": "1f6454cc90fe33e0a32260871212e2f719f35741"
"gitHead": "f1328fb913b5a93d54dfc6e3728b1f56c8f4a804"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc