@ackplus/nest-dynamic-templates 0.1.32 → 0.1.34
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/README.md +234 -118
- package/package.json +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/constant.d.ts +1 -0
- package/src/lib/constant.js +2 -1
- package/src/lib/constant.js.map +1 -1
- package/src/lib/interfaces/module-config.interface.d.ts +11 -0
- package/src/lib/nest-dynamic-templates.module.d.ts +6 -1
- package/src/lib/nest-dynamic-templates.module.js +86 -6
- package/src/lib/nest-dynamic-templates.module.js.map +1 -1
- package/src/lib/services/template-config.service.d.ts +18 -0
- package/src/lib/services/template-config.service.js +66 -0
- package/src/lib/services/template-config.service.js.map +1 -0
- package/src/lib/services/template-engine.registry.d.ts +2 -3
- package/src/lib/services/template-engine.registry.js +4 -5
- package/src/lib/services/template-engine.registry.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/README.md
CHANGED
|
@@ -1,172 +1,288 @@
|
|
|
1
|
-
#
|
|
1
|
+
# NestJS Dynamic Templates
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A powerful NestJS module for dynamic template management with support for multiple template engines and languages.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- TypeScript support
|
|
7
|
+
- 🚀 Multiple template engines (Nunjucks, Handlebars, EJS, Pug)
|
|
8
|
+
- 🌐 Multiple language support (HTML, MJML, Markdown, Text)
|
|
9
|
+
- 💾 Database storage for templates and layouts
|
|
10
|
+
- 🔧 Configurable and extensible
|
|
11
|
+
- 🎯 TypeScript support
|
|
12
|
+
- 📦 Easy integration
|
|
14
13
|
|
|
15
14
|
## Installation
|
|
16
15
|
|
|
17
16
|
```bash
|
|
18
|
-
npm install @
|
|
17
|
+
npm install @ackplus/nest-dynamic-templates
|
|
18
|
+
# or
|
|
19
|
+
yarn add @ackplus/nest-dynamic-templates
|
|
19
20
|
```
|
|
20
21
|
|
|
21
|
-
##
|
|
22
|
+
## Usage
|
|
22
23
|
|
|
23
|
-
1
|
|
24
|
+
### Option 1: Basic Usage (No Configuration Required)
|
|
24
25
|
|
|
25
26
|
```typescript
|
|
26
27
|
import { Module } from '@nestjs/common';
|
|
27
|
-
import {
|
|
28
|
-
import { NestDynamicTemplatesModule } from '@nestjs/dynamic-templates';
|
|
28
|
+
import { NestDynamicTemplatesModule } from '@ackplus/nest-dynamic-templates';
|
|
29
29
|
|
|
30
30
|
@Module({
|
|
31
31
|
imports: [
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
NestDynamicTemplatesModule, // Provides basic services with default configuration
|
|
33
|
+
],
|
|
34
|
+
})
|
|
35
|
+
export class AppModule {}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Option 2: Using forFeature() (Explicit Basic Usage)
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { Module } from '@nestjs/common';
|
|
42
|
+
import { NestDynamicTemplatesModule } from '@ackplus/nest-dynamic-templates';
|
|
43
|
+
|
|
44
|
+
@Module({
|
|
45
|
+
imports: [
|
|
46
|
+
NestDynamicTemplatesModule.forFeature(), // Explicitly import basic services
|
|
47
|
+
],
|
|
48
|
+
})
|
|
49
|
+
export class AppModule {}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Option 3: Using forRoot() (With Configuration)
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
import { Module } from '@nestjs/common';
|
|
56
|
+
import { NestDynamicTemplatesModule, TemplateEngineEnum, TemplateLanguageEnum } from '@ackplus/nest-dynamic-templates';
|
|
57
|
+
|
|
58
|
+
@Module({
|
|
59
|
+
imports: [
|
|
60
|
+
NestDynamicTemplatesModule.forRoot({
|
|
61
|
+
isGlobal: true,
|
|
62
|
+
engines: {
|
|
63
|
+
template: [TemplateEngineEnum.NUNJUCKS, TemplateEngineEnum.HANDLEBARS],
|
|
64
|
+
language: [TemplateLanguageEnum.HTML, TemplateLanguageEnum.MJML],
|
|
65
|
+
},
|
|
66
|
+
enginesOptions: {
|
|
67
|
+
filters: {
|
|
68
|
+
uppercase: (str) => str.toUpperCase(),
|
|
69
|
+
reverse: (str) => str.split('').reverse().join(''),
|
|
70
|
+
},
|
|
71
|
+
template: {
|
|
72
|
+
[TemplateEngineEnum.NUNJUCKS]: {
|
|
73
|
+
autoescape: true,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
],
|
|
79
|
+
})
|
|
80
|
+
export class AppModule {}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Option 4: Using forRootAsync() (Async Configuration)
|
|
84
|
+
|
|
85
|
+
#### With useFactory
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { Module } from '@nestjs/common';
|
|
89
|
+
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
90
|
+
import { NestDynamicTemplatesModule } from '@ackplus/nest-dynamic-templates';
|
|
91
|
+
|
|
92
|
+
@Module({
|
|
93
|
+
imports: [
|
|
94
|
+
ConfigModule.forRoot(),
|
|
95
|
+
NestDynamicTemplatesModule.forRootAsync({
|
|
96
|
+
imports: [ConfigModule],
|
|
97
|
+
useFactory: async (configService: ConfigService) => ({
|
|
98
|
+
isGlobal: true,
|
|
99
|
+
engines: {
|
|
100
|
+
template: configService.get('TEMPLATE_ENGINES')?.split(',') || ['nunjucks'],
|
|
101
|
+
language: configService.get('LANGUAGE_ENGINES')?.split(',') || ['html'],
|
|
102
|
+
},
|
|
103
|
+
}),
|
|
104
|
+
inject: [ConfigService],
|
|
34
105
|
}),
|
|
35
|
-
|
|
36
|
-
]
|
|
106
|
+
],
|
|
37
107
|
})
|
|
38
108
|
export class AppModule {}
|
|
39
109
|
```
|
|
40
110
|
|
|
41
|
-
|
|
111
|
+
#### With useClass
|
|
42
112
|
|
|
43
113
|
```typescript
|
|
44
114
|
import { Injectable } from '@nestjs/common';
|
|
45
|
-
import {
|
|
46
|
-
|
|
115
|
+
import {
|
|
116
|
+
NestDynamicTemplatesModuleOptionsFactory,
|
|
117
|
+
NestDynamicTemplatesModuleConfig,
|
|
118
|
+
TemplateEngineEnum,
|
|
119
|
+
TemplateLanguageEnum
|
|
120
|
+
} from '@ackplus/nest-dynamic-templates';
|
|
121
|
+
|
|
122
|
+
@Injectable()
|
|
123
|
+
export class TemplatesConfigService implements NestDynamicTemplatesModuleOptionsFactory {
|
|
124
|
+
createNestDynamicTemplatesModuleOptions(): NestDynamicTemplatesModuleConfig {
|
|
125
|
+
return {
|
|
126
|
+
isGlobal: true,
|
|
127
|
+
engines: {
|
|
128
|
+
template: [TemplateEngineEnum.NUNJUCKS],
|
|
129
|
+
language: [TemplateLanguageEnum.HTML, TemplateLanguageEnum.MJML],
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@Module({
|
|
136
|
+
imports: [
|
|
137
|
+
NestDynamicTemplatesModule.forRootAsync({
|
|
138
|
+
useClass: TemplatesConfigService,
|
|
139
|
+
}),
|
|
140
|
+
],
|
|
141
|
+
providers: [TemplatesConfigService],
|
|
142
|
+
})
|
|
143
|
+
export class AppModule {}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Using the Services
|
|
147
|
+
|
|
148
|
+
Once imported, you can inject and use the template services:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { Injectable } from '@nestjs/common';
|
|
152
|
+
import { TemplateService, TemplateLayoutService } from '@ackplus/nest-dynamic-templates';
|
|
47
153
|
|
|
48
154
|
@Injectable()
|
|
49
155
|
export class EmailService {
|
|
50
|
-
constructor(
|
|
156
|
+
constructor(
|
|
157
|
+
private readonly templateService: TemplateService,
|
|
158
|
+
private readonly templateLayoutService: TemplateLayoutService,
|
|
159
|
+
) {}
|
|
51
160
|
|
|
52
161
|
async sendWelcomeEmail(user: any) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
name: 'welcome',
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
162
|
+
// Create a template
|
|
163
|
+
const template = await this.templateService.createTemplate({
|
|
164
|
+
name: 'welcome-email',
|
|
165
|
+
displayName: 'Welcome Email',
|
|
166
|
+
engine: 'nunjucks',
|
|
167
|
+
language: 'html',
|
|
168
|
+
subject: 'Welcome {{ user.name }}!',
|
|
169
|
+
content: '<h1>Hello {{ user.name }}</h1><p>Welcome to our platform!</p>',
|
|
170
|
+
scope: 'system',
|
|
171
|
+
locale: 'en',
|
|
63
172
|
});
|
|
64
173
|
|
|
65
|
-
//
|
|
66
|
-
await this.
|
|
67
|
-
|
|
68
|
-
subject: result.subject,
|
|
69
|
-
html: result.content
|
|
174
|
+
// Render the template
|
|
175
|
+
const rendered = await this.templateService.renderTemplate('welcome-email', {
|
|
176
|
+
user: { name: user.name },
|
|
70
177
|
});
|
|
178
|
+
|
|
179
|
+
console.log('Rendered email:', rendered);
|
|
180
|
+
// Send email using your preferred email service
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async createEmailLayout() {
|
|
184
|
+
// Create a layout
|
|
185
|
+
const layout = await this.templateLayoutService.createTemplateLayout({
|
|
186
|
+
name: 'email-layout',
|
|
187
|
+
displayName: 'Email Layout',
|
|
188
|
+
engine: 'nunjucks',
|
|
189
|
+
language: 'html',
|
|
190
|
+
content: `
|
|
191
|
+
<!DOCTYPE html>
|
|
192
|
+
<html>
|
|
193
|
+
<head><title>{{ subject }}</title></head>
|
|
194
|
+
<body>
|
|
195
|
+
<header>Our Company</header>
|
|
196
|
+
<main>{{ content | safe }}</main>
|
|
197
|
+
<footer>© 2024 Our Company</footer>
|
|
198
|
+
</body>
|
|
199
|
+
</html>
|
|
200
|
+
`,
|
|
201
|
+
scope: 'system',
|
|
202
|
+
locale: 'en',
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
return layout;
|
|
71
206
|
}
|
|
72
207
|
}
|
|
73
208
|
```
|
|
74
209
|
|
|
75
|
-
##
|
|
210
|
+
## Configuration Options
|
|
76
211
|
|
|
77
|
-
|
|
212
|
+
### NestDynamicTemplatesModuleConfig
|
|
78
213
|
|
|
79
214
|
```typescript
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
</mj-text>
|
|
93
|
-
</mj-column>
|
|
94
|
-
</mj-section>
|
|
95
|
-
</mj-body>
|
|
96
|
-
</mjml>
|
|
97
|
-
`,
|
|
98
|
-
subject: 'Welcome to {{ appName }}',
|
|
99
|
-
scope: 'user',
|
|
100
|
-
scopeId: '123',
|
|
101
|
-
locale: 'en'
|
|
102
|
-
});
|
|
215
|
+
interface NestDynamicTemplatesModuleConfig {
|
|
216
|
+
isGlobal?: boolean; // Make module global
|
|
217
|
+
engines?: {
|
|
218
|
+
template?: TemplateEngineEnum[]; // Enabled template engines
|
|
219
|
+
language?: TemplateLanguageEnum[]; // Enabled language engines
|
|
220
|
+
};
|
|
221
|
+
enginesOptions?: {
|
|
222
|
+
filters?: Record<string, Function>; // Custom filters
|
|
223
|
+
template?: Partial<Record<TemplateEngineEnum, any>>; // Engine-specific options
|
|
224
|
+
language?: Partial<Record<TemplateLanguageEnum, any>>; // Language-specific options
|
|
225
|
+
};
|
|
226
|
+
}
|
|
103
227
|
```
|
|
104
228
|
|
|
105
|
-
|
|
229
|
+
### Supported Engines
|
|
106
230
|
|
|
107
|
-
|
|
231
|
+
#### Template Engines
|
|
232
|
+
- `nunjucks` - Nunjucks templating
|
|
233
|
+
- `handlebars` - Handlebars templating
|
|
234
|
+
- `ejs` - EJS templating
|
|
235
|
+
- `pug` - Pug templating
|
|
108
236
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
content: `
|
|
115
|
-
<mjml>
|
|
116
|
-
<mj-head>
|
|
117
|
-
<mj-title>{{ title }}</mj-title>
|
|
118
|
-
</mj-head>
|
|
119
|
-
<mj-body>
|
|
120
|
-
<mj-section>
|
|
121
|
-
<mj-column>
|
|
122
|
-
<mj-text>
|
|
123
|
-
{{ content }}
|
|
124
|
-
</mj-text>
|
|
125
|
-
</mj-column>
|
|
126
|
-
</mj-section>
|
|
127
|
-
</mj-body>
|
|
128
|
-
</mjml>
|
|
129
|
-
`,
|
|
130
|
-
scope: 'system'
|
|
131
|
-
});
|
|
132
|
-
```
|
|
237
|
+
#### Language Engines
|
|
238
|
+
- `html` - HTML output
|
|
239
|
+
- `mjml` - MJML email templates
|
|
240
|
+
- `markdown` - Markdown output
|
|
241
|
+
- `text` - Plain text output
|
|
133
242
|
|
|
134
|
-
|
|
243
|
+
## Benefits of Each Approach
|
|
135
244
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
245
|
+
### Basic Usage (`NestDynamicTemplatesModule`)
|
|
246
|
+
- ✅ **Zero configuration** - Works out of the box
|
|
247
|
+
- ✅ **Quick setup** - Just import and use
|
|
248
|
+
- ✅ **Default engines** - Nunjucks + HTML/MJML/Text
|
|
249
|
+
- ❌ **Limited customization** - No custom filters or options
|
|
250
|
+
|
|
251
|
+
### forFeature()
|
|
252
|
+
- ✅ **Explicit** - Clear intent for basic usage
|
|
253
|
+
- ✅ **Same as basic** - All benefits of basic usage
|
|
254
|
+
- ✅ **Consistent API** - Matches other NestJS modules
|
|
255
|
+
|
|
256
|
+
### forRoot()
|
|
257
|
+
- ✅ **Full configuration** - Complete control over engines and options
|
|
258
|
+
- ✅ **Custom filters** - Add your own template filters
|
|
259
|
+
- ✅ **Engine options** - Configure individual engines
|
|
260
|
+
- ✅ **Global module** - Available throughout the app
|
|
150
261
|
|
|
151
|
-
|
|
262
|
+
### forRootAsync()
|
|
263
|
+
- ✅ **Dynamic configuration** - Load config from external sources
|
|
264
|
+
- ✅ **Dependency injection** - Use other services for configuration
|
|
265
|
+
- ✅ **Environment-based** - Different configs for different environments
|
|
266
|
+
- ✅ **Factory pattern** - Clean separation of configuration logic
|
|
152
267
|
|
|
153
|
-
|
|
268
|
+
## Migration Guide
|
|
154
269
|
|
|
155
|
-
|
|
156
|
-
- `createTemplate(data: CreateTemplateDto): Promise<NestDynamicTemplate>`
|
|
157
|
-
- `updateTemplate(data: UpdateTemplateDto): Promise<NestDynamicTemplate>`
|
|
158
|
-
- `deleteTemplate(id: string): Promise<void>`
|
|
159
|
-
- `findTemplate(id: string): Promise<NestDynamicTemplate>`
|
|
160
|
-
- `findTemplates(type?: TemplateTypeEnum, scope?: string, scopeId?: string, locale?: string): Promise<NestDynamicTemplate[]>`
|
|
270
|
+
If you're upgrading from a previous version:
|
|
161
271
|
|
|
162
|
-
###
|
|
272
|
+
### Before
|
|
273
|
+
```typescript
|
|
274
|
+
// Only forRoot was available
|
|
275
|
+
NestDynamicTemplatesModule.forRoot(config)
|
|
276
|
+
```
|
|
163
277
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
278
|
+
### After
|
|
279
|
+
```typescript
|
|
280
|
+
// Multiple options now available
|
|
281
|
+
NestDynamicTemplatesModule // Basic usage
|
|
282
|
+
NestDynamicTemplatesModule.forFeature() // Explicit basic usage
|
|
283
|
+
NestDynamicTemplatesModule.forRoot(config) // With configuration
|
|
284
|
+
NestDynamicTemplatesModule.forRootAsync(...) // Async configuration
|
|
285
|
+
```
|
|
170
286
|
|
|
171
287
|
## License
|
|
172
288
|
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { NestDynamicTemplateLayout } from './lib/entities/template-layout.entity
|
|
|
2
2
|
export * from './lib/nest-dynamic-templates.module';
|
|
3
3
|
export * from './lib/services/template.service';
|
|
4
4
|
export * from './lib/services/template-layout.service';
|
|
5
|
+
export * from './lib/services/template-config.service';
|
|
5
6
|
export * from './lib/interfaces/module-config.interface';
|
|
6
7
|
export * from './lib/interfaces/template.types';
|
|
7
8
|
export * from './lib/dto/create-template.dto';
|
package/src/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const template_entity_1 = require("./lib/entities/template.entity");
|
|
|
7
7
|
tslib_1.__exportStar(require("./lib/nest-dynamic-templates.module"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./lib/services/template.service"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./lib/services/template-layout.service"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./lib/services/template-config.service"), exports);
|
|
10
11
|
tslib_1.__exportStar(require("./lib/interfaces/module-config.interface"), exports);
|
|
11
12
|
tslib_1.__exportStar(require("./lib/interfaces/template.types"), exports);
|
|
12
13
|
tslib_1.__exportStar(require("./lib/dto/create-template.dto"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nest-dynamic-templates/src/index.ts"],"names":[],"mappings":";;;;AAAA,kFAAkF;AAClF,oEAAqE;AAErE,8EAAoD;AAGpD,0EAAgD;AAChD,iFAAuD;AAGvD,mFAAyD;AACzD,0EAAgD;AAGhD,wEAA8C;AAC9C,wEAA8C;AAC9C,wEAA8C;AAC9C,+EAAqD;AACrD,+EAAqD;AACrD,+EAAqD;AAGxC,QAAA,4BAA4B,GAAG;IACxC,qCAAmB;IACnB,kDAAyB;CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nest-dynamic-templates/src/index.ts"],"names":[],"mappings":";;;;AAAA,kFAAkF;AAClF,oEAAqE;AAErE,8EAAoD;AAGpD,0EAAgD;AAChD,iFAAuD;AACvD,iFAAuD;AAGvD,mFAAyD;AACzD,0EAAgD;AAGhD,wEAA8C;AAC9C,wEAA8C;AAC9C,wEAA8C;AAC9C,+EAAqD;AACrD,+EAAqD;AACrD,+EAAqD;AAGxC,QAAA,4BAA4B,GAAG;IACxC,qCAAmB;IACnB,kDAAyB;CAC5B,CAAC"}
|
package/src/lib/constant.d.ts
CHANGED
package/src/lib/constant.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NEST_DYNAMIC_TEMPLATES_MODULE_CONFIG = void 0;
|
|
3
|
+
exports.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER = exports.NEST_DYNAMIC_TEMPLATES_MODULE_CONFIG = void 0;
|
|
4
4
|
exports.NEST_DYNAMIC_TEMPLATES_MODULE_CONFIG = Symbol('NEST_DYNAMIC_TEMPLATES_MODULE_CONFIG');
|
|
5
|
+
exports.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER = 'NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER';
|
|
5
6
|
//# sourceMappingURL=constant.js.map
|
package/src/lib/constant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/lib/constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/lib/constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAC;AACtF,QAAA,6CAA6C,GAAG,+CAA+C,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TemplateEngineEnum, TemplateLanguageEnum } from './template.types';
|
|
2
|
+
import { ModuleMetadata, Type } from '@nestjs/common';
|
|
2
3
|
export interface EngineConfig {
|
|
3
4
|
enabled: boolean;
|
|
4
5
|
options?: Record<string, any>;
|
|
@@ -23,3 +24,13 @@ export interface NestDynamicTemplatesModuleConfig {
|
|
|
23
24
|
language?: TemplateLanguageEnum[];
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
export interface NestDynamicTemplatesModuleOptionsFactory {
|
|
28
|
+
createNestDynamicTemplatesModuleOptions(): Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
|
|
29
|
+
}
|
|
30
|
+
export interface NestDynamicTemplatesModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
31
|
+
isGlobal?: boolean;
|
|
32
|
+
useExisting?: Type<NestDynamicTemplatesModuleOptionsFactory>;
|
|
33
|
+
useClass?: Type<NestDynamicTemplatesModuleOptionsFactory>;
|
|
34
|
+
useFactory?: (...args: any[]) => Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
|
|
35
|
+
inject?: any[];
|
|
36
|
+
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import { NestDynamicTemplatesModuleConfig } from './interfaces/module-config.interface';
|
|
2
|
+
import { NestDynamicTemplatesModuleConfig, NestDynamicTemplatesModuleAsyncOptions } from './interfaces/module-config.interface';
|
|
3
3
|
export declare class NestDynamicTemplatesModule {
|
|
4
|
+
static moduleDefaultOptions: Partial<NestDynamicTemplatesModuleConfig>;
|
|
4
5
|
static forRoot(config?: NestDynamicTemplatesModuleConfig): DynamicModule;
|
|
6
|
+
static forRootAsync(options: NestDynamicTemplatesModuleAsyncOptions): DynamicModule;
|
|
7
|
+
private static createAsyncProviders;
|
|
8
|
+
private static createAsyncOptionsProvider;
|
|
9
|
+
private static getOptions;
|
|
5
10
|
}
|
|
@@ -11,6 +11,7 @@ const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
|
|
|
11
11
|
const template_engine_registry_1 = require("./services/template-engine.registry");
|
|
12
12
|
const template_layout_service_1 = require("./services/template-layout.service");
|
|
13
13
|
const template_service_1 = require("./services/template.service");
|
|
14
|
+
const template_config_service_1 = require("./services/template-config.service");
|
|
14
15
|
const constant_1 = require("./constant");
|
|
15
16
|
const template_types_1 = require("./interfaces/template.types");
|
|
16
17
|
const template_types_2 = require("./interfaces/template.types");
|
|
@@ -22,30 +23,109 @@ const defaultConfig = {
|
|
|
22
23
|
};
|
|
23
24
|
let NestDynamicTemplatesModule = NestDynamicTemplatesModule_1 = class NestDynamicTemplatesModule {
|
|
24
25
|
static forRoot(config = {}) {
|
|
25
|
-
const mergedConfig =
|
|
26
|
+
const mergedConfig = this.getOptions(config);
|
|
27
|
+
template_config_service_1.TemplateConfigService.setOptions(mergedConfig);
|
|
26
28
|
return {
|
|
27
29
|
module: NestDynamicTemplatesModule_1,
|
|
28
|
-
global:
|
|
30
|
+
global: mergedConfig.isGlobal,
|
|
31
|
+
imports: [
|
|
32
|
+
typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout]),
|
|
33
|
+
],
|
|
29
34
|
providers: [
|
|
30
|
-
|
|
31
|
-
provide: constant_1.NEST_DYNAMIC_TEMPLATES_MODULE_CONFIG,
|
|
32
|
-
useValue: mergedConfig,
|
|
33
|
-
},
|
|
35
|
+
template_config_service_1.TemplateConfigService,
|
|
34
36
|
template_engine_registry_1.TemplateEngineRegistryService,
|
|
35
37
|
template_layout_service_1.TemplateLayoutService,
|
|
36
38
|
template_service_1.TemplateService,
|
|
37
39
|
],
|
|
38
40
|
exports: [
|
|
41
|
+
template_config_service_1.TemplateConfigService,
|
|
39
42
|
template_service_1.TemplateService,
|
|
40
43
|
template_layout_service_1.TemplateLayoutService,
|
|
41
44
|
],
|
|
42
45
|
};
|
|
43
46
|
}
|
|
47
|
+
static forRootAsync(options) {
|
|
48
|
+
const asyncProviders = this.createAsyncProviders(options);
|
|
49
|
+
return {
|
|
50
|
+
module: NestDynamicTemplatesModule_1,
|
|
51
|
+
global: options.isGlobal,
|
|
52
|
+
imports: [
|
|
53
|
+
typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout]),
|
|
54
|
+
...(options.imports || []),
|
|
55
|
+
],
|
|
56
|
+
providers: [
|
|
57
|
+
...asyncProviders,
|
|
58
|
+
template_config_service_1.TemplateConfigService,
|
|
59
|
+
template_engine_registry_1.TemplateEngineRegistryService,
|
|
60
|
+
template_layout_service_1.TemplateLayoutService,
|
|
61
|
+
template_service_1.TemplateService,
|
|
62
|
+
],
|
|
63
|
+
exports: [
|
|
64
|
+
template_config_service_1.TemplateConfigService,
|
|
65
|
+
template_service_1.TemplateService,
|
|
66
|
+
template_layout_service_1.TemplateLayoutService,
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
static createAsyncProviders(options) {
|
|
71
|
+
if (options.useExisting || options.useFactory) {
|
|
72
|
+
return [this.createAsyncOptionsProvider(options)];
|
|
73
|
+
}
|
|
74
|
+
if (options.useClass) {
|
|
75
|
+
return [
|
|
76
|
+
this.createAsyncOptionsProvider(options),
|
|
77
|
+
{
|
|
78
|
+
provide: options.useClass,
|
|
79
|
+
useClass: options.useClass,
|
|
80
|
+
},
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
static createAsyncOptionsProvider(options) {
|
|
86
|
+
if (options.useFactory) {
|
|
87
|
+
return {
|
|
88
|
+
provide: constant_1.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
|
|
89
|
+
useFactory: async (...args) => {
|
|
90
|
+
const userOptions = await options.useFactory(...args);
|
|
91
|
+
const mergedOptions = this.getOptions(userOptions);
|
|
92
|
+
template_config_service_1.TemplateConfigService.setOptions(mergedOptions);
|
|
93
|
+
return mergedOptions;
|
|
94
|
+
},
|
|
95
|
+
inject: options.inject || [],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
provide: constant_1.NEST_DYNAMIC_TEMPLATES_ASYNC_OPTIONS_PROVIDER,
|
|
100
|
+
useFactory: async (optionsFactory) => {
|
|
101
|
+
const userOptions = await optionsFactory.createNestDynamicTemplatesModuleOptions();
|
|
102
|
+
const mergedOptions = this.getOptions(userOptions);
|
|
103
|
+
template_config_service_1.TemplateConfigService.setOptions(mergedOptions);
|
|
104
|
+
return mergedOptions;
|
|
105
|
+
},
|
|
106
|
+
inject: [options.useExisting || options.useClass],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
static getOptions(options) {
|
|
110
|
+
return (0, deepmerge_1.default)(this.moduleDefaultOptions, options);
|
|
111
|
+
}
|
|
44
112
|
};
|
|
45
113
|
exports.NestDynamicTemplatesModule = NestDynamicTemplatesModule;
|
|
114
|
+
NestDynamicTemplatesModule.moduleDefaultOptions = defaultConfig;
|
|
46
115
|
exports.NestDynamicTemplatesModule = NestDynamicTemplatesModule = NestDynamicTemplatesModule_1 = tslib_1.__decorate([
|
|
47
116
|
(0, common_1.Module)({
|
|
48
117
|
imports: [typeorm_1.TypeOrmModule.forFeature([template_entity_1.NestDynamicTemplate, template_layout_entity_1.NestDynamicTemplateLayout])],
|
|
118
|
+
providers: [
|
|
119
|
+
template_config_service_1.TemplateConfigService,
|
|
120
|
+
template_engine_registry_1.TemplateEngineRegistryService,
|
|
121
|
+
template_layout_service_1.TemplateLayoutService,
|
|
122
|
+
template_service_1.TemplateService,
|
|
123
|
+
],
|
|
124
|
+
exports: [
|
|
125
|
+
template_config_service_1.TemplateConfigService,
|
|
126
|
+
template_service_1.TemplateService,
|
|
127
|
+
template_layout_service_1.TemplateLayoutService,
|
|
128
|
+
],
|
|
49
129
|
})
|
|
50
130
|
], NestDynamicTemplatesModule);
|
|
51
131
|
//# sourceMappingURL=nest-dynamic-templates.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-dynamic-templates.module.js","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/lib/nest-dynamic-templates.module.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"nest-dynamic-templates.module.js","sourceRoot":"","sources":["../../../../../packages/nest-dynamic-templates/src/lib/nest-dynamic-templates.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
static setOptions(config: NestDynamicTemplatesModuleConfig): void;
|
|
7
|
+
static getOptions(): NestDynamicTemplatesModuleConfig;
|
|
8
|
+
static hasConfig(): boolean;
|
|
9
|
+
static reset(): void;
|
|
10
|
+
static get<K extends keyof NestDynamicTemplatesModuleConfig>(key: K): NestDynamicTemplatesModuleConfig[K];
|
|
11
|
+
static isTemplateEngineEnabled(engine: TemplateEngineEnum): boolean;
|
|
12
|
+
static isLanguageEngineEnabled(language: TemplateLanguageEnum): boolean;
|
|
13
|
+
static getEnabledTemplateEngines(): TemplateEngineEnum[];
|
|
14
|
+
static getEnabledLanguageEngines(): TemplateLanguageEnum[];
|
|
15
|
+
static getTemplateEngineOptions(engine: TemplateEngineEnum): any;
|
|
16
|
+
static getLanguageEngineOptions(language: TemplateLanguageEnum): any;
|
|
17
|
+
static getCustomFilters(): Record<string, Function>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
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 {
|
|
8
|
+
static setOptions(config) {
|
|
9
|
+
this.config = { ...this.defaultConfig, ...config };
|
|
10
|
+
}
|
|
11
|
+
static getOptions() {
|
|
12
|
+
if (!this.config) {
|
|
13
|
+
return this.defaultConfig;
|
|
14
|
+
}
|
|
15
|
+
return this.config;
|
|
16
|
+
}
|
|
17
|
+
static hasConfig() {
|
|
18
|
+
return !!this.config;
|
|
19
|
+
}
|
|
20
|
+
static reset() {
|
|
21
|
+
this.config = { ...this.defaultConfig };
|
|
22
|
+
}
|
|
23
|
+
static get(key) {
|
|
24
|
+
const config = this.getOptions();
|
|
25
|
+
return config[key];
|
|
26
|
+
}
|
|
27
|
+
static isTemplateEngineEnabled(engine) {
|
|
28
|
+
const config = this.getOptions();
|
|
29
|
+
return config.engines?.template?.includes(engine) ?? false;
|
|
30
|
+
}
|
|
31
|
+
static isLanguageEngineEnabled(language) {
|
|
32
|
+
const config = this.getOptions();
|
|
33
|
+
return config.engines?.language?.includes(language) ?? false;
|
|
34
|
+
}
|
|
35
|
+
static getEnabledTemplateEngines() {
|
|
36
|
+
const config = this.getOptions();
|
|
37
|
+
return config.engines?.template ?? this.defaultConfig.engines.template;
|
|
38
|
+
}
|
|
39
|
+
static getEnabledLanguageEngines() {
|
|
40
|
+
const config = this.getOptions();
|
|
41
|
+
return config.engines?.language ?? this.defaultConfig.engines.language;
|
|
42
|
+
}
|
|
43
|
+
static getTemplateEngineOptions(engine) {
|
|
44
|
+
const config = this.getOptions();
|
|
45
|
+
return config.enginesOptions?.template?.[engine];
|
|
46
|
+
}
|
|
47
|
+
static getLanguageEngineOptions(language) {
|
|
48
|
+
const config = this.getOptions();
|
|
49
|
+
return config.enginesOptions?.language?.[language];
|
|
50
|
+
}
|
|
51
|
+
static getCustomFilters() {
|
|
52
|
+
const config = this.getOptions();
|
|
53
|
+
return config.enginesOptions?.filters ?? {};
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.TemplateConfigService = TemplateConfigService;
|
|
57
|
+
TemplateConfigService.defaultConfig = {
|
|
58
|
+
engines: {
|
|
59
|
+
template: [template_types_1.TemplateEngineEnum.NUNJUCKS],
|
|
60
|
+
language: [template_types_1.TemplateLanguageEnum.HTML, template_types_1.TemplateLanguageEnum.MJML, template_types_1.TemplateLanguageEnum.TEXT]
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.TemplateConfigService = TemplateConfigService = tslib_1.__decorate([
|
|
64
|
+
(0, common_1.Injectable)()
|
|
65
|
+
], TemplateConfigService);
|
|
66
|
+
//# sourceMappingURL=template-config.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-config.service.js","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-config.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAE5C,iEAAwF;AAGjF,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAa9B,MAAM,CAAC,UAAU,CAAC,MAAwC;QACtD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IACvD,CAAC;IAKD,MAAM,CAAC,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAKD,MAAM,CAAC,SAAS;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB,CAAC;IAKD,MAAM,CAAC,KAAK;QACR,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC;IAKD,MAAM,CAAC,GAAG,CACN,GAAM;QAEN,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAKD,MAAM,CAAC,uBAAuB,CAAC,MAA0B;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IAC/D,CAAC;IAKD,MAAM,CAAC,uBAAuB,CAAC,QAA8B;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IACjE,CAAC;IAKD,MAAM,CAAC,yBAAyB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,QAAS,CAAC;IAC7E,CAAC;IAKD,MAAM,CAAC,yBAAyB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,QAAS,CAAC;IAC7E,CAAC;IAKD,MAAM,CAAC,wBAAwB,CAAC,MAA0B;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAKD,MAAM,CAAC,wBAAwB,CAAC,QAA8B;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAKD,MAAM,CAAC,gBAAgB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;IAChD,CAAC;;AAzGQ,sDAAqB;AAGN,mCAAa,GAAqC;IACtE,OAAO,EAAE;QACL,QAAQ,EAAE,CAAC,mCAAkB,CAAC,QAAQ,CAAC;QACvC,QAAQ,EAAE,CAAC,qCAAoB,CAAC,IAAI,EAAE,qCAAoB,CAAC,IAAI,EAAE,qCAAoB,CAAC,IAAI,CAAC;KAC9F;CACJ,AALoC,CAKnC;gCARO,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CA0GjC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { TemplateEngineEnum, TemplateLanguageEnum } from '../interfaces/template.types';
|
|
2
|
-
import { NestDynamicTemplatesModuleConfig } from '../interfaces/module-config.interface';
|
|
3
2
|
import { TemplateEngine } from '../engines/template-engine';
|
|
4
3
|
import { LanguageEngine } from '../engines/language-engine';
|
|
5
4
|
type ClassType<T> = new (...args: any[]) => T;
|
|
6
5
|
export declare class TemplateEngineRegistryService {
|
|
7
|
-
private config;
|
|
8
6
|
private templateEngines;
|
|
9
7
|
private languageEngines;
|
|
10
|
-
|
|
8
|
+
private config;
|
|
9
|
+
constructor();
|
|
11
10
|
registerTemplateEngines(engineClasses: ClassType<TemplateEngine>[]): void;
|
|
12
11
|
registerTemplateEngine(format: TemplateEngineEnum, engine: TemplateEngine): void;
|
|
13
12
|
registerLanguageEngine(format: TemplateLanguageEnum, engine: LanguageEngine): void;
|
|
@@ -10,12 +10,12 @@ const language_1 = require("../engines/language");
|
|
|
10
10
|
const ejs_engine_1 = require("../engines/template/ejs.engine");
|
|
11
11
|
const handlebars_engine_1 = require("../engines/template/handlebars.engine");
|
|
12
12
|
const pug_engine_1 = require("../engines/template/pug.engine");
|
|
13
|
-
const
|
|
13
|
+
const template_config_service_1 = require("./template-config.service");
|
|
14
14
|
let TemplateEngineRegistryService = class TemplateEngineRegistryService {
|
|
15
|
-
constructor(
|
|
16
|
-
this.config = config;
|
|
15
|
+
constructor() {
|
|
17
16
|
this.templateEngines = new Map();
|
|
18
17
|
this.languageEngines = new Map();
|
|
18
|
+
this.config = template_config_service_1.TemplateConfigService.getOptions();
|
|
19
19
|
this.registerTemplateEngines([
|
|
20
20
|
nunjucks_engine_1.NunjucksEngine,
|
|
21
21
|
handlebars_engine_1.HandlebarsEngine,
|
|
@@ -88,7 +88,6 @@ let TemplateEngineRegistryService = class TemplateEngineRegistryService {
|
|
|
88
88
|
exports.TemplateEngineRegistryService = TemplateEngineRegistryService;
|
|
89
89
|
exports.TemplateEngineRegistryService = TemplateEngineRegistryService = tslib_1.__decorate([
|
|
90
90
|
(0, common_1.Injectable)(),
|
|
91
|
-
tslib_1.
|
|
92
|
-
tslib_1.__metadata("design:paramtypes", [Object])
|
|
91
|
+
tslib_1.__metadata("design:paramtypes", [])
|
|
93
92
|
], TemplateEngineRegistryService);
|
|
94
93
|
//# sourceMappingURL=template-engine.registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.registry.js","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-engine.registry.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"template-engine.registry.js","sourceRoot":"","sources":["../../../../../../packages/nest-dynamic-templates/src/lib/services/template-engine.registry.ts"],"names":[],"mappings":"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"}
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"5.
|
|
1
|
+
{"version":"5.8.3"}
|