core/resolvers/package.resolver.ts
core/resolvers/package.resolver.ts is a file in GovLab Patterns. 21 lines of code and 8 definitions.
import { basename, join, relative, sep } from "node:path";
import { existsSync, readFileSync } from "node:fs";
import { isRecord } from "#core/predicates/record.predicate";
const MEMBER_MANIFEST = "_manifest.json";
const SELF_GOVERNED_KEY = "selfGoverned";
const PATH_SEP = "/";
export const isSelfGoverned = function isSelfGoverned(moduleDir: string): boolean {
const manifest = join(moduleDir, MEMBER_MANIFEST);
if (!existsSync(manifest)) {
return false;
}
const parsed: unknown = JSON.parse(readFileSync(manifest, "utf8"));
return isRecord(parsed) && SELF_GOVERNED_KEY in parsed;
};
export const titleFor = function titleFor(root: string, moduleDir: string): string {
if (isSelfGoverned(moduleDir)) {
return basename(moduleDir);
}
const rel = relative(root, moduleDir);
return rel.length > 0 ? rel.split(sep).join(PATH_SEP) : basename(moduleDir);
};