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;
};