types/system.types.ts

types/system.types.ts is a file in GovLab Docs. 65 lines of code and 12 definitions.

export type EntityRelationKind = "aggregation" | "composition" | "dependency" | "realization";

export interface SystemComponent {
    id: string;
    label: string;
    kind?: string;
    boundary?: string;
}

export interface TrustBoundary {
    id: string;
    label: string;
    components: string[];
}

export interface EntityField {
    name: string;
}

export interface Entity {
    id: string;
    label: string;
    fields: EntityField[];
}

export interface EntityRelation {
    from: string;
    to: string;
    kind: EntityRelationKind;
    label?: string | undefined;
}

export interface DeploymentService {
    id: string;
    label: string;
    kind?: string;
    dependsOn?: string[];
}

export interface DispatchEdge {
    table: string;
    key: string;
    target: string;
}

export interface MessageFlow {
    from: string;
    to: string;
    name: string;
    direction?: string;
}

export interface SecurityPoint {
    id: string;
    label: string;
    decision: string;
    enforcedBy?: string;
}

export interface SystemModel {
    name: string;
    components?: SystemComponent[];
    trustBoundaries?: TrustBoundary[];
    entities?: Entity[];
    entityRelations?: EntityRelation[];
    deployment?: DeploymentService[];
    dispatch?: DispatchEdge[];
    messages?: MessageFlow[];
    security?: SecurityPoint[];
    runtimeDeferred?: readonly string[];
}

export interface SystemSection {
    heading: string;
    render: (model: SystemModel) => string | null;
}