everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
38 lines (36 loc) • 1.76 kB
JavaScript
const require_theme = require('../utils/theme.cjs');
const require_status = require('../services/status.cjs');
//#region src/cli/status.ts
/** Outdated-framework warning, printed after the command's status probe. */
async function warnIfOutdated(client, command) {
if (![
"dev",
"build",
"start"
].includes(command)) return;
try {
const status = await client.status();
if (status.status === "error" || !status.packages) return;
const frameworkPackages = ["everything-dev", "every-plugin"];
const linked = status.packages.filter((p) => p.isLinked);
const outdated = status.packages.filter((p) => !p.isLinked && p.installed && p.latest && require_status.compareSemver(p.installed, p.latest) < 0 && frameworkPackages.includes(p.name));
if (linked.length > 0) for (const pkg of linked) console.log(require_theme.colors.dim(` ${pkg.name} is linked locally (v${pkg.installed})`));
if (outdated.length === 0) return;
const warn = (line) => {
if (command === "dev" || command === "start") process.stderr.write(`${line}\n`);
else console.log(line);
};
warn("");
warn(require_theme.colors.yellow(` ! Outdated packages detected:`));
for (const pkg of outdated) warn(require_theme.colors.dim(` ${pkg.name} ${pkg.installed} → ${pkg.latest}`));
warn(require_theme.colors.dim(` Run ${require_theme.colors.cyan("bos upgrade")} to update packages and sync template files.`));
warn("");
} catch {}
}
//#endregion
exports.compareSemver = require_status.compareSemver;
exports.getStatus = require_status.getStatus;
exports.pickDistTagVersion = require_status.pickDistTagVersion;
exports.resolveUpdateDistTag = require_status.resolveUpdateDistTag;
exports.warnIfOutdated = warnIfOutdated;
//# sourceMappingURL=status.cjs.map