everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
71 lines (69 loc) • 2.74 kB
JavaScript
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
let node_fs = require("node:fs");
let node_path = require("node:path");
//#region src/cli/framework-version.ts
function stripVersionPrefix(version) {
return version.replace(/^[\^~>=]+/, "");
}
function readRootCatalogVersion(projectDir, packageName) {
const pkgPath = (0, node_path.join)(projectDir, "package.json");
if (!(0, node_fs.existsSync)(pkgPath)) return void 0;
const version = JSON.parse((0, node_fs.readFileSync)(pkgPath, "utf-8")).workspaces?.catalog?.[packageName];
return version ? stripVersionPrefix(version) : void 0;
}
function readNodeModulesVersion(projectDir, packageName) {
const pkgPath = (0, node_path.join)(projectDir, "node_modules", packageName, "package.json");
if (!(0, node_fs.existsSync)(pkgPath)) return void 0;
return JSON.parse((0, node_fs.readFileSync)(pkgPath, "utf-8")).version;
}
function readSpecifier(pkg, packageName) {
const deps = pkg.dependencies ?? {};
const devDeps = pkg.devDependencies ?? {};
const peerDeps = pkg.peerDependencies ?? {};
return deps[packageName] || devDeps[packageName] || peerDeps[packageName];
}
function resolveFrameworkPackage(projectDir, packageName) {
const pkgPath = (0, node_path.join)(projectDir, "package.json");
if (!(0, node_fs.existsSync)(pkgPath)) return {
isLinked: false,
isWorkspaceLike: false
};
const specifier = readSpecifier(JSON.parse((0, node_fs.readFileSync)(pkgPath, "utf-8")), packageName);
if (!specifier) return {
specifier,
installedVersion: readRootCatalogVersion(projectDir, packageName) ?? readNodeModulesVersion(projectDir, packageName),
isLinked: false,
isWorkspaceLike: false
};
if (specifier.startsWith("link:")) return {
specifier,
installedVersion: readNodeModulesVersion(projectDir, packageName),
isLinked: true,
isWorkspaceLike: false
};
if (specifier.startsWith("workspace:") || specifier.startsWith("file:")) return {
specifier,
installedVersion: readNodeModulesVersion(projectDir, packageName),
isLinked: false,
isWorkspaceLike: true
};
if (specifier === "catalog:") return {
specifier,
installedVersion: readRootCatalogVersion(projectDir, packageName) ?? readNodeModulesVersion(projectDir, packageName),
isLinked: false,
isWorkspaceLike: false
};
return {
specifier,
installedVersion: stripVersionPrefix(specifier),
isLinked: false,
isWorkspaceLike: false
};
}
function readInstalledFrameworkVersion(projectDir, packageName) {
return resolveFrameworkPackage(projectDir, packageName).installedVersion;
}
//#endregion
exports.readInstalledFrameworkVersion = readInstalledFrameworkVersion;
exports.resolveFrameworkPackage = resolveFrameworkPackage;
//# sourceMappingURL=framework-version.cjs.map