@babel/preset-env
Advanced tools
Comparing version 7.7.7 to 7.8.0
@@ -5,3 +5,3 @@ # Contributing | ||
### Update [`plugin-features.js`](https://github.com/babel/babel/blob/master/packages/babel-preset-env/data/plugin-features.js) | ||
### Update [`plugin-features.js`](https://github.com/babel/babel/blob/master/packages/babel-compat-data/scripts/data/plugin-features.js) | ||
@@ -8,0 +8,0 @@ *Example:* |
@@ -0,1 +1,2 @@ | ||
/* eslint sort-keys: "error" */ | ||
// These mappings represent the syntax proposals that have been | ||
@@ -6,10 +7,19 @@ // shipped by browsers, and are enabled by the `shippedProposals` option. | ||
const pluginSyntaxMap = new Map([ | ||
["proposal-async-generator-functions", "syntax-async-generators"], | ||
["proposal-object-rest-spread", "syntax-object-rest-spread"], | ||
["proposal-optional-catch-binding", "syntax-optional-catch-binding"], | ||
["proposal-unicode-property-regex", null], | ||
["proposal-json-strings", "syntax-json-strings"], | ||
]); | ||
// use intermediary object to enforce alphabetical key order | ||
const pluginSyntaxObject = { | ||
"proposal-async-generator-functions": "syntax-async-generators", | ||
"proposal-json-strings": "syntax-json-strings", | ||
"proposal-nullish-coalescing-operator": "syntax-nullish-coalescing-operator", | ||
"proposal-object-rest-spread": "syntax-object-rest-spread", | ||
"proposal-optional-catch-binding": "syntax-optional-catch-binding", | ||
"proposal-optional-chaining": "syntax-optional-chaining", | ||
"proposal-unicode-property-regex": null, | ||
}; | ||
module.exports = { proposalPlugins, pluginSyntaxMap }; | ||
const pluginSyntaxEntries = Object.keys(pluginSyntaxObject).map(function (key) { | ||
return [key, pluginSyntaxObject[key]]; | ||
}); | ||
const pluginSyntaxMap = new Map(pluginSyntaxEntries); | ||
module.exports = { pluginSyntaxMap, proposalPlugins }; |
@@ -1,3 +0,3 @@ | ||
module.exports = { | ||
safari: "tp", | ||
}; | ||
// TODO: Remove in Babel 8 | ||
module.exports = require("@babel/helper-compilation-targets").unreleasedLabels; |
@@ -14,2 +14,4 @@ "use strict"; | ||
var _pluginSyntaxNullishCoalescingOperator = _interopRequireDefault(require("@babel/plugin-syntax-nullish-coalescing-operator")); | ||
var _pluginSyntaxObjectRestSpread = _interopRequireDefault(require("@babel/plugin-syntax-object-rest-spread")); | ||
@@ -19,2 +21,4 @@ | ||
var _pluginSyntaxOptionalChaining = _interopRequireDefault(require("@babel/plugin-syntax-optional-chaining")); | ||
var _pluginSyntaxTopLevelAwait = _interopRequireDefault(require("@babel/plugin-syntax-top-level-await")); | ||
@@ -28,2 +32,4 @@ | ||
var _pluginProposalNullishCoalescingOperator = _interopRequireDefault(require("@babel/plugin-proposal-nullish-coalescing-operator")); | ||
var _pluginProposalObjectRestSpread = _interopRequireDefault(require("@babel/plugin-proposal-object-rest-spread")); | ||
@@ -33,2 +39,4 @@ | ||
var _pluginProposalOptionalChaining = _interopRequireDefault(require("@babel/plugin-proposal-optional-chaining")); | ||
var _pluginProposalUnicodePropertyRegex = _interopRequireDefault(require("@babel/plugin-proposal-unicode-property-regex")); | ||
@@ -101,13 +109,20 @@ | ||
var _default = { | ||
"proposal-async-generator-functions": _pluginProposalAsyncGeneratorFunctions.default, | ||
"proposal-dynamic-import": _pluginProposalDynamicImport.default, | ||
"proposal-json-strings": _pluginProposalJsonStrings.default, | ||
"proposal-nullish-coalescing-operator": _pluginProposalNullishCoalescingOperator.default, | ||
"proposal-object-rest-spread": _pluginProposalObjectRestSpread.default, | ||
"proposal-optional-catch-binding": _pluginProposalOptionalCatchBinding.default, | ||
"proposal-optional-chaining": _pluginProposalOptionalChaining.default, | ||
"proposal-unicode-property-regex": _pluginProposalUnicodePropertyRegex.default, | ||
"syntax-async-generators": _pluginSyntaxAsyncGenerators.default, | ||
"syntax-dynamic-import": _pluginSyntaxDynamicImport.default, | ||
"syntax-json-strings": _pluginSyntaxJsonStrings.default, | ||
"syntax-nullish-coalescing-operator": _pluginSyntaxNullishCoalescingOperator.default, | ||
"syntax-object-rest-spread": _pluginSyntaxObjectRestSpread.default, | ||
"syntax-optional-catch-binding": _pluginSyntaxOptionalCatchBinding.default, | ||
"syntax-optional-chaining": _pluginSyntaxOptionalChaining.default, | ||
"syntax-top-level-await": _pluginSyntaxTopLevelAwait.default, | ||
"transform-arrow-functions": _pluginTransformArrowFunctions.default, | ||
"transform-async-to-generator": _pluginTransformAsyncToGenerator.default, | ||
"proposal-async-generator-functions": _pluginProposalAsyncGeneratorFunctions.default, | ||
"proposal-dynamic-import": _pluginProposalDynamicImport.default, | ||
"proposal-json-strings": _pluginProposalJsonStrings.default, | ||
"transform-arrow-functions": _pluginTransformArrowFunctions.default, | ||
"transform-block-scoped-functions": _pluginTransformBlockScopedFunctions.default, | ||
@@ -120,2 +135,3 @@ "transform-block-scoping": _pluginTransformBlockScoping.default, | ||
"transform-duplicate-keys": _pluginTransformDuplicateKeys.default, | ||
"transform-exponentiation-operator": _pluginTransformExponentiationOperator.default, | ||
"transform-for-of": _pluginTransformForOf.default, | ||
@@ -130,5 +146,7 @@ "transform-function-name": _pluginTransformFunctionName.default, | ||
"transform-named-capturing-groups-regex": _pluginTransformNamedCapturingGroupsRegex.default, | ||
"transform-new-target": _pluginTransformNewTarget.default, | ||
"transform-object-super": _pluginTransformObjectSuper.default, | ||
"transform-parameters": _pluginTransformParameters.default, | ||
"transform-property-literals": _pluginTransformPropertyLiterals.default, | ||
"transform-regenerator": _pluginTransformRegenerator.default, | ||
"transform-reserved-words": _pluginTransformReservedWords.default, | ||
@@ -140,10 +158,4 @@ "transform-shorthand-properties": _pluginTransformShorthandProperties.default, | ||
"transform-typeof-symbol": _pluginTransformTypeofSymbol.default, | ||
"transform-unicode-regex": _pluginTransformUnicodeRegex.default, | ||
"transform-exponentiation-operator": _pluginTransformExponentiationOperator.default, | ||
"transform-new-target": _pluginTransformNewTarget.default, | ||
"proposal-object-rest-spread": _pluginProposalObjectRestSpread.default, | ||
"proposal-optional-catch-binding": _pluginProposalOptionalCatchBinding.default, | ||
"transform-regenerator": _pluginTransformRegenerator.default, | ||
"proposal-unicode-property-regex": _pluginProposalUnicodePropertyRegex.default | ||
"transform-unicode-regex": _pluginTransformUnicodeRegex.default | ||
}; | ||
exports.default = _default; |
@@ -8,8 +8,4 @@ "use strict"; | ||
var _semver = _interopRequireDefault(require("semver")); | ||
var _helperCompilationTargets = require("@babel/helper-compilation-targets"); | ||
var _utils = require("./utils"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const wordEnds = size => { | ||
@@ -20,20 +16,3 @@ return size > 1 ? "s" : ""; | ||
const logPluginOrPolyfill = (item, targetVersions, list) => { | ||
const minVersions = list[item] || {}; | ||
const filteredList = Object.keys(targetVersions).reduce((result, env) => { | ||
const minVersion = minVersions[env]; | ||
const targetVersion = targetVersions[env]; | ||
if (!minVersion) { | ||
result[env] = (0, _utils.prettifyVersion)(targetVersion); | ||
} else { | ||
const minIsUnreleased = (0, _utils.isUnreleasedVersion)(minVersion, env); | ||
const targetIsUnreleased = (0, _utils.isUnreleasedVersion)(targetVersion, env); | ||
if (!targetIsUnreleased && (minIsUnreleased || _semver.default.lt(targetVersion.toString(), (0, _utils.semverify)(minVersion)))) { | ||
result[env] = (0, _utils.prettifyVersion)(targetVersion); | ||
} | ||
} | ||
return result; | ||
}, {}); | ||
const filteredList = (0, _helperCompilationTargets.getInclusionReasons)(item, targetVersions, list); | ||
const formattedTargets = JSON.stringify(filteredList).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }'); | ||
@@ -40,0 +19,0 @@ console.log(` ${item} ${formattedTargets}`); |
@@ -6,75 +6,10 @@ "use strict"; | ||
}); | ||
exports.isPluginRequired = isPluginRequired; | ||
exports.default = _default; | ||
exports.removeUnnecessaryItems = removeUnnecessaryItems; | ||
var _semver = _interopRequireDefault(require("semver")); | ||
var _utils = require("./utils"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function 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; | ||
} | ||
if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) { | ||
return true; | ||
} | ||
if (!_semver.default.valid(lowestTargetedVersion.toString())) { | ||
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.toString()); | ||
}); | ||
return isRequiredForEnvironments.length > 0; | ||
} | ||
function _default(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) { | ||
const result = new Set(); | ||
for (const item in list) { | ||
if (!excludes.has(item) && (isPluginRequired(targets, list[item]) || includes.has(item))) { | ||
result.add(item); | ||
} else if (pluginSyntaxMap) { | ||
const shippedProposalsSyntax = 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 removeUnnecessaryItems(items, overlapping) { | ||
items.forEach(item => { | ||
const names = overlapping.get(item); | ||
if (names) names.forEach(name => items.delete(name)); | ||
var _overlapping$item; | ||
(_overlapping$item = overlapping[item]) == null ? void 0 : _overlapping$item.forEach(name => items.delete(name)); | ||
}); | ||
} |
@@ -6,8 +6,3 @@ "use strict"; | ||
}); | ||
Object.defineProperty(exports, "isPluginRequired", { | ||
enumerable: true, | ||
get: function () { | ||
return _filterItems.isPluginRequired; | ||
} | ||
}); | ||
exports.isPluginRequired = isPluginRequired; | ||
exports.default = exports.getPolyfillPlugins = exports.getModulesPluginNames = exports.transformIncludesAndExcludes = void 0; | ||
@@ -21,3 +16,3 @@ | ||
var _filterItems = _interopRequireWildcard(require("./filter-items")); | ||
var _filterItems = require("./filter-items"); | ||
@@ -28,7 +23,7 @@ var _moduleTransformations = _interopRequireDefault(require("./module-transformations")); | ||
var _plugins = _interopRequireDefault(require("../data/plugins.json")); | ||
var _plugins = _interopRequireDefault(require("@babel/compat-data/plugins")); | ||
var _shippedProposals = require("../data/shipped-proposals"); | ||
var _overlappingPlugins = _interopRequireDefault(require("../data/overlapping-plugins")); | ||
var _overlappingPlugins = _interopRequireDefault(require("@babel/compat-data/overlapping-plugins")); | ||
@@ -47,3 +42,3 @@ var _usagePlugin = _interopRequireDefault(require("./polyfills/corejs2/usage-plugin")); | ||
var _targetsParser = _interopRequireDefault(require("./targets-parser")); | ||
var _helperCompilationTargets = _interopRequireWildcard(require("@babel/helper-compilation-targets")); | ||
@@ -62,2 +57,10 @@ var _availablePlugins = _interopRequireDefault(require("./available-plugins")); | ||
function isPluginRequired(targets, support) { | ||
return !(0, _helperCompilationTargets.isRequired)("fake-name", targets, { | ||
compatData: { | ||
"fake-name": support | ||
} | ||
}); | ||
} | ||
const pluginListWithoutProposals = (0, _utils.filterStageFromList)(_plugins.default, _shippedProposals.proposalPlugins); | ||
@@ -230,3 +233,3 @@ | ||
const targets = (0, _targetsParser.default)(optionsTargets, { | ||
const targets = (0, _helperCompilationTargets.default)(optionsTargets, { | ||
ignoreBrowserslistConfig, | ||
@@ -245,3 +248,3 @@ configPath | ||
}); | ||
const pluginNames = (0, _filterItems.default)(shippedProposals ? _plugins.default : pluginListWithoutProposals, include.plugins, exclude.plugins, transformTargets, modulesPluginNames, (0, _getOptionSpecificExcludes.default)({ | ||
const pluginNames = (0, _helperCompilationTargets.filterItems)(shippedProposals ? _plugins.default : pluginListWithoutProposals, include.plugins, exclude.plugins, transformTargets, modulesPluginNames, (0, _getOptionSpecificExcludes.default)({ | ||
loose | ||
@@ -271,3 +274,3 @@ }), _shippedProposals.pluginSyntaxMap); | ||
console.log("\nUsing targets:"); | ||
console.log(JSON.stringify((0, _utils.prettifyTargets)(targets), null, 2)); | ||
console.log(JSON.stringify((0, _helperCompilationTargets.prettifyTargets)(targets), null, 2)); | ||
console.log(`\nUsing modules transform: ${modules.toString()}`); | ||
@@ -274,0 +277,0 @@ console.log("\nUsing plugins:"); |
@@ -12,2 +12,4 @@ "use strict"; | ||
var _levenary = _interopRequireDefault(require("levenary")); | ||
var _invariant = _interopRequireDefault(require("invariant")); | ||
@@ -17,5 +19,5 @@ | ||
var _corejs2BuiltIns = _interopRequireDefault(require("../data/corejs2-built-ins.json")); | ||
var _corejs2BuiltIns = _interopRequireDefault(require("@babel/compat-data/corejs2-built-ins")); | ||
var _plugins = _interopRequireDefault(require("../data/plugins.json")); | ||
var _plugins = _interopRequireDefault(require("@babel/compat-data/plugins")); | ||
@@ -28,6 +30,2 @@ var _moduleTransformations = _interopRequireDefault(require("./module-transformations")); | ||
var _targetsParser = require("./targets-parser"); | ||
var _utils = require("./utils"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -41,3 +39,3 @@ | ||
throw new Error(`Invalid Option: ${option} is not a valid top-level option. | ||
Maybe you meant to use '${(0, _utils.findSuggestion)(validOptions, option)}'?`); | ||
Maybe you meant to use '${(0, _levenary.default)(option, validOptions)}'?`); | ||
} | ||
@@ -88,3 +86,3 @@ } | ||
const normalizeTargets = targets => { | ||
if ((0, _targetsParser.isBrowsersQueryValid)(targets)) { | ||
if (typeof targets === "string" || Array.isArray(targets)) { | ||
return { | ||
@@ -91,0 +89,0 @@ browsers: targets |
@@ -6,3 +6,3 @@ "use strict"; | ||
}); | ||
exports.TargetNames = exports.UseBuiltInsOption = exports.ModulesOption = exports.TopLevelOptions = void 0; | ||
exports.UseBuiltInsOption = exports.ModulesOption = exports.TopLevelOptions = void 0; | ||
const TopLevelOptions = { | ||
@@ -39,19 +39,2 @@ configPath: "configPath", | ||
}; | ||
exports.UseBuiltInsOption = UseBuiltInsOption; | ||
const TargetNames = { | ||
esmodules: "esmodules", | ||
node: "node", | ||
browsers: "browsers", | ||
chrome: "chrome", | ||
opera: "opera", | ||
edge: "edge", | ||
firefox: "firefox", | ||
safari: "safari", | ||
ie: "ie", | ||
ios: "ios", | ||
android: "android", | ||
electron: "electron", | ||
samsung: "samsung", | ||
uglify: "uglify" | ||
}; | ||
exports.TargetNames = TargetNames; | ||
exports.UseBuiltInsOption = UseBuiltInsOption; |
@@ -8,8 +8,8 @@ "use strict"; | ||
var _corejs2BuiltIns = _interopRequireDefault(require("../../../data/corejs2-built-ins.json")); | ||
var _corejs2BuiltIns = _interopRequireDefault(require("@babel/compat-data/corejs2-built-ins")); | ||
var _helperCompilationTargets = require("@babel/helper-compilation-targets"); | ||
var _getPlatformSpecificDefault = _interopRequireDefault(require("./get-platform-specific-default")); | ||
var _filterItems = _interopRequireDefault(require("../../filter-items")); | ||
var _utils = require("../../utils"); | ||
@@ -28,3 +28,3 @@ | ||
}) { | ||
const polyfills = (0, _filterItems.default)(_corejs2BuiltIns.default, include, exclude, polyfillTargets, (0, _getPlatformSpecificDefault.default)(polyfillTargets)); | ||
const polyfills = (0, _helperCompilationTargets.filterItems)(_corejs2BuiltIns.default, include, exclude, polyfillTargets, (0, _getPlatformSpecificDefault.default)(polyfillTargets)); | ||
const isPolyfillImport = { | ||
@@ -31,0 +31,0 @@ ImportDeclaration(path) { |
@@ -8,8 +8,8 @@ "use strict"; | ||
var _corejs2BuiltIns = _interopRequireDefault(require("../../../data/corejs2-built-ins.json")); | ||
var _corejs2BuiltIns = _interopRequireDefault(require("@babel/compat-data/corejs2-built-ins")); | ||
var _helperCompilationTargets = require("@babel/helper-compilation-targets"); | ||
var _getPlatformSpecificDefault = _interopRequireDefault(require("./get-platform-specific-default")); | ||
var _filterItems = _interopRequireDefault(require("../../filter-items")); | ||
var _builtInDefinitions = require("./built-in-definitions"); | ||
@@ -35,3 +35,3 @@ | ||
}) { | ||
const polyfills = (0, _filterItems.default)(_corejs2BuiltIns.default, include, exclude, polyfillTargets, (0, _getPlatformSpecificDefault.default)(polyfillTargets)); | ||
const polyfills = (0, _helperCompilationTargets.filterItems)(_corejs2BuiltIns.default, include, exclude, polyfillTargets, (0, _getPlatformSpecificDefault.default)(polyfillTargets)); | ||
const addAndRemovePolyfillImports = { | ||
@@ -38,0 +38,0 @@ ImportDeclaration(path) { |
@@ -242,3 +242,3 @@ "use strict"; | ||
allSettled: ["esnext.promise.all-settled", ...PromiseDependenciesWithIterators], | ||
any: ["esnext.promise.any", ...PromiseDependenciesWithIterators], | ||
any: ["esnext.promise.any", "esnext.aggregate-error", ...PromiseDependenciesWithIterators], | ||
race: PromiseDependenciesWithIterators, | ||
@@ -245,0 +245,0 @@ try: ["esnext.promise.try", ...PromiseDependenciesWithIterators] |
@@ -14,3 +14,3 @@ "use strict"; | ||
var _filterItems = _interopRequireDefault(require("../../filter-items")); | ||
var _helperCompilationTargets = require("@babel/helper-compilation-targets"); | ||
@@ -46,3 +46,3 @@ var _utils = require("../../utils"); | ||
}) { | ||
const polyfills = (0, _filterItems.default)(_data.default, include, exclude, polyfillTargets, null); | ||
const polyfills = (0, _helperCompilationTargets.filterItems)(_data.default, include, exclude, polyfillTargets, null); | ||
const available = new Set((0, _getModulesListForTargetVersion.default)(corejs.version)); | ||
@@ -49,0 +49,0 @@ |
@@ -14,3 +14,3 @@ "use strict"; | ||
var _filterItems = _interopRequireDefault(require("../../filter-items")); | ||
var _helperCompilationTargets = require("@babel/helper-compilation-targets"); | ||
@@ -47,3 +47,3 @@ var _builtInDefinitions = require("./built-in-definitions"); | ||
}) { | ||
const polyfills = (0, _filterItems.default)(proposals ? _data.default : shippedProposals ? corejs3PolyfillsWithShippedProposals : corejs3PolyfillsWithoutProposals, include, exclude, polyfillTargets, null); | ||
const polyfills = (0, _helperCompilationTargets.filterItems)(proposals ? _data.default : shippedProposals ? corejs3PolyfillsWithShippedProposals : corejs3PolyfillsWithoutProposals, include, exclude, polyfillTargets, null); | ||
const available = new Set((0, _getModulesListForTargetVersion.default)(corejs.version)); | ||
@@ -50,0 +50,0 @@ |
@@ -6,213 +6,25 @@ "use strict"; | ||
}); | ||
exports.default = exports.semverMin = exports.isBrowsersQueryValid = void 0; | ||
var _browserslist = _interopRequireDefault(require("browserslist")); | ||
var _invariant = _interopRequireDefault(require("invariant")); | ||
var _semver = _interopRequireDefault(require("semver")); | ||
var _utils = require("./utils"); | ||
var _builtInModules = _interopRequireDefault(require("../data/built-in-modules.json")); | ||
var _options = require("./options"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const browserslistDefaults = _browserslist.default.defaults; | ||
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]) { | ||
throw new Error(`Invalid Option: '${target}' is not a valid target | ||
Maybe you meant to use '${(0, _utils.findSuggestion)(validTargets, target)}'?`); | ||
} | ||
Object.defineProperty(exports, "default", { | ||
enumerable: true, | ||
get: function () { | ||
return _helperCompilationTargets.default; | ||
} | ||
}; | ||
const browserNameMap = { | ||
and_chr: "chrome", | ||
and_ff: "firefox", | ||
android: "android", | ||
chrome: "chrome", | ||
edge: "edge", | ||
firefox: "firefox", | ||
ie: "ie", | ||
ie_mob: "ie", | ||
ios_saf: "ios", | ||
node: "node", | ||
op_mob: "opera", | ||
opera: "opera", | ||
safari: "safari", | ||
samsung: "samsung" | ||
}; | ||
const isBrowsersQueryValid = browsers => typeof browsers === "string" || Array.isArray(browsers); | ||
exports.isBrowsersQueryValid = isBrowsersQueryValid; | ||
const validateBrowsers = browsers => { | ||
(0, _invariant.default)(typeof browsers === "undefined" || isBrowsersQueryValid(browsers), `Invalid Option: '${browsers}' is not a valid browserslist query`); | ||
return browsers; | ||
}; | ||
const semverMin = (first, second) => { | ||
return first && _semver.default.lt(first, second) ? first : second; | ||
}; | ||
exports.semverMin = semverMin; | ||
const mergeBrowsers = (fromQuery, fromTarget) => { | ||
return Object.keys(fromTarget).reduce((queryObj, targKey) => { | ||
if (targKey !== _options.TargetNames.browsers) { | ||
queryObj[targKey] = fromTarget[targKey]; | ||
} | ||
return queryObj; | ||
}, fromQuery); | ||
}; | ||
const getLowestVersions = browsers => { | ||
return browsers.reduce((all, browser) => { | ||
const [browserName, browserVersion] = browser.split(" "); | ||
const normalizedBrowserName = browserNameMap[browserName]; | ||
if (!normalizedBrowserName) { | ||
return all; | ||
} | ||
try { | ||
const splitVersion = browserVersion.split("-")[0].toLowerCase(); | ||
const isSplitUnreleased = (0, _utils.isUnreleasedVersion)(splitVersion, browserName); | ||
if (!all[normalizedBrowserName]) { | ||
all[normalizedBrowserName] = isSplitUnreleased ? splitVersion : (0, _utils.semverify)(splitVersion); | ||
return all; | ||
} | ||
const version = all[normalizedBrowserName]; | ||
const isUnreleased = (0, _utils.isUnreleasedVersion)(version, browserName); | ||
if (isUnreleased && isSplitUnreleased) { | ||
all[normalizedBrowserName] = (0, _utils.getLowestUnreleased)(version, splitVersion, browserName); | ||
} else if (isUnreleased) { | ||
all[normalizedBrowserName] = (0, _utils.semverify)(splitVersion); | ||
} else if (!isUnreleased && !isSplitUnreleased) { | ||
const parsedBrowserVersion = (0, _utils.semverify)(splitVersion); | ||
all[normalizedBrowserName] = semverMin(version, parsedBrowserVersion); | ||
} | ||
} catch (e) {} | ||
return all; | ||
}, {}); | ||
}; | ||
const outputDecimalWarning = decimalTargets => { | ||
if (!decimalTargets || !decimalTargets.length) { | ||
return; | ||
}); | ||
Object.defineProperty(exports, "isBrowsersQueryValid", { | ||
enumerable: true, | ||
get: function () { | ||
return _helperCompilationTargets.isBrowsersQueryValid; | ||
} | ||
console.log("Warning, the following targets are using a decimal version:"); | ||
console.log(""); | ||
decimalTargets.forEach(({ | ||
target, | ||
value | ||
}) => console.log(` ${target}: ${value}`)); | ||
console.log(""); | ||
console.log("We recommend using a string for minor/patch versions to avoid numbers like 6.10"); | ||
console.log("getting parsed as 6.1, which can lead to unexpected behavior."); | ||
console.log(""); | ||
}; | ||
const semverifyTarget = (target, value) => { | ||
try { | ||
return (0, _utils.semverify)(value); | ||
} catch (error) { | ||
throw new Error(`Invalid Option: '${value}' is not a valid value for 'targets.${target}'.`); | ||
}); | ||
Object.defineProperty(exports, "semverMin", { | ||
enumerable: true, | ||
get: function () { | ||
return _helperCompilationTargets.semverMin; | ||
} | ||
}; | ||
}); | ||
const targetParserMap = { | ||
__default: (target, value) => { | ||
const version = (0, _utils.isUnreleasedVersion)(value, target) ? value.toLowerCase() : semverifyTarget(target, value); | ||
return [target, version]; | ||
}, | ||
node: (target, value) => { | ||
const parsed = value === true || value === "current" ? process.versions.node : semverifyTarget(target, value); | ||
return [target, parsed]; | ||
} | ||
}; | ||
var _helperCompilationTargets = _interopRequireWildcard(require("@babel/helper-compilation-targets")); | ||
const getTargets = (targets = {}, options = {}) => { | ||
const targetOpts = {}; | ||
validateTargetNames(targets); | ||
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } | ||
if (targets.esmodules) { | ||
const supportsESModules = _builtInModules.default["es6.module"]; | ||
targets.browsers = Object.keys(supportsESModules).map(browser => `${browser} ${supportsESModules[browser]}`).join(", "); | ||
} | ||
const browsersquery = validateBrowsers(targets.browsers); | ||
const hasTargets = Object.keys(targets).length > 0; | ||
const shouldParseBrowsers = !!targets.browsers; | ||
const shouldSearchForConfig = !options.ignoreBrowserslistConfig && !hasTargets; | ||
if (shouldParseBrowsers || shouldSearchForConfig) { | ||
if (!hasTargets) { | ||
_browserslist.default.defaults = objectToBrowserslist(targets); | ||
} | ||
const browsers = (0, _browserslist.default)(browsersquery, { | ||
path: options.configPath, | ||
mobileToDesktop: true | ||
}); | ||
const queryBrowsers = getLowestVersions(browsers); | ||
targets = mergeBrowsers(queryBrowsers, targets); | ||
_browserslist.default.defaults = browserslistDefaults; | ||
} | ||
const parsed = Object.keys(targets).filter(value => value !== _options.TargetNames.esmodules).sort().reduce((results, target) => { | ||
if (target !== _options.TargetNames.browsers) { | ||
const value = targets[target]; | ||
if (typeof value === "number" && value % 1 !== 0) { | ||
results.decimalWarnings.push({ | ||
target, | ||
value | ||
}); | ||
} | ||
const parser = targetParserMap[target] || targetParserMap.__default; | ||
const [parsedTarget, parsedValue] = parser(target, value); | ||
if (parsedValue) { | ||
results.targets[parsedTarget] = parsedValue; | ||
} | ||
} | ||
return results; | ||
}, { | ||
targets: targetOpts, | ||
decimalWarnings: [] | ||
}); | ||
outputDecimalWarning(parsed.decimalWarnings); | ||
return parsed.targets; | ||
}; | ||
var _default = getTargets; | ||
exports.default = _default; | ||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } |
101
lib/utils.js
@@ -7,9 +7,3 @@ "use strict"; | ||
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; | ||
@@ -26,16 +20,4 @@ exports.getImportSource = getImportSource; | ||
var _invariant = _interopRequireDefault(require("invariant")); | ||
var _semver = _interopRequireDefault(require("semver")); | ||
var _jsLevenshtein = _interopRequireDefault(require("js-levenshtein")); | ||
var _helperModuleImports = require("@babel/helper-module-imports"); | ||
var _unreleasedLabels = _interopRequireDefault(require("../data/unreleased-labels")); | ||
var _targetsParser = require("./targets-parser"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } | ||
@@ -52,19 +34,2 @@ | ||
const versionRegExp = /^(\d+|\d+.\d+)$/; | ||
function semverify(version) { | ||
if (typeof version === "string" && _semver.default.valid(version)) { | ||
return version; | ||
} | ||
(0, _invariant.default)(typeof version === "number" || typeof version === "string" && versionRegExp.test(version), `'${version}' is not a valid version`); | ||
const split = version.toString().split("."); | ||
while (split.length < 3) { | ||
split.push("0"); | ||
} | ||
return split.join("."); | ||
} | ||
function intersection(first, second, third) { | ||
@@ -80,68 +45,2 @@ const result = new Set(); | ||
function findSuggestion(options, option) { | ||
let levenshteinValue = Infinity; | ||
return options.reduce((suggestion, validOption) => { | ||
const value = (0, _jsLevenshtein.default)(validOption, option); | ||
if (value < levenshteinValue) { | ||
levenshteinValue = value; | ||
return validOption; | ||
} | ||
return suggestion; | ||
}, ""); | ||
} | ||
function prettifyVersion(version) { | ||
if (typeof version !== "string") { | ||
return version; | ||
} | ||
const parts = [_semver.default.major(version)]; | ||
const minor = _semver.default.minor(version); | ||
const patch = _semver.default.patch(version); | ||
if (minor || patch) { | ||
parts.push(minor); | ||
} | ||
if (patch) { | ||
parts.push(patch); | ||
} | ||
return parts.join("."); | ||
} | ||
function prettifyTargets(targets) { | ||
return Object.keys(targets).reduce((results, target) => { | ||
let value = targets[target]; | ||
const unreleasedLabel = _unreleasedLabels.default[target]; | ||
if (typeof value === "string" && unreleasedLabel !== value) { | ||
value = prettifyVersion(value); | ||
} | ||
results[target] = value; | ||
return results; | ||
}, {}); | ||
} | ||
function isUnreleasedVersion(version, env) { | ||
const unreleasedLabel = _unreleasedLabels.default[env]; | ||
return !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase(); | ||
} | ||
function getLowestUnreleased(a, b, env) { | ||
const unreleasedLabel = _unreleasedLabels.default[env]; | ||
const hasUnreleased = [a, b].some(item => item === unreleasedLabel); | ||
if (hasUnreleased) { | ||
return a === hasUnreleased ? b : a || b; | ||
} | ||
return (0, _targetsParser.semverMin)(a, b); | ||
} | ||
function filterStageFromList(list, stageList) { | ||
@@ -148,0 +47,0 @@ return Object.keys(list).reduce((result, item) => { |
124
package.json
{ | ||
"name": "@babel/preset-env", | ||
"version": "7.7.7", | ||
"version": "7.8.0", | ||
"description": "A Babel preset for each environment.", | ||
@@ -8,2 +8,3 @@ "author": "Henry Zhu <hi@henryzoo.com>", | ||
"license": "MIT", | ||
"type": "commonjs", | ||
"publishConfig": { | ||
@@ -14,56 +15,59 @@ "access": "public" | ||
"main": "lib/index.js", | ||
"scripts": { | ||
"build-data": "./scripts/download-compat-table.sh; node ./scripts/build-data.js; node ./scripts/build-modules-support.js" | ||
}, | ||
"dependencies": { | ||
"@babel/helper-module-imports": "^7.7.4", | ||
"@babel/helper-plugin-utils": "^7.0.0", | ||
"@babel/plugin-proposal-async-generator-functions": "^7.7.4", | ||
"@babel/plugin-proposal-dynamic-import": "^7.7.4", | ||
"@babel/plugin-proposal-json-strings": "^7.7.4", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.7.7", | ||
"@babel/plugin-proposal-optional-catch-binding": "^7.7.4", | ||
"@babel/plugin-proposal-unicode-property-regex": "^7.7.7", | ||
"@babel/plugin-syntax-async-generators": "^7.7.4", | ||
"@babel/plugin-syntax-dynamic-import": "^7.7.4", | ||
"@babel/plugin-syntax-json-strings": "^7.7.4", | ||
"@babel/plugin-syntax-object-rest-spread": "^7.7.4", | ||
"@babel/plugin-syntax-optional-catch-binding": "^7.7.4", | ||
"@babel/plugin-syntax-top-level-await": "^7.7.4", | ||
"@babel/plugin-transform-arrow-functions": "^7.7.4", | ||
"@babel/plugin-transform-async-to-generator": "^7.7.4", | ||
"@babel/plugin-transform-block-scoped-functions": "^7.7.4", | ||
"@babel/plugin-transform-block-scoping": "^7.7.4", | ||
"@babel/plugin-transform-classes": "^7.7.4", | ||
"@babel/plugin-transform-computed-properties": "^7.7.4", | ||
"@babel/plugin-transform-destructuring": "^7.7.4", | ||
"@babel/plugin-transform-dotall-regex": "^7.7.7", | ||
"@babel/plugin-transform-duplicate-keys": "^7.7.4", | ||
"@babel/plugin-transform-exponentiation-operator": "^7.7.4", | ||
"@babel/plugin-transform-for-of": "^7.7.4", | ||
"@babel/plugin-transform-function-name": "^7.7.4", | ||
"@babel/plugin-transform-literals": "^7.7.4", | ||
"@babel/plugin-transform-member-expression-literals": "^7.7.4", | ||
"@babel/plugin-transform-modules-amd": "^7.7.5", | ||
"@babel/plugin-transform-modules-commonjs": "^7.7.5", | ||
"@babel/plugin-transform-modules-systemjs": "^7.7.4", | ||
"@babel/plugin-transform-modules-umd": "^7.7.4", | ||
"@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", | ||
"@babel/plugin-transform-new-target": "^7.7.4", | ||
"@babel/plugin-transform-object-super": "^7.7.4", | ||
"@babel/plugin-transform-parameters": "^7.7.7", | ||
"@babel/plugin-transform-property-literals": "^7.7.4", | ||
"@babel/plugin-transform-regenerator": "^7.7.5", | ||
"@babel/plugin-transform-reserved-words": "^7.7.4", | ||
"@babel/plugin-transform-shorthand-properties": "^7.7.4", | ||
"@babel/plugin-transform-spread": "^7.7.4", | ||
"@babel/plugin-transform-sticky-regex": "^7.7.4", | ||
"@babel/plugin-transform-template-literals": "^7.7.4", | ||
"@babel/plugin-transform-typeof-symbol": "^7.7.4", | ||
"@babel/plugin-transform-unicode-regex": "^7.7.4", | ||
"@babel/types": "^7.7.4", | ||
"browserslist": "^4.6.0", | ||
"core-js-compat": "^3.6.0", | ||
"@babel/compat-data": "^7.8.0", | ||
"@babel/helper-compilation-targets": "^7.8.0", | ||
"@babel/helper-module-imports": "^7.8.0", | ||
"@babel/helper-plugin-utils": "^7.8.0", | ||
"@babel/plugin-proposal-async-generator-functions": "^7.8.0", | ||
"@babel/plugin-proposal-dynamic-import": "^7.8.0", | ||
"@babel/plugin-proposal-json-strings": "^7.8.0", | ||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.0", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.8.0", | ||
"@babel/plugin-proposal-optional-catch-binding": "^7.8.0", | ||
"@babel/plugin-proposal-optional-chaining": "^7.8.0", | ||
"@babel/plugin-proposal-unicode-property-regex": "^7.8.0", | ||
"@babel/plugin-syntax-async-generators": "^7.8.0", | ||
"@babel/plugin-syntax-dynamic-import": "^7.8.0", | ||
"@babel/plugin-syntax-json-strings": "^7.8.0", | ||
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", | ||
"@babel/plugin-syntax-object-rest-spread": "^7.8.0", | ||
"@babel/plugin-syntax-optional-catch-binding": "^7.8.0", | ||
"@babel/plugin-syntax-optional-chaining": "^7.8.0", | ||
"@babel/plugin-syntax-top-level-await": "^7.8.0", | ||
"@babel/plugin-transform-arrow-functions": "^7.8.0", | ||
"@babel/plugin-transform-async-to-generator": "^7.8.0", | ||
"@babel/plugin-transform-block-scoped-functions": "^7.8.0", | ||
"@babel/plugin-transform-block-scoping": "^7.8.0", | ||
"@babel/plugin-transform-classes": "^7.8.0", | ||
"@babel/plugin-transform-computed-properties": "^7.8.0", | ||
"@babel/plugin-transform-destructuring": "^7.8.0", | ||
"@babel/plugin-transform-dotall-regex": "^7.8.0", | ||
"@babel/plugin-transform-duplicate-keys": "^7.8.0", | ||
"@babel/plugin-transform-exponentiation-operator": "^7.8.0", | ||
"@babel/plugin-transform-for-of": "^7.8.0", | ||
"@babel/plugin-transform-function-name": "^7.8.0", | ||
"@babel/plugin-transform-literals": "^7.8.0", | ||
"@babel/plugin-transform-member-expression-literals": "^7.8.0", | ||
"@babel/plugin-transform-modules-amd": "^7.8.0", | ||
"@babel/plugin-transform-modules-commonjs": "^7.8.0", | ||
"@babel/plugin-transform-modules-systemjs": "^7.8.0", | ||
"@babel/plugin-transform-modules-umd": "^7.8.0", | ||
"@babel/plugin-transform-named-capturing-groups-regex": "^7.8.0", | ||
"@babel/plugin-transform-new-target": "^7.8.0", | ||
"@babel/plugin-transform-object-super": "^7.8.0", | ||
"@babel/plugin-transform-parameters": "^7.8.0", | ||
"@babel/plugin-transform-property-literals": "^7.8.0", | ||
"@babel/plugin-transform-regenerator": "^7.8.0", | ||
"@babel/plugin-transform-reserved-words": "^7.8.0", | ||
"@babel/plugin-transform-shorthand-properties": "^7.8.0", | ||
"@babel/plugin-transform-spread": "^7.8.0", | ||
"@babel/plugin-transform-sticky-regex": "^7.8.0", | ||
"@babel/plugin-transform-template-literals": "^7.8.0", | ||
"@babel/plugin-transform-typeof-symbol": "^7.8.0", | ||
"@babel/plugin-transform-unicode-regex": "^7.8.0", | ||
"@babel/types": "^7.8.0", | ||
"browserslist": "^4.8.2", | ||
"core-js-compat": "^3.6.2", | ||
"invariant": "^2.2.2", | ||
"js-levenshtein": "^1.1.3", | ||
"levenary": "^1.1.0", | ||
"semver": "^5.5.0" | ||
@@ -75,11 +79,9 @@ }, | ||
"devDependencies": { | ||
"@babel/cli": "^7.7.7", | ||
"@babel/core": "^7.7.7", | ||
"@babel/helper-fixtures": "^7.6.3", | ||
"@babel/helper-plugin-test-runner": "^7.7.4", | ||
"@babel/plugin-syntax-dynamic-import": "^7.2.0", | ||
"caniuse-db": "1.0.30000969", | ||
"electron-to-chromium": "1.3.113" | ||
"@babel/cli": "^7.8.0", | ||
"@babel/core": "^7.8.0", | ||
"@babel/helper-fixtures": "^7.8.0", | ||
"@babel/helper-plugin-test-runner": "^7.8.0", | ||
"@babel/plugin-syntax-dynamic-import": "^7.2.0" | ||
}, | ||
"gitHead": "12da0941c898987ae30045a9da90ed5bf58ecaf9" | ||
"gitHead": "2486615a74580283c49475d66067bd7fcab3330e" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
5
34
90068
58
1863
+ Added@babel/compat-data@^7.8.0
+ Added@babel/plugin-proposal-nullish-coalescing-operator@^7.8.0
+ Added@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0
+ Addedlevenary@^1.1.0
+ Added@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(transitive)
+ Added@babel/plugin-proposal-optional-chaining@7.21.0(transitive)
+ Added@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(transitive)
+ Added@babel/plugin-syntax-optional-chaining@7.8.3(transitive)
+ Addedleven@3.1.0(transitive)
+ Addedlevenary@1.1.1(transitive)
- Removedjs-levenshtein@^1.1.3
- Removedjs-levenshtein@1.1.6(transitive)
Updated@babel/plugin-proposal-async-generator-functions@^7.8.0
Updated@babel/plugin-transform-block-scoped-functions@^7.8.0
Updated@babel/plugin-transform-exponentiation-operator@^7.8.0
Updated@babel/plugin-transform-member-expression-literals@^7.8.0
Updated@babel/plugin-transform-named-capturing-groups-regex@^7.8.0
Updated@babel/types@^7.8.0
Updatedbrowserslist@^4.8.2
Updatedcore-js-compat@^3.6.2