%PDF- %PDF-
Direktori : /usr/local/lib/node_modules/babel-upgrade/lib/ |
Current File : //usr/local/lib/node_modules/babel-upgrade/lib/upgradeDeps.js |
"use strict"; var semver = require('semver'); var _require = require('./packageData'), oldPackages = _require.packages, latestPackages = _require.latestPackages, stagePresets = _require.stagePresets; var otherPackages = { 'babel-loader': '^8.0.0', 'rollup-plugin-babel': '^4.0.1', 'babel-eslint': '^9.0.0' }; var runtimeVersionsWithCoreJS = "<= 7.0.0-beta.55"; module.exports = function upgradeDeps(dependencies, version) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var oldRuntimeVersion; var _arr = Object.keys(dependencies); for (var _i = 0; _i < _arr.length; _i++) { var pkg = _arr[_i]; var depVersion = dependencies[pkg]; if (pkg === "babel-runtime" || pkg === "@babel/runtime") { oldRuntimeVersion = depVersion; } if (Object.keys(oldPackages).includes(pkg)) { // don't update `babel-core` bridge if (dependencies[pkg].includes("7.0.0-bridge.0")) { break; } delete dependencies[pkg]; var newPackageName = oldPackages[pkg]; if (newPackageName) { if (process.env.DEBUG) { console.warn(`Updating ${pkg} -> ${newPackageName}`); } if (Array.isArray(newPackageName)) { newPackageName.forEach(function (name) { return dependencies[name] = version; }); } else { dependencies[newPackageName] = version; } } } else if (latestPackages.has(pkg) && semver.valid(depVersion) && semver.validRange(version) && !semver.satisfies(depVersion, version)) { dependencies[pkg] = version; // TODO: refactor out somewhere else } else if (otherPackages[pkg] && semver.lt(semver.valid(semver.coerce(dependencies[pkg])), semver.valid(semver.coerce(otherPackages[pkg])))) { dependencies[pkg] = otherPackages[pkg]; } } // one-off on checking for `@babel/core` dep if (!dependencies['@babel/core'] && Object.keys(dependencies).some(function (a) { return a.startsWith('@babel/plugin') || a.startsWith('@babel/preset') || a.startsWith('babel-plugin') || a.startsWith('babel-preset'); })) { dependencies['@babel/core'] = version; } var webpack = semver.coerce(dependencies.webpack); var depsWebpack1 = webpack && webpack.major === 1; // Later versions of babel-loader are incompatible with Webpack v1. // https://github.com/babel/babel-loader/issues/505 if (depsWebpack1 && dependencies['babel-loader']) { if (process.env.NODE_ENV !== 'test') { console.log('Updating babel-loader to v7.1.1 as this project uses Webpack v1'); } dependencies['babel-loader'] = '7.1.1'; } // babel-bridge is needed for Jest, or for when a project is using Webpack v1 // and babel-loader. // https://github.com/babel/babel-upgrade/issues/29 // https://github.com/babel/babel-loader/issues/505 if ((dependencies['jest'] || dependencies['jest-cli'] || depsWebpack1 && dependencies['babel-loader']) && !dependencies['babel-core']) { dependencies['babel-core'] = '^7.0.0-bridge.0'; } if (dependencies['jest'] || dependencies['jest-cli']) { dependencies['babel-jest'] = '^23.4.2'; } for (var stage = 0; stage <= 3; stage++) { if (dependencies[`@babel/preset-stage-${stage}`]) { delete dependencies[`@babel/preset-stage-${stage}`]; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = stagePresets[stage][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var plugin = _step.value; var name = typeof plugin === "string" ? plugin : plugin[0]; dependencies[name] = version; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } } if (oldRuntimeVersion && semver.intersects(runtimeVersionsWithCoreJS, oldRuntimeVersion)) { delete dependencies['@babel/runtime']; dependencies['@babel/runtime-corejs2'] = version; } return dependencies; };