types/site.types.ts

types/site.types.ts is a file in Bane's Lab Build Scripts. 82 lines of code and 17 definitions.

import type { BuiltOntology } from "#types/ontology.types";
import type { DiagramWalk } from "#types/diagram.types";

export interface DiscoveredRoute {
    readonly description: string;
    readonly label: string;
    readonly markdown: string;
    readonly page: string;
    readonly path: string;
    readonly tab: string | null;
    readonly title: string;
}

export interface DiscoveredPage extends DiscoveredRoute {
    readonly content: unknown;
    readonly id: string;
}

export type CrawlDirective = "Allow" | "Disallow";

export interface CrawlRule {
    readonly directive: CrawlDirective;
    readonly path: string;
}

export interface SitemapPart {
    readonly body: string;
    readonly route: string;
}

export interface SignedText {
    readonly publicKey: string;
    readonly signed: string;
}

export interface Discovery {
    readonly author: string;
    readonly consent: string;
    readonly name: string;
    readonly pages: readonly DiscoveredPage[];
    readonly routes: readonly DiscoveredRoute[];
    readonly site: string;
    readonly summary: string;
}

export interface FullTextPart {
    readonly file: string;
    readonly label: string;
    readonly routes: readonly DiscoveredRoute[];
}

export type Inline = (markup: string) => string;

export type SiteMode = "build" | "serve";

export interface SiteState {
    readonly diagrams: DiagramWalk;
    readonly mode: SiteMode;
    readonly ontology: BuiltOntology | null;
    readonly outDir: string;
    readonly root: string;
}

export type SitePhase = "close" | "start";

export interface SiteOutcome {
    readonly gives: Partial<SiteState>;
    readonly line: string;
}

export interface CacheDecision {
    readonly key: string | null;
    readonly skip: boolean;
}

export interface StepCache {
    readonly key: (state: SiteState) => string;
    readonly outputs: readonly string[];
}

export interface SiteStep {
    readonly cache: StepCache | null;
    readonly gives: readonly string[];
    readonly modes: readonly SiteMode[];
    readonly name: string;
    readonly needs: readonly string[];
    readonly phase: SitePhase;
    readonly run: (state: SiteState) => Promise<SiteOutcome>;
}

export interface StepSpec {
    readonly cache: StepCache | null;
    readonly gives?: readonly string[];
    readonly modes?: readonly SiteMode[];
    readonly name: string;
    readonly needs?: readonly string[];
    readonly phase: SitePhase;
    readonly run: (state: SiteState) => Promise<SiteOutcome>;
}