core/loaders/reference.loader.ts
core/loaders/reference.loader.ts is a file in Bane's Lab Build Scripts. 19 lines of code and 6 definitions.
import { existsSync, readFileSync } from "node:fs";
import type { CodeTarget } from "@banes-lab/web/types/code.types.js";
import { isRecord } from "#core/selectors/base.selector";
const CHANNELS = ["spans", "strings", "words"] as const;
const targetsIn = function targetsIn(value: unknown): readonly CodeTarget[] {
return isRecord(value) ? Object.values(value).filter((target): target is CodeTarget => isRecord(target)) : [];
};
export const referenceTargetsOf = function referenceTargetsOf(file: string): readonly CodeTarget[] {
if (!existsSync(file)) {
return [];
}
const parsed: unknown = JSON.parse(readFileSync(file, "utf8"));
if (!isRecord(parsed)) {
return [];
}
const listed = parsed["targets"];
const bound = Array.isArray(listed) ? listed.filter((target): target is CodeTarget => isRecord(target)) : [];
return [...CHANNELS.flatMap((channel) => targetsIn(parsed[channel])), ...bound];
};