core/caches/report.cache.ts
core/caches/report.cache.ts is a file in GovLab Patterns. 20 lines of code and 6 definitions.
import { cacheFile, createFingerprintIndex, fingerprint, fingerprintOf } from "@govlab/content-fingerprint";
import { CACHE_NAME } from "#configuration/constants/report.constants";
import { existsSync } from "node:fs";
import { findingsPathOf } from "#core/loaders/finding.loader";
const PART_JOIN = ";";
export const openReportCache = function openReportCache(force: boolean): ReturnType<typeof createFingerprintIndex> {
return createFingerprintIndex({ file: cacheFile(CACHE_NAME), force });
};
export const moduleFingerprint = function moduleFingerprint(
files: readonly string[],
fanIn: readonly [string, number][],
cycles: readonly unknown[],
): string {
const fan = fanIn.map(([key, count]) => `${key}=${count}`).sort((a, b) => a.localeCompare(b));
const cyc = cycles.map((finding) => JSON.stringify(finding)).sort((a, b) => a.localeCompare(b));
return fingerprintOf([fingerprint([...files]), fan.join(PART_JOIN), cyc.join(PART_JOIN)]);
};
export const hexArtifactsExist = function hexArtifactsExist(moduleDir: string): boolean {
return existsSync(findingsPathOf(moduleDir));
};