supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
95 lines • 2.79 kB
TypeScript
/**
* Template Engine
* Handles template processing and code generation
*/
import * as handlebars from 'handlebars';
export interface TemplateContext {
[key: string]: any;
}
export interface TemplateOptions {
helpers?: Record<string, handlebars.HelperDelegate>;
partials?: Record<string, string>;
strictMode?: boolean;
noEscape?: boolean;
}
export interface TemplateResult {
success: boolean;
output?: string;
error?: string;
warnings?: string[];
}
export interface RenderResult extends TemplateResult {
}
export interface TemplateVariable {
name: string;
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
required?: boolean;
defaultValue?: any;
description?: string;
validation?: {
pattern?: string;
min?: number;
max?: number;
enum?: any[];
};
}
export interface TemplateEngineOptions extends TemplateOptions {
}
/**
* Basic template interface for external use
*/
export interface Template {
id: string;
name: string;
description: string;
category: string;
content?: string;
variables?: Record<string, any>;
metadata?: Record<string, any>;
}
export declare class TemplateEngine {
private handlebars;
private options;
constructor(options?: TemplateOptions);
/**
* Process a template string with given context
*/
processTemplate(templateString: string, context: TemplateContext): TemplateResult;
/**
* Process template from file
*/
processTemplateFile(filePath: string, context: TemplateContext): Promise<TemplateResult>;
/**
* Register custom helpers
*/
registerHelpers(helpers: Record<string, handlebars.HelperDelegate>): void;
/**
* Register partials
*/
registerPartials(partials: Record<string, string>): void;
/**
* Register built-in helpers
*/
private registerBuiltinHelpers;
/**
* Create a new template engine instance with additional options
*/
extend(additionalOptions: TemplateOptions): TemplateEngine;
/**
* Validate template syntax without processing
*/
validateTemplate(templateString: string): TemplateResult;
/**
* Get available helpers
*/
getHelpers(): string[];
/**
* Get available partials
*/
getPartials(): string[];
}
export declare function createTemplateEngine(options?: TemplateOptions): TemplateEngine;
export declare function processTemplate(templateString: string, context: TemplateContext, options?: TemplateOptions): TemplateResult;
export declare function processTemplateFile(filePath: string, context: TemplateContext, options?: TemplateOptions): Promise<TemplateResult>;
export default TemplateEngine;
//# sourceMappingURL=template-engine.d.ts.map