core/persistence/report.persistence.ts
core/persistence/report.persistence.ts is a file in Bane's Lab Content. 28 lines of code and 5 definitions.
import { existsSync, mkdirSync, readFileSync } from "node:fs";
import { writeCanonicalJson, writeCanonicalText, writeGeneratedMarkdown } from "@govlab/canonical-write";
import { UTF8 } from "#configuration/constants/source.constants";
import { dirname } from "node:path";
const ensureFolder = function ensureFolder(target: string): void {
mkdirSync(dirname(target), { recursive: true });
};
export const persistJson = async function persistJson(target: string, data: unknown): Promise<void> {
ensureFolder(target);
await writeCanonicalJson(target, data);
};
export const persistText = async function persistText(target: string, text: string): Promise<void> {
ensureFolder(target);
await writeCanonicalText(target, text);
};
export const persistGeneratedMarkdown = async function persistGeneratedMarkdown(
target: string,
text: string,
): Promise<void> {
ensureFolder(target);
await writeGeneratedMarkdown(target, text);
};
export const readJsonOrNull = function readJsonOrNull(target: string): unknown {
if (!existsSync(target)) {
return null;
}
return JSON.parse(readFileSync(target, UTF8));
};