narraleaf
Version:
Create your visual novel with Electron and React
23 lines (22 loc) • 853 B
TypeScript
import { z } from "zod";
export declare enum ProjectFileType {
JSONC = "jsons",
CJS = "cjs",
DIR = "dir",
FILE = "file"
}
export type DirStructureDefinition<Contains extends {
[K in string]: string | z.infer<z.ZodType<any, any, any>>;
}> = {
contains: {
[K in keyof Contains]: {
path: string | string[];
type: ProjectFileType;
validator: Contains[K] extends string ? null : z.ZodType<any, any, any>;
};
};
};
export type InferDirStructure<T extends DirStructureDefinition<any>> = T extends DirStructureDefinition<infer Contains> ? {
[K in keyof Contains]: Contains[K] extends string ? string : z.infer<Contains[K]>;
} : never;
export declare function parseDirStructure<T extends DirStructureDefinition<any>>(definition: T, root: string): Promise<InferDirStructure<T>>;