Files
moltbot/src/infra/package-json.ts
2026-05-06 07:40:10 +01:00

32 lines
1.0 KiB
TypeScript

import path from "node:path";
import { tryReadJson } from "./json-files.js";
type PackageJson = {
name?: unknown;
packageManager?: unknown;
version?: unknown;
};
function normalizeString(value: unknown): string | null {
return typeof value === "string" && value.trim() ? value.trim() : null;
}
export async function readPackageJson(root: string): Promise<PackageJson | null> {
const parsed = await tryReadJson<unknown>(path.join(root, "package.json"));
return parsed && typeof parsed === "object" && !Array.isArray(parsed)
? (parsed as PackageJson)
: null;
}
export async function readPackageVersion(root: string): Promise<string | null> {
return normalizeString((await readPackageJson(root))?.version);
}
export async function readPackageName(root: string): Promise<string | null> {
return normalizeString((await readPackageJson(root))?.name);
}
export async function readPackageManagerSpec(root: string): Promise<string | null> {
return normalizeString((await readPackageJson(root))?.packageManager);
}