@mdfriday/foundry
Version:
The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.
39 lines (38 loc) • 1.79 kB
TypeScript
import { Template } from '@mdfriday/text-template';
import { TemplateNamespace, TemplateState } from '../type';
declare abstract class BaseNamespace<T extends TemplateState> {
protected templates: Map<string, T>;
protected readonly mutex: Set<string>;
addTemplate(name: string, state: T): void;
findTemplate(name: string): T | null;
getTemplates(): Map<string, T>;
hasTemplate(name: string): boolean;
getTemplateNames(): string[];
removeTemplate(name: string): boolean;
clear(): void;
size(): number;
getTemplatesByPattern(pattern: RegExp): T[];
protected withLock<R>(fn: () => R): R;
protected withReadLock<R>(fn: () => R): R;
abstract lookup(name: string): Template | null;
}
export declare class RegularTemplateNamespace extends BaseNamespace<TemplateState> implements TemplateNamespace {
lookup(name: string): Template | null;
findTemplateWithDependencies(name: string): TemplateState | null;
getTemplatesNeedingBase(): TemplateState[];
}
export declare class PartialTemplateNamespace extends BaseNamespace<TemplateState> {
lookup(name: string): Template | null;
addPartialTemplate(name: string, state: TemplateState): void;
}
export declare class ShortcodeTemplateNamespace extends BaseNamespace<TemplateState> {
lookup(name: string): Template | null;
addShortcodeTemplate(name: string, state: TemplateState): void;
getShortcode(name: string): Template | null;
hasShortcode(name: string): boolean;
getShortcodeNames(): string[];
}
export declare function newRegularTemplateNamespace(): RegularTemplateNamespace;
export declare function newPartialTemplateNamespace(): PartialTemplateNamespace;
export declare function newShortcodeTemplateNamespace(): ShortcodeTemplateNamespace;
export {};