core/persistence/route.persistence.ts
core/persistence/route.persistence.ts is a file in Bane's Lab Build Scripts. 21 lines of code and 4 definitions.
import type { RouteLedger, StampedRoutes } from "#types/route.types";
import { existsSync, readFileSync } from "node:fs";
import { parseLedger, stampRoutes } from "#core/converters/route.converter";
import type { Discovery } from "#types/site.types";
import { ledgerFile } from "#core/resolvers/route.resolver";
import { writeCanonicalJson } from "@govlab/canonical-write";
export const readLedger = function readLedger(file: string): RouteLedger {
return existsSync(file) ? parseLedger(readFileSync(file, "utf8")) : {};
};
export const persistLedger = async function persistLedger(file: string, ledger: RouteLedger): Promise<void> {
await writeCanonicalJson(file, ledger);
};
export const stampLedger = async function stampLedger(
discovery: Discovery,
moment: Date,
file = ledgerFile(),
): Promise<StampedRoutes> {
const stamped = stampRoutes(readLedger(file), discovery, moment);
await persistLedger(file, stamped.ledger);
return stamped;
};