everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
96 lines (94 loc) • 2.99 kB
JavaScript
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
const require_fastkv = require('../fastkv.cjs');
const require_snapshot = require('./snapshot.cjs');
const require_framework_version = require('./framework-version.cjs');
let node_fs = require("node:fs");
let node_path = require("node:path");
//#region src/cli/status.ts
const FRAMEWORK_PACKAGES = ["everything-dev", "every-plugin"];
const CATALOG_TOOL_PACKAGES = [
"@rspack/core",
"@rspack/cli",
"@rsbuild/core",
"@rsbuild/plugin-react",
"@module-federation/enhanced",
"@module-federation/node",
"@module-federation/rsbuild-plugin",
"@module-federation/runtime-core",
"@module-federation/sdk",
"@module-federation/dts-plugin"
];
async function fetchLatestNpmVersion(packageName) {
try {
const response = await fetch(`https://registry.npmjs.org/${packageName}/latest`, {
headers: { Accept: "application/json" },
signal: AbortSignal.timeout(1e4)
});
if (!response.ok) return null;
return (await response.json()).version;
} catch {
return null;
}
}
function readInstalledVersion(projectDir, packageName) {
return require_framework_version.readInstalledFrameworkVersion(projectDir, packageName);
}
function checkEnvFile(projectDir) {
if ((0, node_fs.existsSync)((0, node_path.join)(projectDir, ".env"))) return "found";
if ((0, node_fs.existsSync)((0, node_path.join)(projectDir, ".env.example"))) return "example-only";
return "missing";
}
async function checkParentReachable(extendsRef) {
if (!extendsRef?.startsWith("bos://")) return void 0;
try {
return await require_fastkv.fetchBosConfigFromFastKv(extendsRef) !== null;
} catch {
return false;
}
}
async function getStatus(projectDir) {
const configPath = (0, node_path.join)(projectDir, "bos.config.json");
if (!(0, node_fs.existsSync)(configPath)) return {
status: "error",
error: "No bos.config.json found in current directory",
packages: [],
envFile: "missing"
};
const config = JSON.parse((0, node_fs.readFileSync)(configPath, "utf-8"));
const packages = [];
for (const name of FRAMEWORK_PACKAGES) {
const installed = readInstalledVersion(projectDir, name);
const latest = await fetchLatestNpmVersion(name);
packages.push({
name,
installed,
latest: latest ?? void 0
});
}
for (const name of CATALOG_TOOL_PACKAGES) {
const installed = readInstalledVersion(projectDir, name);
if (!installed) continue;
const latest = await fetchLatestNpmVersion(name);
packages.push({
name,
installed,
latest: latest ?? void 0
});
}
const snapshot = await require_snapshot.readSnapshot(projectDir);
const extendsRef = config.extends;
const parentReachable = await checkParentReachable(extendsRef);
return {
status: "ok",
extends: extendsRef,
account: config.account,
domain: config.domain,
packages,
lastSync: snapshot?.timestamp,
envFile: checkEnvFile(projectDir),
parentReachable
};
}
//#endregion
exports.getStatus = getStatus;
//# sourceMappingURL=status.cjs.map