Template processing and file generation using Vento.
Handles template compilation and rendering with enhanced data preparation. Supports built-in templates (TypeScript, JSON, YAML) and custom templates.
TemplateProcessor(config: NagareConfig)
Initialize template processor with Vento environment.
config: NagareConfig
Nagare configuration
logger: Logger
Logger instance
vento: ReturnType<vento>
Vento template environment instance
generateAdditionalExports(exports: AdditionalExport[],format: TemplateFormat,): string
Generate code for additional exports
Converts AdditionalExport configurations into actual code based on the template format (TypeScript, JavaScript, JSON, etc.).
generateVersionFile(data: TemplateData): Promise<string>
Generate version file content using built-in templates
Uses the configured template format to generate version file content. Supports extending templates with additional exports and custom content.
prepareTemplateData(data: TemplateData): Record<string, unknown>
Prepare template data with additional computed values
Enhances the base template data with:
- Parsed version components (major, minor, patch, prerelease)
- Merged metadata from config and data
- Complete project information
- Computed helper values (currentYear, formatted dates, etc.)
processTemplate(template: string,data: TemplateData,): Promise<string>
Process a template string with data using Vento
Compiles and renders a template with enhanced data preparation. Throws descriptive errors for template compilation or rendering failures.
setupSecurityContext(): void
Setup security context for template execution
Creates a restricted execution environment that prevents:
- Access to file system operations
- Network requests
- Process execution
- Access to sensitive globals
setupVentoFilters(): void
Setup custom Vento filters for release management
Adds specialized filters for common template operations:
- jsonStringify: Convert objects to formatted JSON
- formatDate: Format dates to ISO date strings
- shortHash: Truncate git hashes to specified length
- safeString: Escape quotes for JSON embedding
validateTemplate(template: string): Promise<{ valid: boolean; error?: string; }>
Test template compilation (useful for validation)
Validates template syntax without rendering data. Useful for configuration validation and debugging.
validateTemplateSecure(template: string): { valid: boolean; error?: string; }
Validate template for security issues
Checks for dangerous patterns that could lead to:
- Code injection
- Information disclosure
- Template injection attacks