UNPKG

upgrade-dependents

Version:
50 lines (49 loc) 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jsonFilePlus = require("json-file-plus"); const pLimit = require("p-limit"); const path = require("path"); const createRange_1 = require("./createRange"); const getDependencyRange_1 = require("./getDependencyRange"); const getDesignationProperty_1 = require("./getDesignationProperty"); const logs = require("./logs"); const limit = pLimit(20); async function upgradePackage(options) { const { workingPackageMeta, dependentPackageInfo, dryRun, force, logger } = options; const { name: dependencyName, version: newVersion } = workingPackageMeta; const { location, meta } = dependentPackageInfo; const oldRange = getDependencyRange_1.getDependencyRange(dependencyName, meta); const newRange = force ? `^${newVersion}` : createRange_1.createRange(oldRange, newVersion); const packageJsonPath = path.join(location, "package.json"); const property = getDesignationProperty_1.getDesignationProperty(dependencyName, meta); if (!property) { throw new Error("Dependency not found."); } const file = await jsonFilePlus(packageJsonPath); file.set({ [property]: { [dependencyName]: newRange } }); if (!dryRun) { await file.save(); } logger.log(logs.packageUpgraded(meta, dependencyName, newRange)); } function upgradePackages(options) { const { workingPackageMeta, packageInfos, dryRun, force, logger } = options; if (dryRun) { logger.log(logs.upgradeDryRun()); } const operations = packageInfos.map(dependentPackageInfo => { return limit(() => upgradePackage({ dependentPackageInfo, dryRun, force, logger, workingPackageMeta })); }); return Promise.all(operations); } exports.upgradePackages = upgradePackages;