@ackplus/nest-dynamic-templates
Version:
A powerful and flexible dynamic template rendering library for NestJS applications with support for Nunjucks, Handlebars, EJS, Pug, MJML, Markdown, and more.
50 lines (49 loc) • 2.05 kB
TypeScript
import { TemplateEngineEnum, TemplateLanguageEnum } from './template.types';
import { ModuleMetadata, Type } from '@nestjs/common';
export type TemplateFilter = (...args: any[]) => any;
export interface CustomEngineOptions {
filters?: Record<string, TemplateFilter>;
globals?: Record<string, any>;
}
export interface NestDynamicTemplatesModuleConfig {
isGlobal?: boolean;
engines?: {
template?: TemplateEngineEnum[];
language?: TemplateLanguageEnum[];
};
filters?: Record<string, TemplateFilter>;
globals?: Record<string, any>;
engineOptions?: {
template?: Partial<Record<TemplateEngineEnum, Record<string, any>>>;
language?: Partial<Record<TemplateLanguageEnum, Record<string, any>>>;
};
enginesOptions?: {
filters?: Record<string, TemplateFilter>;
globalValues?: Record<string, any>;
template?: Partial<Record<TemplateEngineEnum, Record<string, any>>>;
language?: Partial<Record<TemplateLanguageEnum, Record<string, any>>>;
};
}
export interface ResolvedTemplatesConfig {
isGlobal: boolean;
engines: {
template: TemplateEngineEnum[];
language: TemplateLanguageEnum[];
};
filters: Record<string, TemplateFilter>;
globals: Record<string, any>;
engineOptions: {
template: Partial<Record<TemplateEngineEnum, Record<string, any>>>;
language: Partial<Record<TemplateLanguageEnum, Record<string, any>>>;
};
}
export interface NestDynamicTemplatesModuleOptionsFactory {
createNestDynamicTemplatesModuleOptions(): Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
}
export interface NestDynamicTemplatesModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
isGlobal?: boolean;
useExisting?: Type<NestDynamicTemplatesModuleOptionsFactory>;
useClass?: Type<NestDynamicTemplatesModuleOptionsFactory>;
useFactory?: (...args: any[]) => Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
inject?: any[];
}