@ackplus/nest-dynamic-templates
Version:
Dynamic template management for NestJS applications
131 lines • 6.06 kB
JavaScript
var NestDynamicTemplatesModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NestDynamicTemplatesModule = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const template_entity_1 = require("./entities/template.entity");
const template_layout_entity_1 = require("./entities/template-layout.entity");
const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
const template_engine_registry_1 = require("./services/template-engine.registry");
const template_layout_service_1 = require("./services/template-layout.service");
const template_service_1 = require("./services/template.service");
const template_config_service_1 = require("./services/template-config.service");
const constant_1 = require("./constant");
const template_types_1 = require("./interfaces/template.types");
const template_types_2 = require("./interfaces/template.types");
const defaultConfig = {
engines: {
template: [template_types_1.TemplateEngineEnum.NUNJUCKS],
language: [template_types_2.TemplateLanguageEnum.HTML, template_types_2.TemplateLanguageEnum.MJML, template_types_2.TemplateLanguageEnum.TEXT]
}
};
let NestDynamicTemplatesModule = NestDynamicTemplatesModule_1 = class NestDynamicTemplatesModule {
static forRoot(config = {}) {
const mergedConfig = this.getOptions(config);
template_config_service_1.TemplateConfigService.setOptions(mergedConfig);
return {
module: NestDynamicTemplatesModule_1,
global: mergedConfig.isGlobal,
imports: [
typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout]),
],
providers: [
template_config_service_1.TemplateConfigService,
template_engine_registry_1.TemplateEngineRegistryService,
template_layout_service_1.TemplateLayoutService,
template_service_1.TemplateService,
],
exports: [
template_config_service_1.TemplateConfigService,
template_service_1.TemplateService,
template_layout_service_1.TemplateLayoutService,
],
};
}
static forRootAsync(options) {
const asyncProviders = this.createAsyncProviders(options);
return {
module: NestDynamicTemplatesModule_1,
global: options.isGlobal,
imports: [
typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout]),
...(options.imports || []),
],
providers: [
...asyncProviders,
template_config_service_1.TemplateConfigService,
template_engine_registry_1.TemplateEngineRegistryService,
template_layout_service_1.TemplateLayoutService,
template_service_1.TemplateService,
],
exports: [
template_config_service_1.TemplateConfigService,
template_service_1.TemplateService,
template_layout_service_1.TemplateLayoutService,
],
};
}
static createAsyncProviders(options) {
if (options.useExisting || options.useFactory) {
return [this.createAsyncOptionsProvider(options)];
}
if (options.useClass) {
return [
this.createAsyncOptionsProvider(options),
{
provide: options.useClass,
useClass: options.useClass,
},
];
}
return [];
}
static createAsyncOptionsProvider(options) {
if (options.useFactory) {
return {
provide: constant_1.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
useFactory: async (...args) => {
const userOptions = await options.useFactory(...args);
const mergedOptions = this.getOptions(userOptions);
template_config_service_1.TemplateConfigService.setOptions(mergedOptions);
return mergedOptions;
},
inject: options.inject || [],
};
}
return {
provide: constant_1.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
useFactory: async (optionsFactory) => {
const userOptions = await optionsFactory.createNestDynamicTemplatesModuleOptions();
const mergedOptions = this.getOptions(userOptions);
template_config_service_1.TemplateConfigService.setOptions(mergedOptions);
return mergedOptions;
},
inject: [options.useExisting || options.useClass],
};
}
static getOptions(options) {
return (0, deepmerge_1.default)(this.moduleDefaultOptions, options);
}
};
exports.NestDynamicTemplatesModule = NestDynamicTemplatesModule;
NestDynamicTemplatesModule.moduleDefaultOptions = defaultConfig;
exports.NestDynamicTemplatesModule = NestDynamicTemplatesModule = NestDynamicTemplatesModule_1 = tslib_1.__decorate([
(0, common_1.Module)({
imports: [typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout])],
providers: [
template_config_service_1.TemplateConfigService,
template_engine_registry_1.TemplateEngineRegistryService,
template_layout_service_1.TemplateLayoutService,
template_service_1.TemplateService,
],
exports: [
template_config_service_1.TemplateConfigService,
template_service_1.TemplateService,
template_layout_service_1.TemplateLayoutService,
],
})
], NestDynamicTemplatesModule);
//# sourceMappingURL=nest-dynamic-templates.module.js.map
;