import type { LinkSet, PageSection } from "#types/writing.types"; import { absolutePath } from "@ssot/paths"; import { readJsonOrNull } from "#core/persistence/report.persistence"; const isLinkSet = function isLinkSet(value: unknown): value is LinkSet { return ( typeof value === "object" && value !== null && Object.values(value).every( (links: unknown) => Array.isArray(links) && links.every((link: unknown) => typeof link === "string"), ) ); }; export const linkTarget = function linkTarget(): string { return absolutePath("govlabHost.reports.content.linkSet"); }; export const readLinkSet = function readLinkSet(): LinkSet | null { const parsed = readJsonOrNull(linkTarget()); return isLinkSet(parsed) ? parsed : null; }; export const linkSetOf = function linkSetOf(sections: readonly PageSection[]): LinkSet { return Object.fromEntries(sections.map((section) => [section.key, section.links])); };