class TemplateProcessor

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.

Examples

Creating a processor with custom configuration

const config = {
  versionFile: {
    template: TemplateFormat.TYPESCRIPT,
    additionalExports: [
      { name: "BUILD_DATE", value: "buildDate" }
    ]
  },
  security: {
    templateSandbox: "strict"
  }
};
const processor = new TemplateProcessor(config);

Constructors

new
TemplateProcessor(config: NagareConfig)

Initialize template processor with Vento environment.

Properties

Nagare configuration

private
logger: Logger

Logger instance

private
vento: ReturnType<vento>

Vento template environment instance

Methods

private
generateAdditionalExports(
exports: AdditionalExport[],
): 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.

private
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,
): 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.

private
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
private
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.

private
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