%PDF-
%PDF-
Mini Shell
Mini Shell
"use strict";
var _require = require('./packageData'),
oldPresets = _require.presets,
oldPlugins = _require.plugins,
stagePresets = _require.stagePresets;
var upgradeOptions = require('./upgradeOptions');
function changeName(originalName, kind) {
var oldNames = kind === 'plugin' ? oldPlugins : oldPresets;
var name = originalName;
if (name.indexOf(`babel-${kind}`) !== 0 && name.indexOf('@babel/') !== 0 && name.indexOf('module:ava') !== 0) {
name = `babel-${kind}-${name}`;
}
if (oldNames.hasOwnProperty(name)) {
if (oldNames[name]) {
return oldNames[name];
} else {
return null;
}
}
return originalName;
} // TODO: fix all of this
function changePresets(config) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var presets = config.presets;
var newPlugins = [];
if (!Array.isArray(presets) && typeof presets === 'string') {
presets = config.presets = config.presets.split(',').map(function (preset) {
return preset.trim();
});
} // check if presets are there
if (presets) {
// assume it's an array
for (var i = 0; i < presets.length; i++) {
var preset = presets[i];
var presetsToReplace = Object.keys(oldPresets); // check if it's a preset with options (an array)
var isArray = Array.isArray(preset);
var name = changeName(isArray ? preset[0] : preset, 'preset');
if (name === null || name.startsWith('@babel/preset-stage-')) {
presets.splice(i, 1);
i--;
if (name !== null) {
var stage = name.slice(-1);
newPlugins.push(stagePresets[stage]);
}
} else {
if (isArray) preset[0] = name;else preset = name;
presets[i] = upgradeOptions(preset);
}
}
if (options.hasFlow && !presets.includes('@babel/preset-flow')) {
presets.push('@babel/preset-flow');
}
if (newPlugins.length > 0) {
var _ref;
config.plugins = (_ref = config.plugins || []).concat.apply(_ref, newPlugins);
}
}
}
function changePlugins(config) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var plugins = config.plugins;
var uniquePlugins = new Set();
if (!Array.isArray(plugins) && typeof plugins === 'string') {
plugins = config.plugins = config.plugins.split(',').map(function (plugin) {
return plugin.trim();
});
} // check if plugins are there
if (plugins) {
// assume it's an array
for (var i = 0; i < plugins.length; i++) {
var plugin = plugins[i]; // check if it's a plugin with options (an array)
var isArray = Array.isArray(plugin);
var oldName = isArray ? plugin[0] : plugin;
var name = changeName(oldName, 'plugin');
if (name === null) {
plugins.splice(i, 1);
i--;
} else {
var names = Array.isArray(name) ? name : [name];
for (var j = 0; j < names.length; j++) {
var n = names[j];
if (uniquePlugins.has(n)) {
if (j === 0) {
plugins.splice(i, 1);
i--;
}
continue;
}
uniquePlugins.add(n);
var shouldAddCoreJS = oldName === "babel-plugin-transform-runtime" || oldName === "transform-runtime";
if (oldName === "@babel/plugin-transform-runtime" || oldName === "@babel/transform-runtime") {
// 7.0.0-alpha.5 <= x <= 7.0.0-beta.55
console.warn("Babel was not able to dedice whether or not to add a " + "`corejs: 2` option to @babel/plugin-transform-rumtime. " + "If you want it to handle builtin functions (e.g. Promise, " + "Array.prototype.includes, ...), add that option manually:\n" + "\t[\"@babel/plugin-transform-runtime\", { \"corejs\": 2 }]\n");
}
if (shouldAddCoreJS) {
if (isArray) {
plugin[0] = n;
plugin[1] = Object.assign({
corejs: 2
}, plugin[1]);
} else {
plugin = [n, {
corejs: 2
}];
}
} else {
if (isArray) plugin = [n, plugin[1]];else plugin = n;
}
if (j > 0) {
plugins.splice(i + 1, 0, upgradeOptions(plugin));
i++;
} else plugins[i] = upgradeOptions(plugin);
}
}
}
}
}
module.exports = function upgradeConfig(config, options) {
config = Object.assign({}, config);
changePresets(config, options);
changePlugins(config, options);
if (config.env) {
Object.keys(config.env).forEach(function (env) {
changePresets(config.env[env]);
changePlugins(config.env[env], options);
});
}
return config;
};
Zerion Mini Shell 1.0