@memberjunction/templates 4.0.0 → 4.1.0

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 CHANGED
@@ -1,17 +1,57 @@
1
1
  # @memberjunction/templates
2
2
 
3
- The `@memberjunction/templates` library provides a powerful templating engine built on Nunjucks with MemberJunction-specific extensions for dynamic content generation, AI-powered prompts, and recursive template embedding.
3
+ Server-side template rendering engine for MemberJunction, built on Nunjucks. Extends `TemplateEngineBase` with rendering capabilities, custom filters, and MJ-specific extensions for AI prompt integration and recursive template embedding.
4
+
5
+ ## Architecture
6
+
7
+ ```mermaid
8
+ graph TD
9
+ subgraph "@memberjunction/templates"
10
+ A[TemplateEngineServer] --> B[Nunjucks Environment]
11
+ A --> C[Template Cache]
12
+ A --> D[TemplateEntityLoader]
13
+ B --> E[Custom Filters]
14
+ B --> F[Extensions]
15
+ F --> G[AIPrompt Extension]
16
+ F --> H[TemplateEmbed Extension]
17
+ end
18
+
19
+ subgraph "Base Layer"
20
+ I["TemplateEngineBase<br/>(from base-types)"]
21
+ end
22
+
23
+ A -->|extends| I
24
+
25
+ subgraph "Rendering"
26
+ J[Template Entity] --> K[Validation]
27
+ K --> L[Merge Defaults]
28
+ L --> M[Nunjucks Render]
29
+ M --> N[TemplateRenderResult]
30
+ end
31
+
32
+ style A fill:#2d6a9f,stroke:#1a4971,color:#fff
33
+ style B fill:#2d8659,stroke:#1a5c3a,color:#fff
34
+ style C fill:#7c5295,stroke:#563a6b,color:#fff
35
+ style G fill:#b8762f,stroke:#8a5722,color:#fff
36
+ style H fill:#b8762f,stroke:#8a5722,color:#fff
37
+ style I fill:#2d6a9f,stroke:#1a4971,color:#fff
38
+ style N fill:#2d8659,stroke:#1a5c3a,color:#fff
39
+ ```
4
40
 
5
41
  ## Overview
6
42
 
7
- This package serves as the core templating engine for MemberJunction applications, offering:
43
+ This package is the **server-side rendering engine** for MemberJunction templates. It is NOT used within Angular applications despite using Angular Universal internally for compilation.
44
+
45
+ **Key capabilities:**
8
46
 
9
- - **Nunjucks-based templating** with full syntax support
10
- - **Template management** with metadata integration
11
- - **Custom extensions** for AI prompts and template embedding
12
- - **Type-safe interfaces** for template rendering
13
- - **Caching and performance optimization**
14
- - **Async rendering support**
47
+ - **Nunjucks Rendering**: Full Nunjucks template syntax with async support
48
+ - **Parameter Validation**: Validates input data against template parameter definitions before rendering
49
+ - **Default Value Merging**: Automatically applies parameter defaults with content-specific overrides
50
+ - **Template Caching**: Compiled Nunjucks templates are cached for performance
51
+ - **Custom Filters**: `json`, `jsoninline`, and `jsonparse` filters for JSON manipulation
52
+ - **Extensible**: Plugin system via `TemplateExtensionBase` for custom Nunjucks tags
53
+ - **AI Prompt Extension**: Execute AI prompts inline within templates
54
+ - **Template Embedding**: Recursively embed templates within other templates
15
55
 
16
56
  ## Installation
17
57
 
@@ -19,355 +59,112 @@ This package serves as the core templating engine for MemberJunction application
19
59
  npm install @memberjunction/templates
20
60
  ```
21
61
 
22
- ## Key Features
23
-
24
- ### 1. Template Engine
25
-
26
- - Manages template metadata and caching
27
- - Provides both metadata-based and simple rendering APIs
28
- - Integrates with MemberJunction's entity system
29
- - Supports template validation and parameter checking
30
-
31
- ### 2. AI Prompt Extension
32
-
33
- - Embeds AI-generated content directly in templates
34
- - Supports multiple AI models (OpenAI, Groq, etc.)
35
- - Configurable formatting options
36
- - Seamless integration with MemberJunction's AI Engine
37
-
38
- ### 3. Template Embed Extension
39
-
40
- - Recursive template inclusion with cycle detection
41
- - Content type inheritance and fallbacks
42
- - Data context passing and merging
43
- - Error handling for missing templates
44
-
45
62
  ## Usage
46
63
 
47
- ### Basic Template Rendering
64
+ ### Rendering Templates
48
65
 
49
66
  ```typescript
50
67
  import { TemplateEngineServer } from '@memberjunction/templates';
51
- import { UserInfo } from '@memberjunction/core';
52
68
 
53
- // Get the template engine instance
54
- const templateEngine = TemplateEngineServer.Instance;
69
+ const engine = TemplateEngineServer.Instance;
70
+ await engine.Config(false, contextUser);
55
71
 
56
- // Configure the engine (usually done once at startup)
57
- await templateEngine.Config(false, contextUser);
72
+ // Find and render a template
73
+ const template = engine.FindTemplate('Welcome Email');
74
+ const content = template.Content[0]; // First content variant
58
75
 
59
- // Simple rendering without metadata
60
- const result = await templateEngine.RenderTemplateSimple(
61
- 'Hello {{ name }}! Welcome to {{ company }}.',
62
- { name: 'John', company: 'Acme Corp' }
63
- );
76
+ const result = await engine.RenderTemplate(template, content, {
77
+ userName: 'John Doe',
78
+ companyName: 'Acme Corp'
79
+ });
64
80
 
65
81
  if (result.Success) {
66
- console.log(result.Output); // "Hello John! Welcome to Acme Corp."
67
- }
68
- ```
69
-
70
- ### Rendering with Template Metadata
71
-
72
- ```typescript
73
- import { TemplateEngineServer } from '@memberjunction/templates';
74
- import { TemplateContentEntity } from '@memberjunction/core-entities';
75
-
76
- // Assume you have loaded a template entity and its content
77
- const templateEntity = await templateEngine.GetTemplateByName('WelcomeEmail');
78
- const templateContent = templateEntity.GetHighestPriorityContent();
79
-
80
- // Render with validation
81
- const result = await templateEngine.RenderTemplate(
82
- templateEntity,
83
- templateContent,
84
- {
85
- userName: 'John Doe',
86
- accountType: 'Premium',
87
- signupDate: new Date()
88
- },
89
- false // SkipValidation = false
90
- );
91
-
92
- if (!result.Success) {
93
- console.error('Template rendering failed:', result.Message);
82
+ console.log(result.Output); // Rendered HTML/text
83
+ } else {
84
+ console.error(result.Message); // Validation or rendering error
94
85
  }
95
86
  ```
96
87
 
97
- ### Using the AI Prompt Extension
98
-
99
- ```typescript
100
- // In your template:
101
- const templateText = `
102
- Dear {{ userName }},
103
-
104
- {% AIPrompt AIModel="gpt-4", AllowFormatting=false %}
105
- Generate a personalized welcome message for a new {{ accountType }} customer
106
- named {{ userName }} who just signed up for our service. Make it warm and
107
- professional, highlighting the benefits of their account type.
108
- {% endAIPrompt %}
109
-
110
- Best regards,
111
- The Team
112
- `;
113
-
114
- const result = await templateEngine.RenderTemplateSimple(templateText, {
115
- userName: 'Sarah',
116
- accountType: 'Enterprise'
117
- });
118
- ```
119
-
120
- ### Using the Template Embed Extension
121
-
122
- ```typescript
123
- // Main template
124
- const mainTemplate = `
125
- {% template "Header", type="HTML" %}
126
-
127
- <div class="content">
128
- <h1>Welcome {{ user.name }}</h1>
129
- {% template "UserProfile", data={showDetails: true} %}
130
- </div>
131
-
132
- {% template "Footer" %}
133
- `;
134
-
135
- // The embedded templates will be loaded from the template metadata
136
- // and rendered with the appropriate content type and data context
137
- ```
138
-
139
- ## API Reference
140
-
141
- ### TemplateEngineServer
142
-
143
- The main template engine class that handles all template operations.
144
-
145
- #### Methods
146
-
147
- ##### `Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>`
148
-
149
- Configures the template engine and loads template metadata.
150
-
151
- ##### `RenderTemplate(templateEntity: TemplateEntityExtended, templateContent: TemplateContentEntity, data: any, SkipValidation?: boolean): Promise<TemplateRenderResult>`
152
-
153
- Renders a template using metadata entities with optional validation.
154
-
155
- ##### `RenderTemplateSimple(templateText: string, data: any): Promise<TemplateRenderResult>`
156
-
157
- Renders a template string without metadata integration.
158
-
159
- ##### `GetTemplateByName(templateName: string): TemplateEntityExtended | null`
160
-
161
- Retrieves a template entity by its name.
162
-
163
- ##### `GetTemplateByID(templateID: string): TemplateEntityExtended | null`
164
-
165
- Retrieves a template entity by its ID.
166
-
167
- ##### `ClearTemplateCache(): void`
168
-
169
- Clears the internal template cache.
88
+ ### Simple Template Rendering
170
89
 
171
- ### TemplateRenderResult
90
+ For ad-hoc templates not stored in the database:
172
91
 
173
92
  ```typescript
174
- interface TemplateRenderResult {
175
- Success: boolean; // Whether rendering succeeded
176
- Output: string; // The rendered output (null if failed)
177
- Message?: string; // Error message (only when Success=false)
178
- }
179
- ```
180
-
181
- ### Built-in Filters
182
-
183
- The template engine provides several filters for handling complex objects and JSON data:
184
-
185
- #### `dump` (Nunjucks built-in)
186
- Converts any JavaScript object to a formatted JSON string.
187
-
188
- ```nunjucks
189
- {{ myObject | dump }} <!-- Pretty-printed with 2 spaces -->
190
- {{ myObject | dump(4) }} <!-- Pretty-printed with 4 spaces -->
191
- {{ myObject | dump(0) }} <!-- Compact single-line format -->
192
- ```
193
-
194
- #### `json` (Custom filter)
195
- Similar to `dump` but with better error handling. Converts objects to JSON strings.
196
-
197
- ```nunjucks
198
- {{ userData | json }} <!-- Pretty-printed with 2 spaces (default) -->
199
- {{ userData | json(4) }} <!-- Pretty-printed with 4 spaces -->
200
- {{ userData | json(0) }} <!-- Compact format -->
93
+ const result = await engine.RenderTemplateSimple(
94
+ 'Hello {{ name }}, welcome to {{ company }}!',
95
+ { name: 'Jane', company: 'MemberJunction' }
96
+ );
97
+ // result.Output: "Hello Jane, welcome to MemberJunction!"
201
98
  ```
202
99
 
203
- If serialization fails, displays: `[Error serializing to JSON: <error message>]`
100
+ ### Custom Nunjucks Filters
204
101
 
205
- #### `jsoninline` (Custom filter)
206
- Converts objects to compact JSON strings (no formatting).
102
+ The engine provides built-in filters for JSON operations:
207
103
 
208
104
  ```nunjucks
209
- {{ userData | jsoninline }} <!-- Output: {"name":"John","age":30} -->
210
- ```
211
-
212
- #### `jsonparse` (Custom filter)
213
- Parses JSON strings into JavaScript objects. Useful for processing JSON data stored as strings.
214
-
215
- ```nunjucks
216
- {{ '{"name":"John","age":30}' | jsonparse | json }}
217
- <!-- First parses the string to object, then formats it -->
218
-
219
- <!-- Access parsed object properties -->
220
- {{ '{"name":"John","age":30}' | jsonparse | attr("name") }}
221
- <!-- Output: John -->
222
- ```
105
+ {# Convert object to formatted JSON #}
106
+ {{ userData | json }}
223
107
 
224
- #### Example: Handling Complex Objects
108
+ {# Compact JSON output #}
109
+ {{ userData | jsoninline }}
225
110
 
226
- Instead of getting `[object Object]` in your templates:
227
-
228
- ```nunjucks
229
- <!-- Problem: Shows [object Object] -->
230
- <div>User Data: {{ userData }}</div>
231
-
232
- <!-- Solutions: Use filters to display JSON -->
233
- <div>User Data: {{ userData | dump }}</div>
234
- <div>User Data: {{ userData | json }}</div>
235
- <pre>{{ userData | json(2) }}</pre>
236
-
237
- <!-- For debugging: Compact format -->
238
- <script>
239
- const data = {{ userData | jsoninline | safe }};
240
- </script>
111
+ {# Parse a JSON string back to object #}
112
+ {% set parsed = jsonString | jsonparse %}
241
113
  ```
242
114
 
243
- #### Combining Filters
115
+ ### Template Extensions
244
116
 
245
- ```nunjucks
246
- <!-- Parse a JSON string, then format it nicely -->
247
- {{ jsonString | jsonparse | json(4) }}
117
+ Extensions are registered via the MJ class factory:
248
118
 
249
- <!-- Access nested properties after parsing -->
250
- {{ responseData | jsonparse | attr("results") | json }}
119
+ ```mermaid
120
+ graph LR
121
+ A[TemplateExtensionBase] --> B[AIPrompt Extension]
122
+ A --> C[TemplateEmbed Extension]
123
+ A --> D[Custom Extensions]
251
124
 
252
- <!-- Safe output without HTML escaping -->
253
- {{ myData | json | safe }}
125
+ style A fill:#2d6a9f,stroke:#1a4971,color:#fff
126
+ style B fill:#2d8659,stroke:#1a5c3a,color:#fff
127
+ style C fill:#2d8659,stroke:#1a5c3a,color:#fff
128
+ style D fill:#7c5295,stroke:#563a6b,color:#fff
254
129
  ```
255
130
 
256
- ### Extension Configuration
131
+ - **AIPrompt Extension**: Executes AI prompts inline within templates using `{% aiprompt %}` tags
132
+ - **TemplateEmbed Extension**: Embeds other templates within a template using `{% templateembed %}` tags
257
133
 
258
- #### AIPrompt Extension Parameters
259
-
260
- - `AIModel` (optional): Specific AI model to use (e.g., "gpt-4", "claude-3")
261
- - `AllowFormatting` (optional): Whether to allow formatted output (HTML, Markdown, etc.)
262
-
263
- #### Template Embed Extension Parameters
134
+ ## API Reference
264
135
 
265
- - First parameter: Template name (required)
266
- - `type` (optional): Specific content type to use
267
- - `data` (optional): Additional data to pass to the embedded template
136
+ ### TemplateEngineServer
268
137
 
269
- ## Template Extension Development
138
+ | Member | Type | Description |
139
+ |--------|------|-------------|
140
+ | `Instance` | static getter | Singleton instance |
141
+ | `Config()` | method | Load metadata and initialize Nunjucks environment |
142
+ | `RenderTemplate()` | method | Render a stored template with validation |
143
+ | `RenderTemplateSimple()` | method | Render an ad-hoc template string |
144
+ | `AddTemplate()` | method | Add a template to the Nunjucks loader |
145
+ | `SetupNunjucks()` | method | Re-initialize the Nunjucks environment |
146
+ | `ClearTemplateCache()` | method | Clear cached compiled templates |
270
147
 
271
- To create custom template extensions:
148
+ ### Rendering Process
272
149
 
273
- ```typescript
274
- import { TemplateExtensionBase, RegisterClass } from '@memberjunction/templates';
275
-
276
- @RegisterClass(TemplateExtensionBase, 'MyExtension')
277
- export class MyExtension extends TemplateExtensionBase {
278
- constructor(contextUser: UserInfo) {
279
- super(contextUser);
280
- this.tags = ['myTag'];
281
- }
282
-
283
- public parse(parser: Parser, nodes: Nodes, lexer: Lexer) {
284
- const tok = parser.nextToken();
285
- const params = parser.parseSignature(null, true);
286
- parser.advanceAfterBlockEnd(tok.value);
287
-
288
- const body = parser.parseUntilBlocks('endMyTag');
289
- parser.advanceAfterBlockEnd();
290
-
291
- return new nodes.CallExtensionAsync(this, 'run', params, [body]);
292
- }
293
-
294
- public run(context: Context, params: any, body: any, callBack: NunjucksCallback) {
295
- // Your extension logic here
296
- try {
297
- const content = body();
298
- // Process content...
299
- callBack(null, processedContent);
300
- } catch (error) {
301
- callBack(error);
302
- }
303
- }
304
- }
305
- ```
150
+ 1. **Validation**: Input data is validated against template parameter definitions
151
+ 2. **Default Merging**: Missing parameters receive default values (content-specific defaults override global defaults)
152
+ 3. **Compilation**: Template text is compiled by Nunjucks (cached after first compile)
153
+ 4. **Rendering**: Nunjucks processes the template with merged data
154
+ 5. **Result**: Returns `TemplateRenderResult` with `Success`, `Output`, and optional `Message`
306
155
 
307
156
  ## Dependencies
308
157
 
309
- - `@memberjunction/core`: Core MemberJunction functionality
310
- - `@memberjunction/templates-base-types`: Base types and interfaces
311
- - `@memberjunction/ai`: AI integration interfaces
312
- - `@memberjunction/aiengine`: AI engine implementation
313
- - `@memberjunction/ai-groq`: Groq AI provider
314
- - `@memberjunction/core-entities`: Entity definitions
315
- - `@memberjunction/global`: Global utilities
316
- - `nunjucks`: Template engine
317
-
318
- ## Integration with MemberJunction
319
-
320
- This package integrates seamlessly with other MemberJunction packages:
321
-
322
- - **Entity System**: Templates are stored as entities with full metadata support
323
- - **AI Engine**: Direct integration for AI-powered content generation
324
- - **User Context**: Templates respect user permissions and context
325
- - **Metadata Provider**: Flexible metadata loading strategies
326
-
327
- ## Configuration
328
-
329
- The template engine uses the MemberJunction configuration system. Key configuration options:
330
-
331
- - Template caching strategies
332
- - Default AI models for prompts
333
- - Extension registration
334
- - Nunjucks environment settings
335
-
336
- ## Performance Considerations
337
-
338
- - Templates are cached after first compilation
339
- - Use `ClearTemplateCache()` when templates are updated
340
- - AI prompts are processed asynchronously
341
- - Template embedding includes cycle detection
342
-
343
- ## Error Handling
344
-
345
- All rendering methods return a `TemplateRenderResult` object:
346
-
347
- ```typescript
348
- const result = await templateEngine.RenderTemplateSimple(template, data);
349
-
350
- if (!result.Success) {
351
- console.error('Rendering failed:', result.Message);
352
- // Handle error appropriately
353
- } else {
354
- // Use result.Output
355
- }
356
- ```
357
-
358
- ## Best Practices
359
-
360
- 1. **Always check rendering results** for success before using output
361
- 2. **Configure the engine once** at application startup
362
- 3. **Use template validation** for user-provided data
363
- 4. **Clear cache** when templates are modified
364
- 5. **Handle AI failures gracefully** with fallback content
365
- 6. **Avoid deep template nesting** to prevent performance issues
158
+ | Package | Purpose |
159
+ |---------|---------|
160
+ | `@memberjunction/templates-base-types` | Base engine and result types |
161
+ | `@memberjunction/core` | UserInfo, logging utilities |
162
+ | `@memberjunction/core-entities` | Template entity types |
163
+ | `@memberjunction/global` | Class factory for extensions |
164
+ | `@memberjunction/ai` | AI integration for prompts |
165
+ | `@memberjunction/ai-core-plus` | AI core utilities |
166
+ | `nunjucks` | Template rendering engine |
366
167
 
367
168
  ## License
368
169
 
369
- ISC - See LICENSE file for details.
370
-
371
- ## Support
372
-
373
- For issues, questions, or contributions, please visit [MemberJunction.com](https://memberjunction.com) or contact the development team.
170
+ ISC
@@ -1,6 +1,6 @@
1
1
  import { IMetadataProvider, UserInfo } from "@memberjunction/core";
2
2
  import { TemplateContentEntity, TemplateEntityExtended } from "@memberjunction/core-entities";
3
- import * as nunjucks from 'nunjucks';
3
+ import nunjucks from 'nunjucks';
4
4
  import { TemplateRenderResult, TemplateEngineBase } from '@memberjunction/templates-base-types';
5
5
  /**
6
6
  * This class extends the nunjucks loader to allow adding templates directly to the loader
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAuB,MAAM,+BAA+B,CAAC;AACnH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAE/F;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ,CAAC,MAAM;IAC9C,KAAK,EAAE,IAAI,CAAC;IAEnB,OAAO,CAAC,SAAS,CAAwD;IAEzE;;;;OAIG;IACI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB;IAIvE;;;;OAIG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;CAW/C;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB;IACxD,WAAkB,QAAQ,IAAI,oBAAoB,CAEjD;IAED,OAAO,CAAC,uBAAuB,CAAkB;IACxC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAK5F,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BjE,aAAa,IAAI,IAAI;IAQ5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAE9C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,cAAc,CAA4C;IAE3D,WAAW,CAAC,cAAc,EAAE,sBAAsB;IAKzD;;;;;OAKG;IACU,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoD/K;;;;;;;OAOG;IACU,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBjG;;;;;;OAMG;IACH,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,GAAG;IAgB3G;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG;IAIpD,kBAAkB;IAIzB;;;;OAIG;cACa,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAY5F;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG;CAuD1G"}
1
+ {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAuB,MAAM,+BAA+B,CAAC;AACnH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAE/F;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ,CAAC,MAAM;IAC9C,KAAK,EAAE,IAAI,CAAC;IAEnB,OAAO,CAAC,SAAS,CAAwD;IAEzE;;;;OAIG;IACI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB;IAIvE;;;;OAIG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;CAW/C;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB;IACxD,WAAkB,QAAQ,IAAI,oBAAoB,CAEjD;IAED,OAAO,CAAC,uBAAuB,CAAkB;IACxC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAK5F,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BjE,aAAa,IAAI,IAAI;IAQ5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAE9C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,cAAc,CAA4C;IAE3D,WAAW,CAAC,cAAc,EAAE,sBAAsB;IAKzD;;;;;OAKG;IACU,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,eAAe,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoD/K;;;;;;;OAOG;IACU,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBjG;;;;;;OAMG;IACH,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,GAAG;IAgB3G;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG;IAIpD,kBAAkB;IAIzB;;;;OAIG;cACa,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAY5F;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG;CAuD1G"}
@@ -1,5 +1,5 @@
1
1
  import { LogError } from "@memberjunction/core";
2
- import * as nunjucks from 'nunjucks';
2
+ import nunjucks from 'nunjucks';
3
3
  import { MJGlobal } from "@memberjunction/global";
4
4
  import { TemplateExtensionBase } from "./extensions/TemplateExtensionBase.js";
5
5
  import { TemplateEngineBase } from '@memberjunction/templates-base-types';
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,QAAQ,EAAiC,MAAM,sBAAsB,CAAC;AAElG,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAwB,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AAE/F;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,QAAQ,CAAC,MAAM;IAAzD;;QAGY,cAAS,GAAqD,EAAE,CAAC;IA2B7E,CAAC;IAzBG;;;;OAIG;IACI,WAAW,CAAC,UAAkB,EAAE,QAAgC;QACnE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,IAAY,EAAE,QAAa;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC;gBACL,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IAA5D;;QAKY,4BAAuB,GAAY,KAAK,CAAC;QAiFjD;;WAEG;QACK,mBAAc,GAAqB,IAAI,GAAG,EAAe,CAAC;IAuNtE,CAAC;IA/SU,MAAM,KAAK,QAAQ;QACtB,OAAO,KAAK,CAAC,WAAW,EAAwB,CAAC;IACrD,CAAC;IAGQ,MAAM,CAAC,YAAsB,EAAE,WAAsB,EAAE,QAA4B;QACxF,yDAAyD;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,qDAAqD;QAChF,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACS,KAAK,CAAC,iBAAiB,CAAC,WAAsB;QACpD,uEAAuE;QACvE,MAAM,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAE3C,0EAA0E;QAC1E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAChC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC,2CAA2C;YAEhF,uIAAuI;YACvI,iBAAiB;YACjB,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpG,qBAAqB;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,gFAAgF;YAChF,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;YAC7F,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC3B,MAAM,mBAAmB,GAAG,GAAG,CAAC,QAAgE,CAAC;oBACjG,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,WAAY,CAAC,CAAC;oBACvD,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;wBACV,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACtD,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEM,aAAa;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpG,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAKD;;OAEG;IACK,gBAAgB;QACpB,2DAA2D;QAC3D,sEAAsE;QACtE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,SAAiB,CAAC,EAAE,EAAE;YACjE,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,8BAA8B,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAChE,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,GAAQ,EAAE,EAAE;YACnD,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,8BAA8B,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAChE,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE;YACrD,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,GAAG,CAAC,CAAC,0CAA0C;YAC1D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAOM,WAAW,CAAC,cAAsC;QACrD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACxE,CAAC;IAGD;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,cAAsC,EAAE,eAAsC,EAAE,IAAS,EAAE,cAAwB;QAC3I,IAAI,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,sCAAsC;iBAClD,CAAC;YACN,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBAChC,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,mDAAmD;iBAC/D,CAAC;YACN,CAAC;YAED,IAAG,CAAC,cAAc,EAAC,CAAC;gBAChB,6CAA6C;gBAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO;wBACH,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAA0B,EAAE,EAAE;4BACzD,OAAO,KAAK,CAAC,OAAO,CAAC;wBACzB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;qBAChB,CAAC;gBACN,CAAC;YACL,CAAC;YAED,kEAAkE;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAErF,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAClG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACpE,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,SAAS;aACrB,CAAC;QACN,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;aACrB,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,oBAAoB,CAAC,YAAoB,EAAE,IAAS;QAC7D,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,SAAS;aACrB,CAAC;QACN,CAAC;QACD,OAAO,CAAC,EAAE,CAAC;YACP,QAAQ,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;aACrB,CAAC;QACN,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACO,mBAAmB,CAAC,iBAAyB,EAAE,YAAoB,EAAE,aAAsB;QACjG,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;gBACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;aACI,CAAC;YACF,iGAAiG;YACjG,gFAAgF;YAChF,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;OAIG;IACO,sBAAsB,CAAC,YAAoB;QACjD,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAEM,kBAAkB;QACrB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,mBAAmB,CAAC,QAA2B,EAAE,IAAS;QACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,MAAO,CAAC,CAAC;gBACrB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;;;;OAaG;IACO,kBAAkB,CAAC,cAAsC,EAAE,SAAiB,EAAE,IAAS;QAC7F,0CAA0C;QAC1C,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAE/B,gDAAgD;QAChD,MAAM,MAAM,GAAG,cAAc,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAEjE,gDAAgD;QAChD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;QAE5D,8BAA8B;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,CAAS,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1D,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,8CAA8C;QAC9C,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACjC,8DAA8D;YAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACpG,IAAI,CAAC;oBACD,mCAAmC;oBACnC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;wBACjB,KAAK,OAAO,CAAC;wBACb,KAAK,QAAQ,CAAC;wBACd,KAAK,QAAQ,CAAC;wBACd,KAAK,QAAQ;4BACT,yCAAyC;4BACzC,IAAI,CAAC;gCACD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;4BACtD,CAAC;4BAAC,MAAM,CAAC;gCACL,+BAA+B;gCAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;4BAC1C,CAAC;4BACD,MAAM;wBAEV,KAAK,QAAQ,CAAC;wBACd;4BACI,2CAA2C;4BAC3C,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;4BACtC,MAAM;oBACd,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,0DAA0D;oBAC1D,QAAQ,CAAC,gDAAgD,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxF,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ"}
1
+ {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/templates",
3
3
  "type": "module",
4
- "version": "4.0.0",
4
+ "version": "4.1.0",
5
5
  "description": "MemberJunction Templating Engine and Utilities - Used for any application that requires templating utility functionality. NOTE: this package does use Angular Universal for compilation but is not marked with the usual ng prefix because it is a server-side library and not used within Angular apps.",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -19,14 +19,14 @@
19
19
  "typescript": "^5.9.3"
20
20
  },
21
21
  "dependencies": {
22
- "@memberjunction/core": "4.0.0",
23
- "@memberjunction/templates-base-types": "4.0.0",
24
- "@memberjunction/ai": "4.0.0",
25
- "@memberjunction/ai-core-plus": "4.0.0",
26
- "@memberjunction/aiengine": "4.0.0",
27
- "@memberjunction/ai-provider-bundle": "4.0.0",
28
- "@memberjunction/core-entities": "4.0.0",
29
- "@memberjunction/global": "4.0.0",
22
+ "@memberjunction/core": "4.1.0",
23
+ "@memberjunction/templates-base-types": "4.1.0",
24
+ "@memberjunction/ai": "4.1.0",
25
+ "@memberjunction/ai-core-plus": "4.1.0",
26
+ "@memberjunction/aiengine": "4.1.0",
27
+ "@memberjunction/ai-provider-bundle": "4.1.0",
28
+ "@memberjunction/core-entities": "4.1.0",
29
+ "@memberjunction/global": "4.1.0",
30
30
  "nunjucks": "3.2.4"
31
31
  },
32
32
  "repository": {