@nx/rsbuild
Version:
54 lines (53 loc) • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getInstalledRsbuildMajorVersion = getInstalledRsbuildMajorVersion;
exports.getInstalledRsbuildVersionRuntime = getInstalledRsbuildVersionRuntime;
exports.getRsbuildVersionsForInstalledMajor = getRsbuildVersionsForInstalledMajor;
const internal_1 = require("@nx/devkit/internal");
const semver_1 = require("semver");
const versions_1 = require("./versions");
const RSBUILD_CORE_PACKAGE = '@rsbuild/core';
/**
* Returns the declared @rsbuild/core major version from the workspace's
* package.json when it matches a supported major, or `undefined` otherwise
* (fresh install, dist tag, unknown major). Below-floor enforcement is
* handled at generator entry points via `assertSupportedRsbuildVersion`.
*/
function getInstalledRsbuildMajorVersion(tree) {
const declared = (0, internal_1.getDeclaredPackageVersion)(tree, RSBUILD_CORE_PACKAGE);
if (!declared) {
return undefined;
}
const installedMajor = (0, semver_1.major)(declared);
return installedMajor in versions_1.backwardCompatibleRsbuildVersions
? installedMajor
: undefined;
}
/**
* Returns the installed @rsbuild/core major version resolved at runtime from
* node_modules. For use in executors and runtime code where no Tree is
* available. Returns `null` when @rsbuild/core can't be resolved or the
* installed major isn't supported.
*/
function getInstalledRsbuildVersionRuntime() {
const version = (0, internal_1.getInstalledPackageVersion)(RSBUILD_CORE_PACKAGE);
if (!version) {
return null;
}
const installedMajor = (0, semver_1.major)(version);
return installedMajor in versions_1.backwardCompatibleRsbuildVersions
? installedMajor
: null;
}
/**
* Returns the version-map entry for the installed major, falling back to the
* latest supported map when no installed version is detected (fresh install)
* or the detected major is outside the supported window.
*/
function getRsbuildVersionsForInstalledMajor(tree) {
const installed = getInstalledRsbuildMajorVersion(tree);
if (installed === undefined) {
return versions_1.latestRsbuildVersions;
}
return versions_1.backwardCompatibleRsbuildVersions[installed];
}