declare module 'mostachito';
interface HtmlTemplateConfInterface {
viewsPath: string;
viewData: { [k: string]: string; }
missingRefValueReplacement: (ref: string) => string;
}
interface HydrateViewPropsInterface { viewTemplate: string; viewData: ViewData; }
interface HtmlTemplateInterface {
loadViewTemplate(viewData: ViewData, filepath: string): Promise;
hydrateView: HydrateViewCallback;
}
type HydrateViewCallback = (props: HydrateViewPropsInterface) => string;
interface HtmlTemplateConstructor {
new (config: HtmlTemplateConfInterface): HtmlTemplateInterface;
}
interface PostDataAttributes {
slug?: string;
description?: string;
privacy: "private" | "public"
}
interface FmResult {
readonly attributes: T
readonly body: string
readonly bodyHtml: string;
readonly bodyBegin: number;
readonly frontmatter?: string;
}
type FmDataInterface = FmResult
type PreHtmlCallback = (data: FmDataInterface) => FmDataInterface;
type FmFunction = (fileContents: string) => FmResult
interface SdConverter {
makeHtml(markdown: string): string;
}
interface MarkdownToHtmlServiceInterface {
extractFmAttributesAndHtmlBodyFromMd: (postSlug: string, markdownFilePath: string, preHtmlCallback?: PreHtmlCallback) => Promise;
}
interface MarkdownToHtmlConstructorInterface {
new ({fm, converter}: { fm: FmFunction; converter: SdConverter; }): MarkdownToHtmlServiceInterface;
}
interface ViewData {
[k: string]: string | ViewData | ViewData[];
}
interface HydrateViewProps { viewTemplate: string; viewData: ViewData; }
type MostachitoHydrateMethod = (viewTemplate: string, viewData: ViewData) => string;
type LoadViewTemplateResolveParam = { viewTemplate: string; viewData: ViewData; };
type HydrateViewMethod = (param: LoadViewTemplateResolveParam) => string;
interface MostachitoInterface {
hydrate: MostachitoHydrateMethod;
}
interface TemplateHydratorServiceConstructor {
new ({ mostachito }: { mostachito: MostachitoInterface; }): TemplateHydratorServiceInterface;
}
interface TemplateHydratorServiceInterface {
loadViewTemplate: (viewData: ViewData, filePath: string) => Promise;
hydrateView: HydrateViewMethod;
}