uwu-template
Version:
A blazingly fast, feature-rich template engine for Deno and JavaScript with advanced component system, helper functions, template inheritance, and performance that rivals native template literals.
114 lines (93 loc) • 2.29 kB
TypeScript
// TypeScript declarations for UWU-Template
export interface CompilerOptions {
escape: boolean;
}
export interface TemplateData {
[key: string]: unknown;
}
export interface ComponentProps {
[key: string]: unknown;
}
export interface HelperContext {
data: TemplateData;
parent?: TemplateData;
}
export interface HelperFunction {
(...args: unknown[]): string;
}
export interface BlockHelperFunction {
(context: unknown, options: BlockHelperOptions): string;
}
export interface HelperOptions {
hash?: Record<string, unknown>;
data?: unknown;
}
export interface BlockHelperOptions extends HelperOptions {
fn: (context?: unknown) => string;
inverse: (context?: unknown) => string;
blockParams?: string[];
}
export type ComponentFunction = (
props: ComponentProps,
children?: string,
context?: HelperContext,
) => string;
export type TemplateFunction = (data: TemplateData) => string;
// Error classes
export declare class TemplateError extends Error {
line?: number;
column?: number;
templateName?: string;
context?: string;
constructor(
message: string,
line?: number,
column?: number,
templateName?: string,
context?: string,
);
}
export declare class TemplateSyntaxError extends TemplateError {
constructor(
message: string,
line?: number,
column?: number,
templateName?: string,
context?: string,
);
}
export declare class TemplateRuntimeError extends TemplateError {
constructor(
message: string,
line?: number,
column?: number,
templateName?: string,
context?: string,
);
}
// Main functions
export declare function compile(
template: string,
options?: CompilerOptions,
templateName?: string,
): TemplateFunction;
export declare function registerLayout(name: string, template: string): void;
export declare function registerHelper(
name: string,
fn: HelperFunction | BlockHelperFunction,
): void;
export declare function registerBlockHelper(
name: string,
fn: BlockHelperFunction,
): void;
export declare function registerComponent(name: string, template: string): void;
export declare function renderTemplate(
key: string,
data: unknown,
template: string,
): string;
export declare function registerBaseTemplate(
name: string,
template: string,
): void;
export declare function clearTemplateCache(): void;