types/graph.types.ts
types/graph.types.ts is a file in Bane's Lab Build Scripts. 147 lines of code and 23 definitions.
import type { GraphChunk, GraphEdge, GraphNode, RelationPair } from "@banes-lab/web/types/graph.types.js";
import type { Linker, Population } from "#types/catalog.types";
import type { AnatomyFolder } from "@banes-lab/web/types/anatomy.types.js";
import type { BuiltOntology } from "#types/ontology.types";
import type { Discovery } from "#types/site.types";
import type { EdgeRef } from "@banes-lab/web/types/link.types.js";
import type { EvidenceNode } from "@banes-lab/web/types/evidence.types.js";
import type { SearchAsset } from "@banes-lab/web/types/search.types.js";
import type { SectionPlan } from "#types/section.types";
import type { SourceTree } from "#types/source.types";
import type { Term } from "@govlab/context";
import type { WebModules } from "#types/loader.types";
export interface SiteScope {
readonly linker: Linker;
readonly plans: readonly SectionPlan[];
readonly web: WebModules;
}
export interface ChunkRules {
readonly contains: string;
readonly keptRelations: ReadonlySet<string>;
readonly keyOf: (ref: string) => string;
readonly pairs: readonly RelationPair[];
readonly rollsUp: ReadonlySet<string>;
readonly skipsSource: (ref: string) => boolean;
}
export interface Graph {
readonly edges: readonly GraphEdge[];
readonly nodes: readonly GraphNode[];
}
export interface Undeclared {
readonly face: string;
readonly kind: string;
readonly relation: string;
}
export interface SourceIds {
readonly fileId: (path: string) => string;
readonly folderHref: (path: string) => string;
readonly folderId: (path: string) => string;
readonly localPath: (path: string) => string;
readonly nodeHref: (file: string, line: number | null) => string;
}
export interface Vocabulary {
readonly calls: string;
readonly contains: string;
readonly pairs: readonly RelationPair[];
}
export interface FieldRule {
readonly flip: boolean;
readonly relation: string | null;
}
export interface FieldUse extends Undeclared {
readonly flip: boolean;
readonly stored: string | null;
}
export interface UnresolvedTarget {
readonly from: string;
readonly label: string;
readonly relation: string;
}
export interface OntologyGraph extends Graph {
readonly ambiguous: readonly Undeclared[];
readonly fields: readonly FieldUse[];
readonly populations: readonly Population[];
readonly undeclared: readonly Undeclared[];
readonly unresolved: readonly UnresolvedTarget[];
}
export interface Merged extends Graph {
readonly duplicates: readonly (readonly [GraphNode, GraphNode])[];
}
export interface EdgeIndex {
readonly incoming: (ref: string, relation: string) => readonly EdgeRef[];
readonly outgoing: (ref: string, relation: string) => readonly EdgeRef[];
}
export interface TooltipGap {
readonly from: string;
readonly relation: string;
readonly to: string;
}
export interface GraphReport {
readonly ambiguous: readonly Undeclared[];
readonly dangling: readonly GraphEdge[];
readonly duplicates: readonly { readonly dropped: GraphNode; readonly kept: GraphNode }[];
readonly fields: readonly FieldUse[];
readonly graph: Graph;
readonly populations: readonly Population[];
readonly tooltipGaps: readonly TooltipGap[];
readonly uncovered: readonly string[];
readonly undeclared: readonly Undeclared[];
readonly unresolved: readonly UnresolvedTarget[];
}
export interface GraphLines {
readonly chunks: number;
readonly records: number;
readonly report: GraphReport;
readonly routes: number;
readonly search: SearchAsset;
readonly stops: number;
}
export interface GraphFiles {
readonly graph: string;
readonly learning: string;
readonly report: string;
readonly search: string;
readonly tabs: string;
}
export interface RouteEdges {
readonly edges: readonly GraphEdge[];
readonly unresolved: readonly UnresolvedTarget[];
}
export interface GraphContext {
readonly built: BuiltOntology;
readonly codes: SiteCodes;
readonly discovery: Discovery;
readonly evidenceSubjects: readonly string[];
readonly evidenceTarget: (node: EvidenceNode) => string | null;
readonly ids: SourceIds;
readonly numbers: ReadonlyMap<string, string>;
readonly ontology: OntologyGraph;
readonly route: RouteEdges;
readonly scope: SiteScope;
readonly trees: readonly SourceTree[];
readonly vocabulary: Vocabulary;
}
export interface ConcernSource {
readonly built: { readonly context: { readonly lex: { readonly all: () => readonly Term[] } } };
readonly ids: Pick<SourceIds, "fileId">;
readonly ontology: { readonly nodes: readonly Pick<GraphNode, "ref">[] };
readonly trees: readonly { readonly snapshot: { readonly tree: AnatomyFolder } }[];
}
export interface ConcernScope {
readonly fileRef: (path: string) => string;
readonly records: ReadonlySet<string>;
readonly roots: readonly AnatomyFolder[];
readonly terms: readonly Term[];
}
export interface GraphProducer {
readonly name: string;
readonly produce: (context: GraphContext) => Graph;
}
export interface GraphBuild {
readonly chunks: ReadonlyMap<string, GraphChunk>;
readonly report: GraphReport;
}
export interface SiteCodes {
readonly pages: ReadonlyMap<string, string>;
readonly tabs: ReadonlyMap<string, string>;
}