UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

69 lines (67 loc) 2.5 kB
import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; //#region src/cli/framework-version.ts function stripVersionPrefix(version) { return version.replace(/^[\^~>=]+/, ""); } function readRootCatalogVersion(projectDir, packageName) { const pkgPath = join(projectDir, "package.json"); if (!existsSync(pkgPath)) return void 0; const version = JSON.parse(readFileSync(pkgPath, "utf-8")).workspaces?.catalog?.[packageName]; return version ? stripVersionPrefix(version) : void 0; } function readNodeModulesVersion(projectDir, packageName) { const pkgPath = join(projectDir, "node_modules", packageName, "package.json"); if (!existsSync(pkgPath)) return void 0; return JSON.parse(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 = join(projectDir, "package.json"); if (!existsSync(pkgPath)) return { isLinked: false, isWorkspaceLike: false }; const specifier = readSpecifier(JSON.parse(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 export { readInstalledFrameworkVersion, resolveFrameworkPackage }; //# sourceMappingURL=framework-version.mjs.map