import type { ReadmeInputs } from "#types/readme.types"; export interface Chapter { readonly body: string; readonly file: string; readonly label: string; } export interface ChapterSource { readonly first: boolean; readonly label: string; readonly markdown: string; readonly tab: string; } export type LinkResolver = (page: string, tab: string | null) => string | null; export interface SiteOnlyTab { readonly page: string; readonly tab: string; } export interface Attribution { readonly author: string; readonly copyright: string; readonly coveredBy: string; readonly licenseName: string; readonly licenseUrl: string; readonly work: string; } export type ChapterShape = "repository" | "wiki"; export interface WikiPage { readonly group: string; readonly hosted: boolean; readonly href: string; readonly page: string; readonly source: ChapterSource; } export interface PageSources { readonly label: string; readonly page: string; readonly sources: readonly ChapterSource[]; } export interface ShapeInput { readonly pages: readonly PageSources[]; readonly readme: ReadmeInputs | null; } export type ShapeRenderer = (input: ShapeInput, attribution: Attribution) => Chapter[]; export interface SurfaceRendered { readonly chapters: readonly Chapter[]; readonly ok: true; readonly out: string; readonly removed: readonly string[]; } export interface SurfaceRefused { readonly ok: false; readonly reason: string; } export type SurfaceResult = SurfaceRefused | SurfaceRendered;