core/loaders/link.loader.ts
core/loaders/link.loader.ts is a file in Bane's Lab Content. 22 lines of code and 5 definitions.
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]));
};