UNPKG

john-test-upgrade

Version:
84 lines (69 loc) 2.67 kB
var semver = require('semver'); var _require = require('./packageData'), oldPackages = _require.packages, latestPackages = _require.latestPackages; var otherPackages = { 'babel-loader': 'v8.0.0-beta.0' }; module.exports = function upgradeDeps(dependencies, version) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var hasFlow = options.hasFlow; var _arr = Object.keys(dependencies); for (var _i = 0; _i < _arr.length; _i++) { var pkg = _arr[_i]; var depVersion = dependencies[pkg]; 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)) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = newPackageName[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { name = _step.value; dependencies[name] = version; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } else { dependencies[newPackageName] = version; } } } else if (latestPackages.has(pkg) && semver.valid(depVersion) && semver.valid(version) && semver.lt(depVersion, version)) { dependencies[pkg] = version; // TODO: refactor out somewhere else } else if (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'); })) { dependencies['@babel/core'] = version; } // Adds preset-flow if needed, especially since it was split out of // preset-react if (hasFlow && !dependencies['@babel/preset-flow']) { dependencies['@babel/preset-flow'] = version; } return dependencies; };