import { ALGO_FACE, ARCH_FACE, FACE_SEPARATOR, LEX_FACE } from "@govlab/constants"; import { ARCHITECTURE_PAGE, METHODOLOGY_PAGE } from "#core/ids/page.ids"; import { BUILD_TAB, VERIFY_TAB } from "#core/ids/methodology.ids"; import { DEFINITION_SECTION_ID, DIRECTION_SECTION_ID, MODEL_TAB, SPINE_SECTION_ID } from "#core/ids/architecture.ids"; import { DERIVED_SECTION_ID } from "#core/ids/derivation.ids"; import { DOCUMENTATION_SECTION_ID } from "#core/ids/coverage.ids"; import type { Evidence } from "#types/evidence.types"; import { TAXONOMY_SECTION_ID } from "#core/ids/taxonomy.ids"; const record = function record(face: string, id: string): Evidence["subject"] { return { kind: "record", ref: face + FACE_SEPARATOR + id }; }; const chapter = function chapter(page: string, tab: string, section: string): Evidence["subject"] { return { kind: "chapter", page, section, tab }; }; const definition = function definition(name: string, file: string | null = null): Evidence["nodes"][number] { return { file, kind: "definition", name }; }; const file = function file(name: string): Evidence["nodes"][number] { return { kind: "file", name }; }; const folder = function folder(...words: readonly string[]): Evidence["nodes"][number] { return { kind: "folder", words }; }; export const EVIDENCE: readonly Evidence[] = [ { nodes: [ definition("registerPage"), definition("createRegistry"), folder("presentation", "records"), file("records.barrel.ts"), ], subject: record(ARCH_FACE, "registry-pattern"), }, { nodes: [folder("presentation", "records"), file("records.barrel.ts"), definition("registerPage")], subject: record(LEX_FACE, "self-registration"), }, { nodes: [folder("configuration", "strings"), folder("core", "ids"), definition("tabLink")], subject: record(ARCH_FACE, "single-source-of-truth"), }, { nodes: [ definition("ANATOMY"), definition("ONTOLOGY"), definition("VOCABULARY"), folder("core", "assets"), definition("anatomyChapter"), ], subject: record(ARCH_FACE, "self-describing-architecture"), }, { nodes: [definition("emitEvent"), definition("subscribeEvent"), folder("core", "buses")], subject: record(ARCH_FACE, "event-bus"), }, { nodes: [ definition("linkTabs"), definition("chapterVocabulary"), definition("joinGlossary"), definition("matchPhrases"), definition("linkText", "link.converter.ts"), ], subject: chapter(METHODOLOGY_PAGE, VERIFY_TAB, DERIVED_SECTION_ID), }, { nodes: [folder("configuration", "constants"), folder("configuration", "icons")], subject: record(ARCH_FACE, "declarative-configuration"), }, { nodes: [definition("importsDiagram"), folder("core"), folder("domain")], subject: record(ARCH_FACE, "dependency-inversion"), }, { nodes: [folder("types"), definition("renderBlock")], subject: chapter(ARCHITECTURE_PAGE, MODEL_TAB, DEFINITION_SECTION_ID), }, { nodes: [definition("treeTab"), definition("layersText")], subject: chapter(ARCHITECTURE_PAGE, MODEL_TAB, SPINE_SECTION_ID), }, { nodes: [definition("treeTab"), definition("layersText")], subject: chapter(METHODOLOGY_PAGE, BUILD_TAB, TAXONOMY_SECTION_ID), }, { nodes: [definition("importsDiagram"), folder("core"), folder("domain")], subject: chapter(ARCHITECTURE_PAGE, MODEL_TAB, DIRECTION_SECTION_ID), }, { nodes: [definition("markDocumentReferences"), definition("documentBlocks")], subject: chapter(METHODOLOGY_PAGE, VERIFY_TAB, DOCUMENTATION_SECTION_ID), }, { nodes: [definition("mountReference"), definition("anatomyReference"), definition("loadReferences")], subject: record(ALGO_FACE, "architecture-knowledge-graph"), }, ];