@mesh-tech/mesh-cli
Version:
CLI for Mesh platform development utilities
34 lines (33 loc) • 1.02 kB
JavaScript
import { execFileSync } from "child_process";
export const SCAFFOLD_PACKAGE_LINES = {
"@mesh-tech/app-kit": "^1.45.0",
"@mesh-tech/esm-bundle": "^0.1.1",
};
export const SCAFFOLD_TOOLCHAIN = {
"@types/node": "^24.2.1",
tsx: "^4.20.4",
typescript: "^5.9.2",
};
export function isPrerelease(range) {
return /[-+]/.test(range.replace(/^\^/, ""));
}
export function toCaretRange(version) {
const trimmed = version.trim();
return /^\d+\.\d+\.\d+(?:[-+].*)?$/.test(trimmed) ? `^${trimmed}` : null;
}
export function resolvePublishedRange(pkg, cwd) {
try {
const out = execFileSync("npm", ["view", pkg, "version"], {
cwd,
encoding: "utf-8",
timeout: 15_000,
stdio: ["ignore", "pipe", "ignore"],
});
const range = toCaretRange(out);
if (range && !isPrerelease(range))
return { range, resolved: true };
}
catch {
}
return { range: SCAFFOLD_PACKAGE_LINES[pkg], resolved: false };
}