types/taxonomy.types.ts

types/taxonomy.types.ts is a file in GovLab Extension Host. 142 lines of code and 22 definitions.

export interface Concern {
    folder: string;
    tag: string;
    layer: string;
    collection?: string;
}

export interface ParsedName {
    subject: string;
    variant: string | null;
    concern: string;
    ext: string;
}

export interface ExemptName {
    exempt: true;
    marker: string;
}

export interface ParseFailure {
    reason: string;
    word: string;
}

export type ParseResult = ExemptName | ParsedName | ParseFailure;

export type ContainerKind = "container" | "special";

export type LetterCase = "lower" | "upper";

export interface Splitter {
    readonly name: string;
    readonly joiner: string | null;
    readonly letters: LetterCase;
}

export interface Dialect {
    readonly splitter: string;
    readonly extensions: readonly string[];
}

export interface Placement {
    root: string;
    container: string;
    kind: ContainerKind;
    firstBelow: string;
    depth: number;
}

export interface PlacementFinding {
    messageId: string;
    data: Record<string, string>;
}

export interface TaxonomyFinding extends PlacementFinding {
    path: string;
}

export interface TaxonomyReport {
    readonly assessed: number;
    readonly findings: readonly TaxonomyFinding[];
}

export interface GeneratedFolderForm {
    readonly marker: string;
    readonly prefix: string;
}

export interface ExcludedTrees {
    readonly trees: readonly string[];
}

export interface TaxonomyView {
    readonly byFolder: ReadonlyMap<string, Concern>;
    readonly byTag: ReadonlyMap<string, Concern>;
    readonly compoundMarkers: readonly string[];
    readonly containers: ReadonlyMap<string, ReadonlySet<string>>;
    readonly declaredContainers: Readonly<Record<string, readonly string[]>>;
    readonly declaredSpecial: Readonly<Record<string, readonly string[]>>;
    readonly dialects: readonly Dialect[];
    readonly generatedFolder: GeneratedFolderForm | null;
    readonly ignoredNames: readonly string[];
    readonly markerFolders: ReadonlyMap<string, string>;
    readonly maxDepth: number;
    readonly special: ReadonlyMap<string, ReadonlySet<string>>;
    readonly splitters: readonly Splitter[];
    readonly subjects: ReadonlySet<string>;
    readonly fixtureMarkers: readonly string[];
    readonly testMarkers: readonly string[];
}

export interface GrammarRoles {
    readonly rolesAtDepth: readonly (readonly string[])[];
    readonly roleOrder: readonly string[];
    readonly terminalRole: string;
}

export interface IgnoreDeclaration {
    readonly foldersFiles: readonly string[];
}

export interface TaxonomySource extends TaxonomyShape {
    readonly ignored: IgnoreDeclaration;
}

export interface TaxonomyShape {
    readonly excluded?: ExcludedTrees;
    readonly boundaryDocuments?: readonly string[];
    readonly concerns: readonly Concern[];
    readonly containers: Readonly<Record<string, readonly string[]>>;
    readonly foreignContainers?: Readonly<Record<string, readonly string[]>>;
    readonly grammar: {
        readonly case: string;
        readonly compoundMarkers: readonly string[];
        readonly dialects?: readonly Dialect[];
        readonly file: readonly string[];
        readonly folder: Readonly<Record<string, readonly string[]>>;
        readonly generatedFolder?: GeneratedFolderForm;
        readonly markerFolders?: Readonly<Record<string, string>>;
        readonly maxDepthFromRoot: number;
        readonly separator: string;
        readonly fixtureMarkers?: readonly string[];
        readonly splitters?: readonly Splitter[];
        readonly testMarkers?: readonly string[];
    };
    readonly specialContainers: Readonly<Record<string, readonly string[]>>;
    readonly subjects: readonly string[];
    readonly testMirrors?: Readonly<Record<string, string>>;
    readonly variants: readonly string[];
}

export interface Vocabulary {
    readonly boundaryDocuments: ReadonlySet<string>;
    readonly byFolder: ReadonlyMap<string, Concern>;
    readonly byTag: ReadonlyMap<string, Concern>;
    readonly case: string;
    readonly compoundMarkers: readonly string[];
    readonly dialects: readonly Dialect[];
    readonly excludedTrees: readonly string[];
    readonly fileShapes: readonly string[];
    readonly generatedFolder: GeneratedFolderForm | null;
    readonly ignoredNames: readonly string[];
    readonly legalSubjects: ReadonlySet<string>;
    readonly markerFolders: ReadonlyMap<string, string>;
    readonly maxDepth: number;
    readonly roles: GrammarRoles;
    readonly separator: string;
    readonly splitters: ReadonlyMap<string, Splitter>;
    readonly subjects: ReadonlySet<string>;
    readonly fixtureMarkers: readonly string[];
    readonly testMarkers: readonly string[];
    readonly variants: ReadonlySet<string>;
}

export interface Jurisdiction {
    readonly containers: ReadonlyMap<string, ReadonlySet<string>>;
    readonly foreign: ReadonlyMap<string, ReadonlySet<string>>;
    readonly host: Vocabulary;
    readonly mirrors: ReadonlyMap<string, string>;
    readonly roots: readonly string[];
    readonly special: ReadonlyMap<string, ReadonlySet<string>>;
    readonly vocabularies: ReadonlyMap<string, Vocabulary>;
}