@ackplus/nest-dynamic-templates 1.1.1 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/{index.ts → index.d.ts} +2 -14
- package/src/index.d.ts.map +1 -0
- package/src/index.js +25 -0
- package/src/lib/constant.d.ts +3 -0
- package/src/lib/constant.d.ts.map +1 -0
- package/src/lib/constant.js +5 -0
- package/src/lib/dto/create-template-layout.dto.d.ts +16 -0
- package/src/lib/dto/create-template-layout.dto.d.ts.map +1 -0
- package/src/lib/dto/create-template-layout.dto.js +86 -0
- package/src/lib/dto/create-template.dto.d.ts +18 -0
- package/src/lib/dto/create-template.dto.d.ts.map +1 -0
- package/src/lib/dto/create-template.dto.js +103 -0
- package/src/lib/dto/render-content-template-layout.dto.d.ts +8 -0
- package/src/lib/dto/render-content-template-layout.dto.d.ts.map +1 -0
- package/src/lib/dto/render-content-template-layout.dto.js +40 -0
- package/src/lib/dto/render-content-template.dto.d.ts +9 -0
- package/src/lib/dto/render-content-template.dto.d.ts.map +1 -0
- package/src/lib/dto/render-content-template.dto.js +46 -0
- package/src/lib/dto/render-template-layout.dto.d.ts +11 -0
- package/src/lib/dto/render-template-layout.dto.d.ts.map +1 -0
- package/src/lib/dto/render-template-layout.dto.js +66 -0
- package/src/lib/dto/render-template.dto.d.ts +15 -0
- package/src/lib/dto/render-template.dto.d.ts.map +1 -0
- package/src/lib/dto/render-template.dto.js +90 -0
- package/src/lib/dto/template-filter.dto.d.ts +9 -0
- package/src/lib/dto/template-filter.dto.d.ts.map +1 -0
- package/src/lib/dto/template-filter.dto.js +61 -0
- package/src/lib/dto/template-layout-filter.dto.d.ts +8 -0
- package/src/lib/dto/template-layout-filter.dto.d.ts.map +1 -0
- package/src/lib/dto/template-layout-filter.dto.js +60 -0
- package/src/lib/engines/language/html.engine.d.ts +10 -0
- package/src/lib/engines/language/html.engine.d.ts.map +1 -0
- package/src/lib/engines/language/html.engine.js +80 -0
- package/src/lib/engines/language/{index.ts → index.d.ts} +1 -0
- package/src/lib/engines/language/index.d.ts.map +1 -0
- package/src/lib/engines/language/index.js +11 -0
- package/src/lib/engines/language/markdown.engine.d.ts +10 -0
- package/src/lib/engines/language/markdown.engine.d.ts.map +1 -0
- package/src/lib/engines/language/markdown.engine.js +39 -0
- package/src/lib/engines/language/mjml.engine.d.ts +10 -0
- package/src/lib/engines/language/mjml.engine.d.ts.map +1 -0
- package/src/lib/engines/language/mjml.engine.js +75 -0
- package/src/lib/engines/language/text.engine.d.ts +8 -0
- package/src/lib/engines/language/text.engine.d.ts.map +1 -0
- package/src/lib/engines/language/text.engine.js +15 -0
- package/src/lib/engines/{language-engine.ts → language-engine.d.ts} +2 -7
- package/src/lib/engines/language-engine.d.ts.map +1 -0
- package/src/lib/engines/language-engine.js +6 -0
- package/src/lib/engines/template/ejs.engine.d.ts +11 -0
- package/src/lib/engines/template/ejs.engine.d.ts.map +1 -0
- package/src/lib/engines/template/ejs.engine.js +65 -0
- package/src/lib/engines/template/handlebars.engine.d.ts +11 -0
- package/src/lib/engines/template/handlebars.engine.d.ts.map +1 -0
- package/src/lib/engines/template/handlebars.engine.js +66 -0
- package/src/lib/engines/template/{index.ts → index.d.ts} +1 -0
- package/src/lib/engines/template/index.d.ts.map +1 -0
- package/src/lib/engines/template/index.js +11 -0
- package/src/lib/engines/template/nunjucks.engine.d.ts +17 -0
- package/src/lib/engines/template/nunjucks.engine.d.ts.map +1 -0
- package/src/lib/engines/template/{nunjucks.engine.ts → nunjucks.engine.js} +24 -30
- package/src/lib/engines/template/pug.engine.d.ts +13 -0
- package/src/lib/engines/template/pug.engine.d.ts.map +1 -0
- package/src/lib/engines/template/pug.engine.js +74 -0
- package/src/lib/engines/{template-engine.ts → template-engine.d.ts} +2 -6
- package/src/lib/engines/template-engine.d.ts.map +1 -0
- package/src/lib/engines/template-engine.js +6 -0
- package/src/lib/entities/template-layout.entity.d.ts +21 -0
- package/src/lib/entities/template-layout.entity.d.ts.map +1 -0
- package/src/lib/entities/template-layout.entity.js +120 -0
- package/src/lib/entities/template.entity.d.ts +22 -0
- package/src/lib/entities/template.entity.d.ts.map +1 -0
- package/src/lib/entities/template.entity.js +127 -0
- package/src/lib/errors/template.errors.d.ts +20 -0
- package/src/lib/errors/template.errors.d.ts.map +1 -0
- package/src/lib/errors/{template.errors.ts → template.errors.js} +22 -20
- package/src/lib/interfaces/{module-config.interface.ts → module-config.interface.d.ts} +2 -10
- package/src/lib/interfaces/module-config.interface.d.ts.map +1 -0
- package/src/lib/interfaces/module-config.interface.js +2 -0
- package/src/lib/interfaces/template.types.d.ts +23 -0
- package/src/lib/interfaces/template.types.d.ts.map +1 -0
- package/src/lib/interfaces/template.types.js +24 -0
- package/src/lib/nest-dynamic-templates.module.d.ts +11 -0
- package/src/lib/nest-dynamic-templates.module.d.ts.map +1 -0
- package/src/lib/nest-dynamic-templates.module.js +131 -0
- package/src/lib/services/template-config.service.d.ts +55 -0
- package/src/lib/services/template-config.service.d.ts.map +1 -0
- package/src/lib/services/{template-config.service.ts → template-config.service.js} +32 -43
- package/src/lib/services/template-engine.registry.d.ts +22 -0
- package/src/lib/services/template-engine.registry.d.ts.map +1 -0
- package/src/lib/services/template-engine.registry.js +93 -0
- package/src/lib/services/template-layout.service.d.ts +37 -0
- package/src/lib/services/template-layout.service.d.ts.map +1 -0
- package/src/lib/services/{template-layout.service.ts → template-layout.service.js} +101 -165
- package/src/lib/services/template.service.d.ts +39 -0
- package/src/lib/services/template.service.d.ts.map +1 -0
- package/src/lib/services/{template.service.ts → template.service.js} +137 -199
- package/src/test/helpers.d.ts +5 -0
- package/src/test/helpers.d.ts.map +1 -0
- package/src/test/{helpers.ts → helpers.js} +7 -5
- package/src/test/test-database.config.d.ts +5 -0
- package/src/test/test-database.config.d.ts.map +1 -0
- package/src/test/test-database.config.js +23 -0
- package/src/test/test.setup.d.ts +4 -0
- package/src/test/test.setup.d.ts.map +1 -0
- package/src/test/test.setup.js +30 -0
- package/eslint.config.mjs +0 -22
- package/jest.config.ts +0 -10
- package/project.json +0 -38
- package/src/lib/constant.ts +0 -2
- package/src/lib/dto/create-template-layout.dto.ts +0 -65
- package/src/lib/dto/create-template.dto.ts +0 -80
- package/src/lib/dto/render-content-template-layout.dto.ts +0 -32
- package/src/lib/dto/render-content-template.dto.ts +0 -37
- package/src/lib/dto/render-template-layout.dto.ts +0 -55
- package/src/lib/dto/render-template.dto.ts +0 -74
- package/src/lib/dto/template-filter.dto.ts +0 -52
- package/src/lib/dto/template-layout-filter.dto.ts +0 -51
- package/src/lib/engines/language/html.engine.ts +0 -49
- package/src/lib/engines/language/markdown.engine.ts +0 -37
- package/src/lib/engines/language/mjml.engine.ts +0 -44
- package/src/lib/engines/language/text.engine.ts +0 -15
- package/src/lib/engines/template/ejs.engine.ts +0 -33
- package/src/lib/engines/template/handlebars.engine.ts +0 -35
- package/src/lib/engines/template/pug.engine.ts +0 -43
- package/src/lib/entities/template-layout.entity.ts +0 -99
- package/src/lib/entities/template.entity.ts +0 -105
- package/src/lib/interfaces/template.types.ts +0 -25
- package/src/lib/nest-dynamic-templates.module.ts +0 -143
- package/src/lib/services/template-engine.registry.ts +0 -109
- package/src/test/nunjucks.service.spec.ts +0 -157
- package/src/test/pug.service.spec-temp +0 -254
- package/src/test/template-layout.service.spec.ts +0 -422
- package/src/test/template.service.spec.ts +0 -862
- package/src/test/test-database.config.ts +0 -24
- package/src/test/test-database.d.ts +0 -6
- package/src/test/test.setup.ts +0 -34
- package/src/types/ioredis.d.ts +0 -6
- package/src/types/mjml.d.ts +0 -5
- package/tsconfig.json +0 -17
- package/tsconfig.lib.json +0 -14
- package/tsconfig.spec.json +0 -15
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
import { TemplateEngineEnum, TemplateLanguageEnum } from './template.types';
|
|
2
2
|
import { ModuleMetadata, Type } from '@nestjs/common';
|
|
3
|
-
|
|
4
3
|
export interface EngineConfig {
|
|
5
4
|
enabled: boolean;
|
|
6
5
|
options?: Record<string, any>;
|
|
7
6
|
}
|
|
8
|
-
|
|
9
7
|
export interface FilterOptions {
|
|
10
8
|
name: string;
|
|
11
9
|
filter: (...args: any[]) => any;
|
|
12
10
|
}
|
|
13
|
-
|
|
14
|
-
export type EngineOptions<T> = T & {
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
|
|
11
|
+
export type EngineOptions<T> = T & {};
|
|
18
12
|
export type CustomEngineOptions = {
|
|
19
13
|
filters?: Record<string, FilterOptions['filter']>;
|
|
20
14
|
globalValues?: Record<string, (...args: any) => any>;
|
|
21
15
|
};
|
|
22
|
-
|
|
23
16
|
export interface NestDynamicTemplatesModuleConfig {
|
|
24
17
|
isGlobal?: boolean;
|
|
25
18
|
enginesOptions?: {
|
|
@@ -33,14 +26,12 @@ export interface NestDynamicTemplatesModuleConfig {
|
|
|
33
26
|
language?: TemplateLanguageEnum[];
|
|
34
27
|
};
|
|
35
28
|
}
|
|
36
|
-
|
|
37
29
|
/**
|
|
38
30
|
* Interface for async module configuration factory
|
|
39
31
|
*/
|
|
40
32
|
export interface NestDynamicTemplatesModuleOptionsFactory {
|
|
41
33
|
createNestDynamicTemplatesModuleOptions(): Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
|
|
42
34
|
}
|
|
43
|
-
|
|
44
35
|
/**
|
|
45
36
|
* Interface for async module configuration
|
|
46
37
|
*/
|
|
@@ -51,3 +42,4 @@ export interface NestDynamicTemplatesModuleAsyncOptions extends Pick<ModuleMetad
|
|
|
51
42
|
useFactory?: (...args: any[]) => Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
|
|
52
43
|
inject?: any[];
|
|
53
44
|
}
|
|
45
|
+
//# sourceMappingURL=module-config.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-config.interface.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/interfaces/module-config.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACnC;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAElC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzC,YAAY,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACnD,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACxE,CAAC;IACF,OAAO,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAChC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;KACrC,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,wCAAwC;IACrD,uCAAuC,IAAI,OAAO,CAAC,gCAAgC,CAAC,GAAG,gCAAgC,CAAC;CAC3H;AAED;;GAEG;AACH,MAAM,WAAW,sCAAuC,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC1D,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,gCAAgC,CAAC,GAAG,gCAAgC,CAAC;IAC9G,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAClB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare enum TemplateTypeEnum {
|
|
2
|
+
EMAIL = "email",
|
|
3
|
+
SMS = "sms",
|
|
4
|
+
PUSH = "push",
|
|
5
|
+
PDF = "pdf"
|
|
6
|
+
}
|
|
7
|
+
export declare enum TemplateEngineEnum {
|
|
8
|
+
NUNJUCKS = "njk",
|
|
9
|
+
HANDLEBARS = "hbs",
|
|
10
|
+
EJS = "ejs",
|
|
11
|
+
PUG = "pug"
|
|
12
|
+
}
|
|
13
|
+
export declare enum TemplateLanguageEnum {
|
|
14
|
+
MJML = "mjml",
|
|
15
|
+
HTML = "html",
|
|
16
|
+
MARKDOWN = "md",
|
|
17
|
+
TEXT = "txt"
|
|
18
|
+
}
|
|
19
|
+
export interface Scope {
|
|
20
|
+
scope: string;
|
|
21
|
+
id: string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=template.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.types.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/interfaces/template.types.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IACxB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;CACd;AAED,oBAAY,kBAAkB;IAC1B,QAAQ,QAAQ;IAChB,UAAU,QAAQ;IAClB,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AAED,oBAAY,oBAAoB;IAC5B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,OAAO;IACf,IAAI,QAAQ;CACf;AAED,MAAM,WAAW,KAAK;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TemplateLanguageEnum = exports.TemplateEngineEnum = exports.TemplateTypeEnum = void 0;
|
|
4
|
+
var TemplateTypeEnum;
|
|
5
|
+
(function (TemplateTypeEnum) {
|
|
6
|
+
TemplateTypeEnum["EMAIL"] = "email";
|
|
7
|
+
TemplateTypeEnum["SMS"] = "sms";
|
|
8
|
+
TemplateTypeEnum["PUSH"] = "push";
|
|
9
|
+
TemplateTypeEnum["PDF"] = "pdf";
|
|
10
|
+
})(TemplateTypeEnum || (exports.TemplateTypeEnum = TemplateTypeEnum = {}));
|
|
11
|
+
var TemplateEngineEnum;
|
|
12
|
+
(function (TemplateEngineEnum) {
|
|
13
|
+
TemplateEngineEnum["NUNJUCKS"] = "njk";
|
|
14
|
+
TemplateEngineEnum["HANDLEBARS"] = "hbs";
|
|
15
|
+
TemplateEngineEnum["EJS"] = "ejs";
|
|
16
|
+
TemplateEngineEnum["PUG"] = "pug";
|
|
17
|
+
})(TemplateEngineEnum || (exports.TemplateEngineEnum = TemplateEngineEnum = {}));
|
|
18
|
+
var TemplateLanguageEnum;
|
|
19
|
+
(function (TemplateLanguageEnum) {
|
|
20
|
+
TemplateLanguageEnum["MJML"] = "mjml";
|
|
21
|
+
TemplateLanguageEnum["HTML"] = "html";
|
|
22
|
+
TemplateLanguageEnum["MARKDOWN"] = "md";
|
|
23
|
+
TemplateLanguageEnum["TEXT"] = "txt";
|
|
24
|
+
})(TemplateLanguageEnum || (exports.TemplateLanguageEnum = TemplateLanguageEnum = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { NestDynamicTemplatesModuleConfig, NestDynamicTemplatesModuleAsyncOptions } from './interfaces/module-config.interface';
|
|
3
|
+
export declare class NestDynamicTemplatesModule {
|
|
4
|
+
static moduleDefaultOptions: Partial<NestDynamicTemplatesModuleConfig>;
|
|
5
|
+
static forRoot(config?: NestDynamicTemplatesModuleConfig): DynamicModule;
|
|
6
|
+
static forRootAsync(options: NestDynamicTemplatesModuleAsyncOptions): DynamicModule;
|
|
7
|
+
private static createAsyncProviders;
|
|
8
|
+
private static createAsyncOptionsProvider;
|
|
9
|
+
private static getOptions;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=nest-dynamic-templates.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nest-dynamic-templates.module.d.ts","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/lib/nest-dynamic-templates.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAY,MAAM,gBAAgB,CAAC;AAIjE,OAAO,EACL,gCAAgC,EAChC,sCAAsC,EAEvC,MAAM,sCAAsC,CAAC;AAkB9C,qBAca,0BAA0B;IACrC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,gCAAgC,CAAC,CAAiB;IAEvF,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,gCAAqC,GAAG,aAAa;IA0B5E,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,sCAAsC,GAAG,aAAa;IAyBnF,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkBnC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IA0BzC,OAAO,CAAC,MAAM,CAAC,UAAU;CAI1B"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var NestDynamicTemplatesModule_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.NestDynamicTemplatesModule = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
8
|
+
const template_entity_1 = require("./entities/template.entity");
|
|
9
|
+
const template_layout_entity_1 = require("./entities/template-layout.entity");
|
|
10
|
+
const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
|
|
11
|
+
const template_engine_registry_1 = require("./services/template-engine.registry");
|
|
12
|
+
const template_layout_service_1 = require("./services/template-layout.service");
|
|
13
|
+
const template_service_1 = require("./services/template.service");
|
|
14
|
+
const template_config_service_1 = require("./services/template-config.service");
|
|
15
|
+
const constant_1 = require("./constant");
|
|
16
|
+
const template_types_1 = require("./interfaces/template.types");
|
|
17
|
+
const template_types_2 = require("./interfaces/template.types");
|
|
18
|
+
const defaultConfig = {
|
|
19
|
+
engines: {
|
|
20
|
+
template: [template_types_1.TemplateEngineEnum.NUNJUCKS],
|
|
21
|
+
language: [template_types_2.TemplateLanguageEnum.HTML, template_types_2.TemplateLanguageEnum.MJML, template_types_2.TemplateLanguageEnum.TEXT]
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
let NestDynamicTemplatesModule = NestDynamicTemplatesModule_1 = class NestDynamicTemplatesModule {
|
|
25
|
+
static forRoot(config = {}) {
|
|
26
|
+
const mergedConfig = this.getOptions(config);
|
|
27
|
+
// Set options in static service
|
|
28
|
+
template_config_service_1.TemplateConfigService.setOptions(mergedConfig);
|
|
29
|
+
return {
|
|
30
|
+
module: NestDynamicTemplatesModule_1,
|
|
31
|
+
global: mergedConfig.isGlobal,
|
|
32
|
+
imports: [
|
|
33
|
+
typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout]),
|
|
34
|
+
],
|
|
35
|
+
providers: [
|
|
36
|
+
template_config_service_1.TemplateConfigService,
|
|
37
|
+
template_engine_registry_1.TemplateEngineRegistryService,
|
|
38
|
+
template_layout_service_1.TemplateLayoutService,
|
|
39
|
+
template_service_1.TemplateService,
|
|
40
|
+
],
|
|
41
|
+
exports: [
|
|
42
|
+
template_config_service_1.TemplateConfigService,
|
|
43
|
+
template_service_1.TemplateService,
|
|
44
|
+
template_layout_service_1.TemplateLayoutService,
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
static forRootAsync(options) {
|
|
49
|
+
const asyncProviders = this.createAsyncProviders(options);
|
|
50
|
+
return {
|
|
51
|
+
module: NestDynamicTemplatesModule_1,
|
|
52
|
+
global: options.isGlobal,
|
|
53
|
+
imports: [
|
|
54
|
+
typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout]),
|
|
55
|
+
...(options.imports || []),
|
|
56
|
+
],
|
|
57
|
+
providers: [
|
|
58
|
+
...asyncProviders,
|
|
59
|
+
template_config_service_1.TemplateConfigService,
|
|
60
|
+
template_engine_registry_1.TemplateEngineRegistryService,
|
|
61
|
+
template_layout_service_1.TemplateLayoutService,
|
|
62
|
+
template_service_1.TemplateService,
|
|
63
|
+
],
|
|
64
|
+
exports: [
|
|
65
|
+
template_config_service_1.TemplateConfigService,
|
|
66
|
+
template_service_1.TemplateService,
|
|
67
|
+
template_layout_service_1.TemplateLayoutService,
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
static createAsyncProviders(options) {
|
|
72
|
+
if (options.useExisting || options.useFactory) {
|
|
73
|
+
return [this.createAsyncOptionsProvider(options)];
|
|
74
|
+
}
|
|
75
|
+
if (options.useClass) {
|
|
76
|
+
return [
|
|
77
|
+
this.createAsyncOptionsProvider(options),
|
|
78
|
+
{
|
|
79
|
+
provide: options.useClass,
|
|
80
|
+
useClass: options.useClass,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
static createAsyncOptionsProvider(options) {
|
|
87
|
+
if (options.useFactory) {
|
|
88
|
+
return {
|
|
89
|
+
provide: constant_1.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
|
|
90
|
+
useFactory: async (...args) => {
|
|
91
|
+
const userOptions = options.useFactory ? await options.useFactory(...args) : {};
|
|
92
|
+
const mergedOptions = this.getOptions(userOptions);
|
|
93
|
+
template_config_service_1.TemplateConfigService.setOptions(mergedOptions);
|
|
94
|
+
return mergedOptions;
|
|
95
|
+
},
|
|
96
|
+
inject: options.inject || [],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
provide: constant_1.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
|
|
101
|
+
useFactory: async (optionsFactory) => {
|
|
102
|
+
const userOptions = await optionsFactory.createNestDynamicTemplatesModuleOptions();
|
|
103
|
+
const mergedOptions = this.getOptions(userOptions);
|
|
104
|
+
template_config_service_1.TemplateConfigService.setOptions(mergedOptions);
|
|
105
|
+
return mergedOptions;
|
|
106
|
+
},
|
|
107
|
+
inject: [options.useExisting || options.useClass],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
static getOptions(options) {
|
|
111
|
+
return (0, deepmerge_1.default)(this.moduleDefaultOptions, options);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
exports.NestDynamicTemplatesModule = NestDynamicTemplatesModule;
|
|
115
|
+
NestDynamicTemplatesModule.moduleDefaultOptions = defaultConfig;
|
|
116
|
+
exports.NestDynamicTemplatesModule = NestDynamicTemplatesModule = NestDynamicTemplatesModule_1 = tslib_1.__decorate([
|
|
117
|
+
(0, common_1.Module)({
|
|
118
|
+
imports: [typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout])],
|
|
119
|
+
providers: [
|
|
120
|
+
template_config_service_1.TemplateConfigService,
|
|
121
|
+
template_engine_registry_1.TemplateEngineRegistryService,
|
|
122
|
+
template_layout_service_1.TemplateLayoutService,
|
|
123
|
+
template_service_1.TemplateService,
|
|
124
|
+
],
|
|
125
|
+
exports: [
|
|
126
|
+
template_config_service_1.TemplateConfigService,
|
|
127
|
+
template_service_1.TemplateService,
|
|
128
|
+
template_layout_service_1.TemplateLayoutService,
|
|
129
|
+
],
|
|
130
|
+
})
|
|
131
|
+
], NestDynamicTemplatesModule);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { NestDynamicTemplatesModuleConfig } from '../interfaces/module-config.interface';
|
|
2
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
3
|
+
export declare class TemplateConfigService {
|
|
4
|
+
private static config;
|
|
5
|
+
private static readonly defaultConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Set the configuration options
|
|
8
|
+
*/
|
|
9
|
+
static setOptions(config: NestDynamicTemplatesModuleConfig): void;
|
|
10
|
+
/**
|
|
11
|
+
* Get the current configuration options
|
|
12
|
+
*/
|
|
13
|
+
static getOptions(): NestDynamicTemplatesModuleConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Check if configuration has been set
|
|
16
|
+
*/
|
|
17
|
+
static hasConfig(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Reset configuration to default
|
|
20
|
+
*/
|
|
21
|
+
static reset(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get a specific configuration value
|
|
24
|
+
*/
|
|
25
|
+
static get<K extends keyof NestDynamicTemplatesModuleConfig>(key: K): NestDynamicTemplatesModuleConfig[K];
|
|
26
|
+
/**
|
|
27
|
+
* Check if a template engine is enabled
|
|
28
|
+
*/
|
|
29
|
+
static isTemplateEngineEnabled(engine: TemplateEngineEnum): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a language engine is enabled
|
|
32
|
+
*/
|
|
33
|
+
static isLanguageEngineEnabled(language: TemplateLanguageEnum): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Get enabled template engines
|
|
36
|
+
*/
|
|
37
|
+
static getEnabledTemplateEngines(): TemplateEngineEnum[];
|
|
38
|
+
/**
|
|
39
|
+
* Get enabled language engines
|
|
40
|
+
*/
|
|
41
|
+
static getEnabledLanguageEngines(): TemplateLanguageEnum[];
|
|
42
|
+
/**
|
|
43
|
+
* Get engine options for a specific template engine
|
|
44
|
+
*/
|
|
45
|
+
static getTemplateEngineOptions(engine: TemplateEngineEnum): any;
|
|
46
|
+
/**
|
|
47
|
+
* Get engine options for a specific language engine
|
|
48
|
+
*/
|
|
49
|
+
static getLanguageEngineOptions(language: TemplateLanguageEnum): any;
|
|
50
|
+
/**
|
|
51
|
+
* Get custom filters
|
|
52
|
+
*/
|
|
53
|
+
static getCustomFilters(): Record<string, Function>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=template-config.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-config.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-config.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF,qBACa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAmC;IAExD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAKnC;IAEF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,gCAAgC,GAAG,IAAI;IAIjE;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,gCAAgC;IAOrD;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,gCAAgC,EACvD,GAAG,EAAE,CAAC,GACP,gCAAgC,CAAC,CAAC,CAAC;IAKtC;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO;IAKnE;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO;IAKvE;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,kBAAkB,EAAE;IAKxD;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,oBAAoB,EAAE;IAK1D;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,GAAG;IAKhE;;OAEG;IACH,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG;IAKpE;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;CAItD"}
|
|
@@ -1,112 +1,101 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
private static readonly defaultConfig: NestDynamicTemplatesModuleConfig = {
|
|
10
|
-
engines: {
|
|
11
|
-
template: [TemplateEngineEnum.NUNJUCKS],
|
|
12
|
-
language: [TemplateLanguageEnum.HTML, TemplateLanguageEnum.MJML, TemplateLanguageEnum.TEXT]
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TemplateConfigService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const template_types_1 = require("../interfaces/template.types");
|
|
7
|
+
let TemplateConfigService = class TemplateConfigService {
|
|
16
8
|
/**
|
|
17
9
|
* Set the configuration options
|
|
18
10
|
*/
|
|
19
|
-
static setOptions(config
|
|
11
|
+
static setOptions(config) {
|
|
20
12
|
this.config = { ...this.defaultConfig, ...config };
|
|
21
13
|
}
|
|
22
|
-
|
|
23
14
|
/**
|
|
24
15
|
* Get the current configuration options
|
|
25
16
|
*/
|
|
26
|
-
static getOptions()
|
|
17
|
+
static getOptions() {
|
|
27
18
|
if (!this.config) {
|
|
28
19
|
return this.defaultConfig;
|
|
29
20
|
}
|
|
30
21
|
return this.config;
|
|
31
22
|
}
|
|
32
|
-
|
|
33
23
|
/**
|
|
34
24
|
* Check if configuration has been set
|
|
35
25
|
*/
|
|
36
|
-
static hasConfig()
|
|
26
|
+
static hasConfig() {
|
|
37
27
|
return !!this.config;
|
|
38
28
|
}
|
|
39
|
-
|
|
40
29
|
/**
|
|
41
30
|
* Reset configuration to default
|
|
42
31
|
*/
|
|
43
|
-
static reset()
|
|
32
|
+
static reset() {
|
|
44
33
|
this.config = { ...this.defaultConfig };
|
|
45
34
|
}
|
|
46
|
-
|
|
47
35
|
/**
|
|
48
36
|
* Get a specific configuration value
|
|
49
37
|
*/
|
|
50
|
-
static get
|
|
51
|
-
key: K
|
|
52
|
-
): NestDynamicTemplatesModuleConfig[K] {
|
|
38
|
+
static get(key) {
|
|
53
39
|
const config = this.getOptions();
|
|
54
40
|
return config[key];
|
|
55
41
|
}
|
|
56
|
-
|
|
57
42
|
/**
|
|
58
43
|
* Check if a template engine is enabled
|
|
59
44
|
*/
|
|
60
|
-
static isTemplateEngineEnabled(engine
|
|
45
|
+
static isTemplateEngineEnabled(engine) {
|
|
61
46
|
const config = this.getOptions();
|
|
62
47
|
return config.engines?.template?.includes(engine) ?? false;
|
|
63
48
|
}
|
|
64
|
-
|
|
65
49
|
/**
|
|
66
50
|
* Check if a language engine is enabled
|
|
67
51
|
*/
|
|
68
|
-
static isLanguageEngineEnabled(language
|
|
52
|
+
static isLanguageEngineEnabled(language) {
|
|
69
53
|
const config = this.getOptions();
|
|
70
54
|
return config.engines?.language?.includes(language) ?? false;
|
|
71
55
|
}
|
|
72
|
-
|
|
73
56
|
/**
|
|
74
57
|
* Get enabled template engines
|
|
75
58
|
*/
|
|
76
|
-
static getEnabledTemplateEngines()
|
|
59
|
+
static getEnabledTemplateEngines() {
|
|
77
60
|
const config = this.getOptions();
|
|
78
|
-
return config.engines?.template ?? this.defaultConfig.engines
|
|
61
|
+
return config.engines?.template ?? this.defaultConfig.engines.template;
|
|
79
62
|
}
|
|
80
|
-
|
|
81
63
|
/**
|
|
82
64
|
* Get enabled language engines
|
|
83
65
|
*/
|
|
84
|
-
static getEnabledLanguageEngines()
|
|
66
|
+
static getEnabledLanguageEngines() {
|
|
85
67
|
const config = this.getOptions();
|
|
86
|
-
return config.engines?.language ?? this.defaultConfig.engines
|
|
68
|
+
return config.engines?.language ?? this.defaultConfig.engines.language;
|
|
87
69
|
}
|
|
88
|
-
|
|
89
70
|
/**
|
|
90
71
|
* Get engine options for a specific template engine
|
|
91
72
|
*/
|
|
92
|
-
static getTemplateEngineOptions(engine
|
|
73
|
+
static getTemplateEngineOptions(engine) {
|
|
93
74
|
const config = this.getOptions();
|
|
94
75
|
return config.enginesOptions?.template?.[engine];
|
|
95
76
|
}
|
|
96
|
-
|
|
97
77
|
/**
|
|
98
78
|
* Get engine options for a specific language engine
|
|
99
79
|
*/
|
|
100
|
-
static getLanguageEngineOptions(language
|
|
80
|
+
static getLanguageEngineOptions(language) {
|
|
101
81
|
const config = this.getOptions();
|
|
102
82
|
return config.enginesOptions?.language?.[language];
|
|
103
83
|
}
|
|
104
|
-
|
|
105
84
|
/**
|
|
106
85
|
* Get custom filters
|
|
107
86
|
*/
|
|
108
|
-
static getCustomFilters()
|
|
87
|
+
static getCustomFilters() {
|
|
109
88
|
const config = this.getOptions();
|
|
110
89
|
return config.enginesOptions?.filters ?? {};
|
|
111
90
|
}
|
|
112
|
-
}
|
|
91
|
+
};
|
|
92
|
+
exports.TemplateConfigService = TemplateConfigService;
|
|
93
|
+
TemplateConfigService.defaultConfig = {
|
|
94
|
+
engines: {
|
|
95
|
+
template: [template_types_1.TemplateEngineEnum.NUNJUCKS],
|
|
96
|
+
language: [template_types_1.TemplateLanguageEnum.HTML, template_types_1.TemplateLanguageEnum.MJML, template_types_1.TemplateLanguageEnum.TEXT]
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
exports.TemplateConfigService = TemplateConfigService = tslib_1.__decorate([
|
|
100
|
+
(0, common_1.Injectable)()
|
|
101
|
+
], TemplateConfigService);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
2
|
+
import { TemplateEngine } from '../engines/template-engine';
|
|
3
|
+
import { LanguageEngine } from '../engines/language-engine';
|
|
4
|
+
type ClassType<T> = new (...args: any[]) => T;
|
|
5
|
+
export declare class TemplateEngineRegistryService {
|
|
6
|
+
private templateEngines;
|
|
7
|
+
private languageEngines;
|
|
8
|
+
private config;
|
|
9
|
+
constructor();
|
|
10
|
+
registerTemplateEngines(engineClasses: ClassType<TemplateEngine>[]): void;
|
|
11
|
+
registerTemplateEngine(format: TemplateEngineEnum, engine: TemplateEngine): void;
|
|
12
|
+
registerLanguageEngine(format: TemplateLanguageEnum, engine: LanguageEngine): void;
|
|
13
|
+
getTemplateEngine(format: TemplateEngineEnum): TemplateEngine;
|
|
14
|
+
getLanguageEngine(format: TemplateLanguageEnum): LanguageEngine;
|
|
15
|
+
registerLanguageEngines(engineClasses: ClassType<LanguageEngine>[]): void;
|
|
16
|
+
hasTemplateEngine(format: TemplateEngineEnum): boolean;
|
|
17
|
+
hasLanguageEngine(format: TemplateLanguageEnum): boolean;
|
|
18
|
+
getSupportedTemplateFormats(): TemplateEngineEnum[];
|
|
19
|
+
getSupportedLanguageFormats(): TemplateLanguageEnum[];
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=template-engine.registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-engine.registry.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-engine.registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AASxF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE9C,qBACa,6BAA6B;IACtC,OAAO,CAAC,eAAe,CAAsD;IAC7E,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,MAAM,CAAmC;;IAqBjD,uBAAuB,CAAC,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAiBzE,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAIhF,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAIlF,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc;IAQ7D,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc;IAQ/D,uBAAuB,CAAC,aAAa,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI;IAWzE,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO;IAItD,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO;IAIxD,2BAA2B,IAAI,kBAAkB,EAAE;IAInD,2BAA2B,IAAI,oBAAoB,EAAE;CAGxD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TemplateEngineRegistryService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const nunjucks_engine_1 = require("../engines/template/nunjucks.engine");
|
|
7
|
+
const mjml_engine_1 = require("../engines/language/mjml.engine");
|
|
8
|
+
const html_engine_1 = require("../engines/language/html.engine");
|
|
9
|
+
const language_1 = require("../engines/language");
|
|
10
|
+
const ejs_engine_1 = require("../engines/template/ejs.engine");
|
|
11
|
+
const handlebars_engine_1 = require("../engines/template/handlebars.engine");
|
|
12
|
+
const pug_engine_1 = require("../engines/template/pug.engine");
|
|
13
|
+
const template_config_service_1 = require("./template-config.service");
|
|
14
|
+
let TemplateEngineRegistryService = class TemplateEngineRegistryService {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.templateEngines = new Map();
|
|
17
|
+
this.languageEngines = new Map();
|
|
18
|
+
this.config = template_config_service_1.TemplateConfigService.getOptions();
|
|
19
|
+
this.registerTemplateEngines([
|
|
20
|
+
nunjucks_engine_1.NunjucksEngine,
|
|
21
|
+
handlebars_engine_1.HandlebarsEngine,
|
|
22
|
+
ejs_engine_1.EjsEngine,
|
|
23
|
+
pug_engine_1.PugEngine
|
|
24
|
+
]);
|
|
25
|
+
this.registerLanguageEngines([
|
|
26
|
+
mjml_engine_1.MjmlEngine,
|
|
27
|
+
html_engine_1.HtmlEngine,
|
|
28
|
+
language_1.TextEngine,
|
|
29
|
+
language_1.MarkdownEngine
|
|
30
|
+
]);
|
|
31
|
+
}
|
|
32
|
+
registerTemplateEngines(engineClasses) {
|
|
33
|
+
engineClasses.forEach(EngineClass => {
|
|
34
|
+
const engineName = EngineClass.engineName;
|
|
35
|
+
if (!engineName) {
|
|
36
|
+
throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
|
|
37
|
+
}
|
|
38
|
+
const options = this.config.enginesOptions?.template?.[engineName];
|
|
39
|
+
const customOptions = {
|
|
40
|
+
filters: this.config.enginesOptions?.filters,
|
|
41
|
+
globalValues: this.config.enginesOptions?.globalValues
|
|
42
|
+
};
|
|
43
|
+
this.registerTemplateEngine(engineName, new EngineClass(options, customOptions));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
registerTemplateEngine(format, engine) {
|
|
47
|
+
this.templateEngines.set(format, engine);
|
|
48
|
+
}
|
|
49
|
+
registerLanguageEngine(format, engine) {
|
|
50
|
+
this.languageEngines.set(format, engine);
|
|
51
|
+
}
|
|
52
|
+
getTemplateEngine(format) {
|
|
53
|
+
const engine = this.templateEngines.get(format);
|
|
54
|
+
if (!engine) {
|
|
55
|
+
throw new Error(`Template engine not found for format: ${format}`);
|
|
56
|
+
}
|
|
57
|
+
return engine;
|
|
58
|
+
}
|
|
59
|
+
getLanguageEngine(format) {
|
|
60
|
+
const engine = this.languageEngines.get(format);
|
|
61
|
+
if (!engine) {
|
|
62
|
+
throw new Error(`Language engine not found for format: ${format}`);
|
|
63
|
+
}
|
|
64
|
+
return engine;
|
|
65
|
+
}
|
|
66
|
+
registerLanguageEngines(engineClasses) {
|
|
67
|
+
engineClasses.forEach(EngineClass => {
|
|
68
|
+
const engineName = EngineClass.engineName;
|
|
69
|
+
if (!engineName) {
|
|
70
|
+
throw new Error(`Engine class ${EngineClass.name} must define static engineName property`);
|
|
71
|
+
}
|
|
72
|
+
const options = this.config.enginesOptions?.language?.[engineName];
|
|
73
|
+
this.registerLanguageEngine(engineName, new EngineClass(options));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
hasTemplateEngine(format) {
|
|
77
|
+
return this.templateEngines.has(format);
|
|
78
|
+
}
|
|
79
|
+
hasLanguageEngine(format) {
|
|
80
|
+
return this.languageEngines.has(format);
|
|
81
|
+
}
|
|
82
|
+
getSupportedTemplateFormats() {
|
|
83
|
+
return Array.from(this.templateEngines.keys());
|
|
84
|
+
}
|
|
85
|
+
getSupportedLanguageFormats() {
|
|
86
|
+
return Array.from(this.languageEngines.keys());
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
exports.TemplateEngineRegistryService = TemplateEngineRegistryService;
|
|
90
|
+
exports.TemplateEngineRegistryService = TemplateEngineRegistryService = tslib_1.__decorate([
|
|
91
|
+
(0, common_1.Injectable)(),
|
|
92
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
93
|
+
], TemplateEngineRegistryService);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { NestDynamicTemplateLayout } from '../entities/template-layout.entity';
|
|
3
|
+
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
4
|
+
import { TemplateLayoutFilterDto } from '../dto/template-layout-filter.dto';
|
|
5
|
+
import { TemplateEngineRegistryService } from './template-engine.registry';
|
|
6
|
+
import { RenderTemplateLayoutDto, RenderTemplateLayoutOutput } from '../dto/render-template-layout.dto';
|
|
7
|
+
import { CreateTemplateLayoutDto } from '../dto/create-template-layout.dto';
|
|
8
|
+
import { RenderContentTemplateLayoutDto } from '../dto/render-content-template-layout.dto';
|
|
9
|
+
export declare class TemplateLayoutService {
|
|
10
|
+
private readonly layoutRepository;
|
|
11
|
+
private readonly engineRegistry;
|
|
12
|
+
constructor(layoutRepository: Repository<NestDynamicTemplateLayout>, engineRegistry: TemplateEngineRegistryService);
|
|
13
|
+
render(renderDto: RenderTemplateLayoutDto): Promise<RenderTemplateLayoutOutput>;
|
|
14
|
+
renderContent(input: RenderContentTemplateLayoutDto): Promise<string>;
|
|
15
|
+
renderLanguage(language: TemplateLanguageEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
16
|
+
renderEngine(engine: TemplateEngineEnum, content: string, context: Record<string, any>): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Get all templates, with scoped templates taking precedence over system templates
|
|
19
|
+
*/
|
|
20
|
+
getTemplateLayouts(filter?: TemplateLayoutFilterDto): Promise<NestDynamicTemplateLayout[]>;
|
|
21
|
+
getTemplateLayoutById(id: string): Promise<NestDynamicTemplateLayout | null>;
|
|
22
|
+
findTemplateLayout(name: string, scope?: string, scopeId?: string, locale?: string): Promise<NestDynamicTemplateLayout | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Create a system template. Only system templates can be created directly.
|
|
25
|
+
*/
|
|
26
|
+
createTemplateLayout(data: CreateTemplateLayoutDto): Promise<NestDynamicTemplateLayout>;
|
|
27
|
+
overwriteSystemTemplateLayout(templateId: string, updates: Partial<CreateTemplateLayoutDto>): Promise<NestDynamicTemplateLayout>;
|
|
28
|
+
/**
|
|
29
|
+
* Update a template
|
|
30
|
+
*/
|
|
31
|
+
updateTemplateLayout(id: string, updates: Partial<CreateTemplateLayoutDto>, canUpdateSystemTemplate?: boolean): Promise<NestDynamicTemplateLayout>;
|
|
32
|
+
/**
|
|
33
|
+
* Delete a scoped template
|
|
34
|
+
*/
|
|
35
|
+
deleteTemplateLayout(id: string, canDeleteSystemTemplate?: boolean): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=template-layout.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-layout.service.d.ts","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-layout.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAoB,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAO3F,qBACa,qBAAqB;IAG1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,gBAAgB,EAAE,UAAU,CAAC,yBAAyB,CAAC,EACvD,cAAc,EAAE,6BAA6B;IAI5D,MAAM,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAoD/E,aAAa,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CrE,cAAc,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9G,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB9G;;OAEG;IACG,kBAAkB,CAAC,MAAM,GAAE,uBAA4B,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;IAyD9F,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAM5E,kBAAkB,CACpB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IA8C5C;;OAEG;IACG,oBAAoB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4BvF,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA+CtI;;OAEG;IACG,oBAAoB,CACtB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,EACzC,uBAAuB,GAAE,OAAe,GACzC,OAAO,CAAC,yBAAyB,CAAC;IA0BrC;;OAEG;IACG,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,uBAAuB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBlG"}
|