%PDF- %PDF-
Direktori : /usr/local/lib/node_modules/babel-upgrade/lib/ |
Current File : //usr/local/lib/node_modules/babel-upgrade/lib/upgradeConfig.js |
"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; };