renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
54 lines (53 loc) • 2.03 kB
JavaScript
import { newlineRegex, regEx } from "../../../../util/regex.js";
import { logger } from "../../../../logger/index.js";
import { readLocalFile } from "../../../../util/fs/index.js";
import upath from "upath";
import semver from "semver";
//#region lib/modules/manager/npm/post-update/node-version.ts
async function getNodeFile(filename) {
try {
const constraint = (await readLocalFile(filename, "utf8")).split(newlineRegex)[0].replace(regEx(/^v/), "");
if (semver.validRange(constraint)) {
logger.debug(`Using node constraint "${constraint}" from ${filename}`);
return constraint;
}
} catch {}
return null;
}
async function getPackageJsonConstraint(pkg) {
const pkgJson = await pkg.getValue();
if (pkgJson.volta?.node) {
const constraint = pkgJson.volta.node;
// v8 ignore else -- TODO: add test #40625
if (semver.validRange(constraint)) {
logger.debug(`Using node constraint "${constraint}" from package.json volta`);
return constraint;
}
}
if (pkgJson.engines?.node) {
const constraint = pkgJson.engines.node;
// v8 ignore else -- TODO: add test #40625
if (semver.validRange(constraint)) {
logger.debug(`Using node constraint "${constraint}" from package.json engines`);
return constraint;
}
}
return null;
}
async function getNodeConstraint(config, upgrades, lockFileDir, pkg) {
const constraint = getNodeUpdate(upgrades) ?? config.constraints?.node ?? await getNodeFile(upath.join(lockFileDir, ".nvmrc")) ?? await getNodeFile(upath.join(lockFileDir, ".node-version")) ?? await getPackageJsonConstraint(pkg);
if (!constraint) logger.debug("No node constraint found - using latest");
return constraint;
}
function getNodeUpdate(upgrades) {
return upgrades.find((u) => u.depName === "node")?.newValue;
}
async function getNodeToolConstraint(config, upgrades, lockFileDir, pkg) {
return {
toolName: "node",
constraint: await getNodeConstraint(config, upgrades, lockFileDir, pkg)
};
}
//#endregion
export { getNodeToolConstraint };
//# sourceMappingURL=node-version.js.map