core/producers/check.producer.ts
core/producers/check.producer.ts is a file in Bane's Lab Build Scripts. 42 lines of code and 8 definitions.
import type { AnatomyFile, AnatomyFolder } from "@banes-lab/web/types/anatomy.types.js";
import { DETECTED_BY_RELATION, ENFORCED_BY_RELATION } from "@banes-lab/web/constants/graph.constants";
import { ANATOMY_PREFIX } from "#configuration/constants/graph.constants";
import { ANATOMY_TREE_DECLARATIONS } from "@banes-lab/web/registries/anatomy.tree.registry";
import type { GraphEdge } from "@banes-lab/web/types/graph.types.js";
import { absolutePath } from "@ssot/paths";
import { defineProducer } from "#core/factories/producer.factory";
import { loadDeclaredChecks } from "@govlab/context";
import { qualifiedPath } from "@banes-lab/web/core/converters/folder.converter.ts";
const PATH_MARK = "/";
const filesOf = function filesOf(folder: AnatomyFolder): readonly AnatomyFile[] {
return [...folder.files, ...folder.folders.flatMap(filesOf)];
};
const treePathOf = function treePathOf(check: string): string | null {
for (const declaration of ANATOMY_TREE_DECLARATIONS) {
const prefix = declaration.folder + PATH_MARK;
if (check.startsWith(prefix)) {
return qualifiedPath(declaration.tab, check.slice(prefix.length));
}
}
return null;
};
export default defineProducer({
name: "check",
produce: (context) => {
const files = new Set(context.trees.flatMap((tree) => filesOf(tree.snapshot.tree)).map((file) => file.path));
const edges = (loadDeclaredChecks(absolutePath("govlabHost.checks")) ?? []).flatMap(
(declared): readonly GraphEdge[] => {
const path = treePathOf(declared.check);
if (path === null || !files.has(path)) {
return [];
}
const to = ANATOMY_PREFIX + context.ids.fileId(path);
return [
...declared.enforces.map((from) => ({ from, relation: ENFORCED_BY_RELATION, to })),
...declared.detects.map((from) => ({ from, relation: DETECTED_BY_RELATION, to })),
];
},
);
return { edges, nodes: [] };
},
});