@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.
Files changed (142) hide show
  1. package/package.json +2 -2
  2. package/src/{index.ts → index.d.ts} +2 -14
  3. package/src/index.d.ts.map +1 -0
  4. package/src/index.js +25 -0
  5. package/src/lib/constant.d.ts +3 -0
  6. package/src/lib/constant.d.ts.map +1 -0
  7. package/src/lib/constant.js +5 -0
  8. package/src/lib/dto/create-template-layout.dto.d.ts +16 -0
  9. package/src/lib/dto/create-template-layout.dto.d.ts.map +1 -0
  10. package/src/lib/dto/create-template-layout.dto.js +86 -0
  11. package/src/lib/dto/create-template.dto.d.ts +18 -0
  12. package/src/lib/dto/create-template.dto.d.ts.map +1 -0
  13. package/src/lib/dto/create-template.dto.js +103 -0
  14. package/src/lib/dto/render-content-template-layout.dto.d.ts +8 -0
  15. package/src/lib/dto/render-content-template-layout.dto.d.ts.map +1 -0
  16. package/src/lib/dto/render-content-template-layout.dto.js +40 -0
  17. package/src/lib/dto/render-content-template.dto.d.ts +9 -0
  18. package/src/lib/dto/render-content-template.dto.d.ts.map +1 -0
  19. package/src/lib/dto/render-content-template.dto.js +46 -0
  20. package/src/lib/dto/render-template-layout.dto.d.ts +11 -0
  21. package/src/lib/dto/render-template-layout.dto.d.ts.map +1 -0
  22. package/src/lib/dto/render-template-layout.dto.js +66 -0
  23. package/src/lib/dto/render-template.dto.d.ts +15 -0
  24. package/src/lib/dto/render-template.dto.d.ts.map +1 -0
  25. package/src/lib/dto/render-template.dto.js +90 -0
  26. package/src/lib/dto/template-filter.dto.d.ts +9 -0
  27. package/src/lib/dto/template-filter.dto.d.ts.map +1 -0
  28. package/src/lib/dto/template-filter.dto.js +61 -0
  29. package/src/lib/dto/template-layout-filter.dto.d.ts +8 -0
  30. package/src/lib/dto/template-layout-filter.dto.d.ts.map +1 -0
  31. package/src/lib/dto/template-layout-filter.dto.js +60 -0
  32. package/src/lib/engines/language/html.engine.d.ts +10 -0
  33. package/src/lib/engines/language/html.engine.d.ts.map +1 -0
  34. package/src/lib/engines/language/html.engine.js +80 -0
  35. package/src/lib/engines/language/{index.ts → index.d.ts} +1 -0
  36. package/src/lib/engines/language/index.d.ts.map +1 -0
  37. package/src/lib/engines/language/index.js +11 -0
  38. package/src/lib/engines/language/markdown.engine.d.ts +10 -0
  39. package/src/lib/engines/language/markdown.engine.d.ts.map +1 -0
  40. package/src/lib/engines/language/markdown.engine.js +39 -0
  41. package/src/lib/engines/language/mjml.engine.d.ts +10 -0
  42. package/src/lib/engines/language/mjml.engine.d.ts.map +1 -0
  43. package/src/lib/engines/language/mjml.engine.js +75 -0
  44. package/src/lib/engines/language/text.engine.d.ts +8 -0
  45. package/src/lib/engines/language/text.engine.d.ts.map +1 -0
  46. package/src/lib/engines/language/text.engine.js +15 -0
  47. package/src/lib/engines/{language-engine.ts → language-engine.d.ts} +2 -7
  48. package/src/lib/engines/language-engine.d.ts.map +1 -0
  49. package/src/lib/engines/language-engine.js +6 -0
  50. package/src/lib/engines/template/ejs.engine.d.ts +11 -0
  51. package/src/lib/engines/template/ejs.engine.d.ts.map +1 -0
  52. package/src/lib/engines/template/ejs.engine.js +65 -0
  53. package/src/lib/engines/template/handlebars.engine.d.ts +11 -0
  54. package/src/lib/engines/template/handlebars.engine.d.ts.map +1 -0
  55. package/src/lib/engines/template/handlebars.engine.js +66 -0
  56. package/src/lib/engines/template/{index.ts → index.d.ts} +1 -0
  57. package/src/lib/engines/template/index.d.ts.map +1 -0
  58. package/src/lib/engines/template/index.js +11 -0
  59. package/src/lib/engines/template/nunjucks.engine.d.ts +17 -0
  60. package/src/lib/engines/template/nunjucks.engine.d.ts.map +1 -0
  61. package/src/lib/engines/template/{nunjucks.engine.ts → nunjucks.engine.js} +24 -30
  62. package/src/lib/engines/template/pug.engine.d.ts +13 -0
  63. package/src/lib/engines/template/pug.engine.d.ts.map +1 -0
  64. package/src/lib/engines/template/pug.engine.js +74 -0
  65. package/src/lib/engines/{template-engine.ts → template-engine.d.ts} +2 -6
  66. package/src/lib/engines/template-engine.d.ts.map +1 -0
  67. package/src/lib/engines/template-engine.js +6 -0
  68. package/src/lib/entities/template-layout.entity.d.ts +21 -0
  69. package/src/lib/entities/template-layout.entity.d.ts.map +1 -0
  70. package/src/lib/entities/template-layout.entity.js +120 -0
  71. package/src/lib/entities/template.entity.d.ts +22 -0
  72. package/src/lib/entities/template.entity.d.ts.map +1 -0
  73. package/src/lib/entities/template.entity.js +127 -0
  74. package/src/lib/errors/template.errors.d.ts +20 -0
  75. package/src/lib/errors/template.errors.d.ts.map +1 -0
  76. package/src/lib/errors/{template.errors.ts → template.errors.js} +22 -20
  77. package/src/lib/interfaces/{module-config.interface.ts → module-config.interface.d.ts} +2 -10
  78. package/src/lib/interfaces/module-config.interface.d.ts.map +1 -0
  79. package/src/lib/interfaces/module-config.interface.js +2 -0
  80. package/src/lib/interfaces/template.types.d.ts +23 -0
  81. package/src/lib/interfaces/template.types.d.ts.map +1 -0
  82. package/src/lib/interfaces/template.types.js +24 -0
  83. package/src/lib/nest-dynamic-templates.module.d.ts +11 -0
  84. package/src/lib/nest-dynamic-templates.module.d.ts.map +1 -0
  85. package/src/lib/nest-dynamic-templates.module.js +131 -0
  86. package/src/lib/services/template-config.service.d.ts +55 -0
  87. package/src/lib/services/template-config.service.d.ts.map +1 -0
  88. package/src/lib/services/{template-config.service.ts → template-config.service.js} +32 -43
  89. package/src/lib/services/template-engine.registry.d.ts +22 -0
  90. package/src/lib/services/template-engine.registry.d.ts.map +1 -0
  91. package/src/lib/services/template-engine.registry.js +93 -0
  92. package/src/lib/services/template-layout.service.d.ts +37 -0
  93. package/src/lib/services/template-layout.service.d.ts.map +1 -0
  94. package/src/lib/services/{template-layout.service.ts → template-layout.service.js} +101 -165
  95. package/src/lib/services/template.service.d.ts +39 -0
  96. package/src/lib/services/template.service.d.ts.map +1 -0
  97. package/src/lib/services/{template.service.ts → template.service.js} +137 -199
  98. package/src/test/helpers.d.ts +5 -0
  99. package/src/test/helpers.d.ts.map +1 -0
  100. package/src/test/{helpers.ts → helpers.js} +7 -5
  101. package/src/test/test-database.config.d.ts +5 -0
  102. package/src/test/test-database.config.d.ts.map +1 -0
  103. package/src/test/test-database.config.js +23 -0
  104. package/src/test/test.setup.d.ts +4 -0
  105. package/src/test/test.setup.d.ts.map +1 -0
  106. package/src/test/test.setup.js +30 -0
  107. package/eslint.config.mjs +0 -22
  108. package/jest.config.ts +0 -10
  109. package/project.json +0 -38
  110. package/src/lib/constant.ts +0 -2
  111. package/src/lib/dto/create-template-layout.dto.ts +0 -65
  112. package/src/lib/dto/create-template.dto.ts +0 -80
  113. package/src/lib/dto/render-content-template-layout.dto.ts +0 -32
  114. package/src/lib/dto/render-content-template.dto.ts +0 -37
  115. package/src/lib/dto/render-template-layout.dto.ts +0 -55
  116. package/src/lib/dto/render-template.dto.ts +0 -74
  117. package/src/lib/dto/template-filter.dto.ts +0 -52
  118. package/src/lib/dto/template-layout-filter.dto.ts +0 -51
  119. package/src/lib/engines/language/html.engine.ts +0 -49
  120. package/src/lib/engines/language/markdown.engine.ts +0 -37
  121. package/src/lib/engines/language/mjml.engine.ts +0 -44
  122. package/src/lib/engines/language/text.engine.ts +0 -15
  123. package/src/lib/engines/template/ejs.engine.ts +0 -33
  124. package/src/lib/engines/template/handlebars.engine.ts +0 -35
  125. package/src/lib/engines/template/pug.engine.ts +0 -43
  126. package/src/lib/entities/template-layout.entity.ts +0 -99
  127. package/src/lib/entities/template.entity.ts +0 -105
  128. package/src/lib/interfaces/template.types.ts +0 -25
  129. package/src/lib/nest-dynamic-templates.module.ts +0 -143
  130. package/src/lib/services/template-engine.registry.ts +0 -109
  131. package/src/test/nunjucks.service.spec.ts +0 -157
  132. package/src/test/pug.service.spec-temp +0 -254
  133. package/src/test/template-layout.service.spec.ts +0 -422
  134. package/src/test/template.service.spec.ts +0 -862
  135. package/src/test/test-database.config.ts +0 -24
  136. package/src/test/test-database.d.ts +0 -6
  137. package/src/test/test.setup.ts +0 -34
  138. package/src/types/ioredis.d.ts +0 -6
  139. package/src/types/mjml.d.ts +0 -5
  140. package/tsconfig.json +0 -17
  141. package/tsconfig.lib.json +0 -14
  142. 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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
- import { Injectable } from '@nestjs/common';
2
- import { NestDynamicTemplatesModuleConfig } from '../interfaces/module-config.interface';
3
- import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
4
-
5
- @Injectable()
6
- export class TemplateConfigService {
7
- private static config: NestDynamicTemplatesModuleConfig;
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: NestDynamicTemplatesModuleConfig): void {
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(): NestDynamicTemplatesModuleConfig {
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(): boolean {
26
+ static hasConfig() {
37
27
  return !!this.config;
38
28
  }
39
-
40
29
  /**
41
30
  * Reset configuration to default
42
31
  */
43
- static reset(): void {
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<K extends keyof NestDynamicTemplatesModuleConfig>(
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: TemplateEngineEnum): boolean {
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: TemplateLanguageEnum): boolean {
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(): TemplateEngineEnum[] {
59
+ static getEnabledTemplateEngines() {
77
60
  const config = this.getOptions();
78
- return config.engines?.template ?? this.defaultConfig.engines!.template!;
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(): TemplateLanguageEnum[] {
66
+ static getEnabledLanguageEngines() {
85
67
  const config = this.getOptions();
86
- return config.engines?.language ?? this.defaultConfig.engines!.language!;
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: TemplateEngineEnum): any {
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: TemplateLanguageEnum): any {
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(): Record<string, Function> {
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"}