@memberjunction/templates 6.2.0-edge.5 → 6.2.0-edge.7

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.
@@ -45,10 +45,12 @@ export declare class TemplateEngineServer extends BaseSingleton<TemplateEngineSe
45
45
  /** Server-side context user, captured on Config() and settable directly (mirrors AIEngine). */
46
46
  private _contextUser?;
47
47
  private _oneTimeLoadingComplete;
48
+ private _configuredOnce;
48
49
  /**
49
50
  * Loads the single TemplateEngineBase metadata cache, then (re)initializes the render layer. The base
50
51
  * runs its own AdditionalLoading (associating content/params with each template) inside its Config();
51
- * afterwards we drop any stale compiled templates and one-time-initialize the nunjucks environment.
52
+ * afterwards we drop any stale compiled templates when the base cache actually (re)loaded and
53
+ * one-time-initialize the nunjucks environment.
52
54
  *
53
55
  * NOTE: when this extended the base, the nunjucks setup lived in an AdditionalLoading() override that
54
56
  * the base's Load() invoked. Under composition the base's Load() calls the BASE's AdditionalLoading,
@@ -101,7 +103,7 @@ export declare class TemplateEngineServer extends BaseSingleton<TemplateEngineSe
101
103
  private addCustomFilters;
102
104
  /**
103
105
  * Compiled templates per environment, then per template content ID, so a raw compile is never served to an
104
- * escaping render.
106
+ * escaping render. Tracks `sourceText` so in-place `AutoRefresh` updates to `TemplateText` recompile automatically.
105
107
  */
106
108
  private _templateCache;
107
109
  /**
@@ -139,8 +141,8 @@ export declare class TemplateEngineServer extends BaseSingleton<TemplateEngineSe
139
141
  * Returns the top-level variable names a template's text reads, following stored templates it
140
142
  * pulls in by literal name (`{% include %}`, `{% import %}`, `{% from %}`, `{% extends %}`,
141
143
  * `{% template %}`). It sets up the Nunjucks environment first, so the registered extensions' tags
142
- * parse before the first {@link Config} too. The result is frozen and cached per template text until
143
- * {@link ClearTemplateCache}; a result whose text does not parse is not cached.
144
+ * parse before the first {@link Config} too. The result is frozen and cached per template text until the
145
+ * next {@link Config} or {@link ClearTemplateCache}; a result whose text does not parse is not cached.
144
146
  */
145
147
  GetReferencedVariables(templateText: string): ReferencedVariablesResult;
146
148
  /**
@@ -169,12 +171,23 @@ export declare class TemplateEngineServer extends BaseSingleton<TemplateEngineSe
169
171
  private getRawTemplateEnv;
170
172
  /** Clears the compiled-template cache and the cached {@link GetReferencedVariables} results. */
171
173
  ClearTemplateCache(): void;
174
+ /**
175
+ * The user a render runs as: the one the caller passed, else the user of the render this one is
176
+ * nested in. There is no fallback to this engine's context user: that is whoever last configured
177
+ * the process-wide engine, so it may be another request's user. A render with no user runs its
178
+ * extensions with no user, and an extension that needs one fails the render with an error rather
179
+ * than run as nobody (an `{% AIPrompt %}` tag does). Every server caller should pass `ContextUser`.
180
+ */
181
+ private resolveRenderUser;
172
182
  /**
173
183
  * Promisifies the Nunjucks template rendering process.
174
184
  * @param template the Nunjucks template object
175
185
  * @param data the data to render the template with
186
+ * @param renderUser the user registered extensions act for during this render
176
187
  */
177
- protected renderTemplateAsync(template: nunjucks.Template, data: any): Promise<string>;
188
+ protected renderTemplateAsync(template: nunjucks.Template, data: any, renderUser?: UserInfo): Promise<string>;
189
+ /** Renders `template` with `data`, inside the caller's render-user scope. */
190
+ private renderInCurrentScope;
178
191
  /**
179
192
  * Merges default values from template parameters with the provided data.
180
193
  * Content-specific parameters take precedence over global parameters when both define the same parameter name.
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateEngine.d.ts","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { BaseSingleton, MJGlobal, UUIDsEqual } from "@memberjunction/global";
4
4
  import { TemplateExtensionBase } from "./extensions/TemplateExtensionBase.js";
5
5
  import { HardenNunjucksRuntime } from "./NunjucksSandbox.js";
6
6
  import { CollectReferencedVariables } from "./TemplateVariableAnalysis.js";
7
+ import { CurrentTemplateRenderUser, RunAsTemplateRenderUser } from "./TemplateRenderUser.js";
7
8
  import { TemplateEngineBase } from '@memberjunction/templates-base-types';
8
9
  // Stored templates are user-editable, so nunjucks is guarded as soon as the engine loads. The guard
9
10
  // is process-wide: it also covers nunjucks environments that other packages create.
@@ -61,11 +62,12 @@ export class TemplateEngineServer extends BaseSingleton {
61
62
  constructor() {
62
63
  super(...arguments);
63
64
  this._oneTimeLoadingComplete = false;
65
+ this._configuredOnce = false;
64
66
  /** The extension instances registered on {@link _nunjucksEnv}. The variable analysis parses their custom tags. */
65
67
  this._registeredExtensions = [];
66
68
  /**
67
69
  * Compiled templates per environment, then per template content ID, so a raw compile is never served to an
68
- * escaping render.
70
+ * escaping render. Tracks `sourceText` so in-place `AutoRefresh` updates to `TemplateText` recompile automatically.
69
71
  */
70
72
  this._templateCache = new WeakMap();
71
73
  this._simpleTemplateCache = new Map();
@@ -88,7 +90,8 @@ export class TemplateEngineServer extends BaseSingleton {
88
90
  /**
89
91
  * Loads the single TemplateEngineBase metadata cache, then (re)initializes the render layer. The base
90
92
  * runs its own AdditionalLoading (associating content/params with each template) inside its Config();
91
- * afterwards we drop any stale compiled templates and one-time-initialize the nunjucks environment.
93
+ * afterwards we drop any stale compiled templates when the base cache actually (re)loaded and
94
+ * one-time-initialize the nunjucks environment.
92
95
  *
93
96
  * NOTE: when this extended the base, the nunjucks setup lived in an AdditionalLoading() override that
94
97
  * the base's Load() invoked. Under composition the base's Load() calls the BASE's AdditionalLoading,
@@ -98,8 +101,17 @@ export class TemplateEngineServer extends BaseSingleton {
98
101
  if (contextUser) {
99
102
  this._contextUser = contextUser;
100
103
  }
104
+ const shouldClearCache = !this._configuredOnce || Boolean(forceRefresh) || !this.base.Loaded;
101
105
  await this.base.Config(forceRefresh, contextUser, provider);
102
- this.ClearTemplateCache(); // base templates (re)loaded — drop any stale compiled templates
106
+ this._configuredOnce = true;
107
+ if (shouldClearCache) {
108
+ this.ClearTemplateCache(); // base templates (re)loaded — drop any stale compiled templates
109
+ }
110
+ else {
111
+ // Compiled templates check their own source text, but a variable analysis also follows embedded
112
+ // templates by name, so an in-place edit of an embedded template would leave it stale.
113
+ this._referencedVariablesCache.clear();
114
+ }
103
115
  this.ensureNunjucksInitialized(contextUser);
104
116
  }
105
117
  /** One-time nunjucks environment + registered-extension setup. {@link Config} and {@link GetReferencedVariables} call it. */
@@ -262,7 +274,7 @@ export class TemplateEngineServer extends BaseSingleton {
262
274
  const mergedData = this.mergeDefaultValues(templateEntity, templateContent.ID, data);
263
275
  const env = options?.autoescape === false ? this.getRawTemplateEnv() : this._nunjucksEnv;
264
276
  const template = this.getNunjucksTemplate(templateContent.ID, templateContent.TemplateText, true, env);
265
- const result = await this.renderTemplateAsync(template, mergedData);
277
+ const result = await this.renderTemplateAsync(template, mergedData, this.resolveRenderUser(options));
266
278
  return {
267
279
  Success: true,
268
280
  Output: result,
@@ -308,7 +320,7 @@ export class TemplateEngineServer extends BaseSingleton {
308
320
  }
309
321
  this._simpleTemplateCache.set(cacheKey, template);
310
322
  }
311
- const result = await this.renderTemplateAsync(template, data);
323
+ const result = await this.renderTemplateAsync(template, data, this.resolveRenderUser(options));
312
324
  return {
313
325
  Success: true,
314
326
  Output: result,
@@ -328,8 +340,8 @@ export class TemplateEngineServer extends BaseSingleton {
328
340
  * Returns the top-level variable names a template's text reads, following stored templates it
329
341
  * pulls in by literal name (`{% include %}`, `{% import %}`, `{% from %}`, `{% extends %}`,
330
342
  * `{% template %}`). It sets up the Nunjucks environment first, so the registered extensions' tags
331
- * parse before the first {@link Config} too. The result is frozen and cached per template text until
332
- * {@link ClearTemplateCache}; a result whose text does not parse is not cached.
343
+ * parse before the first {@link Config} too. The result is frozen and cached per template text until the
344
+ * next {@link Config} or {@link ClearTemplateCache}; a result whose text does not parse is not cached.
333
345
  */
334
346
  GetReferencedVariables(templateText) {
335
347
  const cached = this._referencedVariablesCache.get(templateText);
@@ -364,11 +376,15 @@ export class TemplateEngineServer extends BaseSingleton {
364
376
  envCache = new Map();
365
377
  this._templateCache.set(env, envCache);
366
378
  }
367
- let template = envCache.get(templateContentId);
368
- if (!template) {
369
- template = this.createNunjucksTemplate(templateText, env);
370
- envCache.set(templateContentId, template);
379
+ const cached = envCache.get(templateContentId);
380
+ if (cached && cached.sourceText === templateText) {
381
+ return cached.template;
382
+ }
383
+ if (cached && cached.sourceText !== templateText) {
384
+ this._referencedVariablesCache.clear();
371
385
  }
386
+ const template = this.createNunjucksTemplate(templateText, env);
387
+ envCache.set(templateContentId, { template, sourceText: templateText });
372
388
  return template;
373
389
  }
374
390
  else {
@@ -414,13 +430,28 @@ export class TemplateEngineServer extends BaseSingleton {
414
430
  this._simpleTemplateCache.clear();
415
431
  this._referencedVariablesCache.clear();
416
432
  }
433
+ /**
434
+ * The user a render runs as: the one the caller passed, else the user of the render this one is
435
+ * nested in. There is no fallback to this engine's context user: that is whoever last configured
436
+ * the process-wide engine, so it may be another request's user. A render with no user runs its
437
+ * extensions with no user, and an extension that needs one fails the render with an error rather
438
+ * than run as nobody (an `{% AIPrompt %}` tag does). Every server caller should pass `ContextUser`.
439
+ */
440
+ resolveRenderUser(options) {
441
+ return options?.ContextUser ?? CurrentTemplateRenderUser();
442
+ }
417
443
  /**
418
444
  * Promisifies the Nunjucks template rendering process.
419
445
  * @param template the Nunjucks template object
420
446
  * @param data the data to render the template with
447
+ * @param renderUser the user registered extensions act for during this render
421
448
  */
422
- async renderTemplateAsync(template, data) {
449
+ async renderTemplateAsync(template, data, renderUser) {
423
450
  HardenNunjucksRuntime(); // no-op unless something replaced a guarded nunjucks hook
451
+ return RunAsTemplateRenderUser(renderUser ?? this.resolveRenderUser(), () => this.renderInCurrentScope(template, data));
452
+ }
453
+ /** Renders `template` with `data`, inside the caller's render-user scope. */
454
+ renderInCurrentScope(template, data) {
424
455
  return new Promise((resolve, reject) => {
425
456
  template.render(data, (err, result) => {
426
457
  if (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../src/TemplateEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { UserInfo } from '@memberjunction/core';
2
+ /** Runs `work` with `user` as the template render user for everything it does, sync or async. */
3
+ export declare function RunAsTemplateRenderUser<T>(user: UserInfo | undefined, work: () => T): T;
4
+ /** The user of the template render in progress, or undefined outside a render or for a render with no user. */
5
+ export declare function CurrentTemplateRenderUser(): UserInfo | undefined;
6
+ /** Whether a template render is in progress, whether or not it has a user. */
7
+ export declare function IsInsideTemplateRender(): boolean;
8
+ //# sourceMappingURL=TemplateRenderUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRenderUser.d.ts","sourceRoot":"","sources":["../src/TemplateRenderUser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAkBrD,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvF;AAED,+GAA+G;AAC/G,wBAAgB,yBAAyB,IAAI,QAAQ,GAAG,SAAS,CAEhE;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD"}
@@ -0,0 +1,15 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ const renderScope = new AsyncLocalStorage();
3
+ /** Runs `work` with `user` as the template render user for everything it does, sync or async. */
4
+ export function RunAsTemplateRenderUser(user, work) {
5
+ return renderScope.run({ User: user }, work);
6
+ }
7
+ /** The user of the template render in progress, or undefined outside a render or for a render with no user. */
8
+ export function CurrentTemplateRenderUser() {
9
+ return renderScope.getStore()?.User;
10
+ }
11
+ /** Whether a template render is in progress, whether or not it has a user. */
12
+ export function IsInsideTemplateRender() {
13
+ return renderScope.getStore() !== undefined;
14
+ }
15
+ //# sourceMappingURL=TemplateRenderUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRenderUser.js","sourceRoot":"","sources":["../src/TemplateRenderUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAiBrD,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAuB,CAAC;AAEjE,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAI,IAA0B,EAAE,IAAa;IAChF,OAAO,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,yBAAyB;IACrC,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;AACxC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB;IAClC,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC;AAChD,CAAC"}
@@ -37,6 +37,21 @@ export declare class AIPromptExtension extends TemplateExtensionBase {
37
37
  * ```
38
38
  */
39
39
  run(context: Context, params: any, body: any, callBack: NunjucksCallback): void;
40
+ /** Logs `e` and ends the render with it as the error. */
41
+ private static failRender;
42
+ /** Why an `{% AIPrompt %}` tag fails in a render that has no user. */
43
+ static readonly NoRenderUserMessage: string;
44
+ /** Maps the tag's parameters onto an {@link AIPromptConfig}, matching names case- and space-insensitively. */
45
+ protected parseConfig(params: Record<string, unknown>): AIPromptConfig;
46
+ /** The tag's `AIModel` value as a model name; unset when it is null or undefined. Throws for any other non-string. */
47
+ private static aiModelName;
48
+ /**
49
+ * Runs the prompt as `contextUser` and returns the model's reply. Rejects when the AI engine cannot be
50
+ * configured, no model is found, or the model call does not succeed.
51
+ */
52
+ protected runPrompt(prompt: string, config: AIPromptConfig, contextUser: UserInfo): Promise<string>;
53
+ /** The model the tag names, or the highest-power Groq LLM when it names none. */
54
+ protected resolveModel(config: AIPromptConfig, contextUser: UserInfo): Promise<MJAIModelEntityExtended>;
40
55
  /**
41
56
  * Default implementation simply returns 'OpenAI' - override this in your subclass if you are using a different AI vendor.
42
57
  * @returns
@@ -1 +1 @@
1
- {"version":3,"file":"AIPrompt.extension.d.ts","sourceRoot":"","sources":["../../src/extensions/AIPrompt.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,KAAK,MAAM,GAAG,GAAG,CAAC;AAClB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,OAAO,GAAG,GAAG,CAAC;AAEnB;;GAEG;AACH,qBACa,iBAAkB,SAAQ,qBAAqB;IAExD,mBAAmB,EAAE,MAAM,CAAgE;gBAE/E,WAAW,EAAE,QAAQ;IAK1B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAkCvD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB;IAiF/E;;;OAGG;IACH,SAAS,KAAK,mBAAmB,IAAI,MAAM,CAE1C;IAED;;;OAGG;cACa,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAQ1G;AAED,MAAM,MAAM,cAAc,GAAG;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"AIPrompt.extension.d.ts","sourceRoot":"","sources":["../../src/extensions/AIPrompt.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,KAAK,MAAM,GAAG,GAAG,CAAC;AAClB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,OAAO,GAAG,GAAG,CAAC;AAEnB;;GAEG;AACH,qBACa,iBAAkB,SAAQ,qBAAqB;IAExD,mBAAmB,EAAE,MAAM,CAAgE;gBAE/E,WAAW,EAAE,QAAQ;IAK1B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAkCvD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB;IAsB/E,yDAAyD;IACzD,OAAO,CAAC,MAAM,CAAC,UAAU;IAKzB,sEAAsE;IACtE,gBAAuB,mBAAmB,SAEI;IAE9C,8GAA8G;IAC9G,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IAmBtE,sHAAsH;IACtH,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B;;;OAGG;cACa,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzG,iFAAiF;cACjE,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAiB7G;;;OAGG;IACH,SAAS,KAAK,mBAAmB,IAAI,MAAM,CAE1C;IAED;;;OAGG;cACa,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAQ1G;AAED,MAAM,MAAM,cAAc,GAAG;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC"}
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var AIPromptExtension_1;
10
11
  import { LogError, UserInfo } from "@memberjunction/core";
11
12
  import { MJGlobal, RegisterClass } from "@memberjunction/global";
12
13
  import { TemplateExtensionBase } from "./TemplateExtensionBase.js";
@@ -16,6 +17,7 @@ import { BaseLLM, GetAIAPIKey } from "@memberjunction/ai";
16
17
  * This class is an extension for the Nunjucks template engine that allows for the use of an AI prompt in a template.
17
18
  */
18
19
  let AIPromptExtension = class AIPromptExtension extends TemplateExtensionBase {
20
+ static { AIPromptExtension_1 = this; }
19
21
  constructor(contextUser) {
20
22
  super(contextUser);
21
23
  this.AllowFormattingText = "Do not use markdown, HTML, or any other special formatting.";
@@ -71,81 +73,109 @@ let AIPromptExtension = class AIPromptExtension extends TemplateExtensionBase {
71
73
  * ```
72
74
  */
73
75
  run(context, params, body, callBack) {
74
- const prompt = body();
76
+ // Captured once: the prompt runs as the user of the render that reached this tag.
77
+ const contextUser = this.ContextUser;
78
+ if (!contextUser) {
79
+ callBack(new Error(AIPromptExtension_1.NoRenderUserMessage));
80
+ return;
81
+ }
82
+ // Nunjucks calls this synchronously and waits on the callback, so every path below must reach the
83
+ // callback. Nunjucks renders the rest of the template inside `callBack(null, response)`, so an
84
+ // error there (a later `{{ undefinedFn() }}`) is caught by the `.catch` and fails the render too;
85
+ // a rejection that skipped the callback would leave the render waiting forever.
86
+ try {
87
+ const prompt = body();
88
+ const config = this.parseConfig(params);
89
+ this.runPrompt(prompt, config, contextUser)
90
+ .then((response) => callBack(null, response))
91
+ .catch((e) => AIPromptExtension_1.failRender(callBack, e));
92
+ }
93
+ catch (e) {
94
+ AIPromptExtension_1.failRender(callBack, e);
95
+ }
96
+ }
97
+ /** Logs `e` and ends the render with it as the error. */
98
+ static failRender(callBack, e) {
99
+ LogError(e);
100
+ callBack(e instanceof Error ? e : new Error(String(e)));
101
+ }
102
+ /** Why an `{% AIPrompt %}` tag fails in a render that has no user. */
103
+ static { this.NoRenderUserMessage = 'The AIPrompt template tag needs the user the render runs as, and this render has no user. ' +
104
+ 'Pass ContextUser in the render options.'; }
105
+ /** Maps the tag's parameters onto an {@link AIPromptConfig}, matching names case- and space-insensitively. */
106
+ parseConfig(params) {
75
107
  const config = {};
76
- // now map each value from params to the config object, and be case INsensitive
77
108
  for (const key in params) {
78
- if (params.hasOwnProperty(key)) {
79
- const value = params[key];
80
- // convert the key to lower case and remove any spaces
81
- const lowerKey = key.toLowerCase().replace(/\s+/g, '');
82
- // now set the value in the config object
83
- if (lowerKey === 'aimodel') {
84
- config.AIModel = value;
85
- }
86
- else if (lowerKey === 'allowformatting') {
87
- // convert the value to a boolean
88
- if (typeof value === 'string') {
89
- config.AllowFormatting = value.toLowerCase() === 'true' || value.toLowerCase() === 'yes';
90
- }
91
- else if (typeof value === 'boolean') {
92
- config.AllowFormatting = value;
93
- }
94
- else {
95
- // if the value is not a string or boolean, we will just set it to false
96
- config.AllowFormatting = false;
97
- }
98
- }
109
+ if (!params.hasOwnProperty(key)) {
110
+ continue;
99
111
  }
100
- }
101
- // we now have the LLM prompt in the prompt variable
102
- // we can't use async/await here because this is a synchronous function
103
- // so instead we will use the callback pattern
104
- // we will get the highest power model from the AI Engine
105
- // then we will create an instance of the LLM class
106
- AIEngine.Instance.Config(false, this.ContextUser).then(async () => {
107
- try {
108
- let model = null;
109
- if (config.AIModel) {
110
- model = AIEngine.Instance.Models.find(m => m.Name.toLowerCase() === config.AIModel.toLowerCase() ||
111
- m.APIName?.toLowerCase() === config.AIModel.toLowerCase());
112
- if (!model) {
113
- throw new Error(`AI model '${config.AIModel}' not found.`);
114
- }
115
- }
116
- else {
117
- model = await AIEngine.Instance.GetHighestPowerModel('Groq', 'llm', this.ContextUser);
118
- if (!model) {
119
- throw new Error(`No AI model found for the vendor 'Groq' and type 'llm'.`);
120
- }
121
- }
122
- const llm = MJGlobal.Instance.ClassFactory.CreateInstance(BaseLLM, model.DriverClass, GetAIAPIKey(model.DriverClass));
123
- const llmResult = await llm.ChatCompletion({
124
- messages: [
125
- {
126
- role: 'system',
127
- content: `Background: The output from this will be DIRECTLY inserted into a messaging template going to a recipient. For this reason whenever
128
- you are prompted to provide a result, do not preface it with any text, just provide the result itself. ${config.AllowFormatting ? "" : this.AllowFormattingText} Assume that the text you are generating will go directly into a message.
129
- <IMPORTANT>ONLY PROVIDE THE RESPONSE REQUESTED FOR THE MESSAGE - **** DO NOT ADD ANYTHING ELSE ****</IMPORTANT>`,
130
- },
131
- {
132
- role: 'user',
133
- content: `${prompt}`,
134
- }
135
- ],
136
- model: model.APINameOrName
137
- });
138
- if (llmResult && llmResult.success) {
139
- let response = llmResult.data.choices[0].message.content;
140
- response = response.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
141
- callBack(null, response);
142
- }
112
+ const value = params[key];
113
+ const lowerKey = key.toLowerCase().replace(/\s+/g, '');
114
+ if (lowerKey === 'aimodel') {
115
+ config.AIModel = AIPromptExtension_1.aiModelName(value);
143
116
  }
144
- catch (e) {
145
- LogError(e);
146
- callBack(null, e);
117
+ else if (lowerKey === 'allowformatting') {
118
+ config.AllowFormatting = typeof value === 'string'
119
+ ? value.toLowerCase() === 'true' || value.toLowerCase() === 'yes'
120
+ : value === true; // any other non-boolean value means no formatting
147
121
  }
122
+ }
123
+ return config;
124
+ }
125
+ /** The tag's `AIModel` value as a model name; unset when it is null or undefined. Throws for any other non-string. */
126
+ static aiModelName(value) {
127
+ if (typeof value === 'string') {
128
+ return value;
129
+ }
130
+ if (value === undefined || value === null) {
131
+ return undefined;
132
+ }
133
+ throw new Error(`AIPrompt: the AIModel parameter must be a string naming a model, but it is a ${typeof value}.`);
134
+ }
135
+ /**
136
+ * Runs the prompt as `contextUser` and returns the model's reply. Rejects when the AI engine cannot be
137
+ * configured, no model is found, or the model call does not succeed.
138
+ */
139
+ async runPrompt(prompt, config, contextUser) {
140
+ await AIEngine.Instance.Config(false, contextUser);
141
+ const model = await this.resolveModel(config, contextUser);
142
+ const llm = MJGlobal.Instance.ClassFactory.CreateInstance(BaseLLM, model.DriverClass, GetAIAPIKey(model.DriverClass));
143
+ const llmResult = await llm.ChatCompletion({
144
+ messages: [
145
+ {
146
+ role: 'system',
147
+ content: `Background: The output from this will be DIRECTLY inserted into a messaging template going to a recipient. For this reason whenever
148
+ you are prompted to provide a result, do not preface it with any text, just provide the result itself. ${config.AllowFormatting ? "" : this.AllowFormattingText} Assume that the text you are generating will go directly into a message.
149
+ <IMPORTANT>ONLY PROVIDE THE RESPONSE REQUESTED FOR THE MESSAGE - **** DO NOT ADD ANYTHING ELSE ****</IMPORTANT>`,
150
+ },
151
+ {
152
+ role: 'user',
153
+ content: `${prompt}`,
154
+ }
155
+ ],
156
+ model: model.APINameOrName
148
157
  });
158
+ if (!llmResult?.success) {
159
+ throw new Error(`AIPrompt: the model call did not succeed: ${llmResult?.errorMessage || 'the model returned no result'}`);
160
+ }
161
+ const response = llmResult.data.choices[0].message.content;
162
+ return response.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");
163
+ }
164
+ /** The model the tag names, or the highest-power Groq LLM when it names none. */
165
+ async resolveModel(config, contextUser) {
166
+ if (config.AIModel) {
167
+ const wanted = config.AIModel.toLowerCase();
168
+ const model = AIEngine.Instance.Models.find(m => m.Name.toLowerCase() === wanted || m.APIName?.toLowerCase() === wanted);
169
+ if (!model) {
170
+ throw new Error(`AI model '${config.AIModel}' not found.`);
171
+ }
172
+ return model;
173
+ }
174
+ const model = await AIEngine.Instance.GetHighestPowerModel('Groq', 'llm', contextUser);
175
+ if (!model) {
176
+ throw new Error(`No AI model found for the vendor 'Groq' and type 'llm'.`);
177
+ }
178
+ return model;
149
179
  }
150
180
  /**
151
181
  * Default implementation simply returns 'OpenAI' - override this in your subclass if you are using a different AI vendor.
@@ -167,7 +197,7 @@ let AIPromptExtension = class AIPromptExtension extends TemplateExtensionBase {
167
197
  return models[0];
168
198
  }
169
199
  };
170
- AIPromptExtension = __decorate([
200
+ AIPromptExtension = AIPromptExtension_1 = __decorate([
171
201
  RegisterClass(TemplateExtensionBase, 'AIPrompt'),
172
202
  __metadata("design:paramtypes", [UserInfo])
173
203
  ], AIPromptExtension);
@@ -1 +1 @@
1
- {"version":3,"file":"AIPrompt.extension.js","sourceRoot":"","sources":["../../src/extensions/AIPrompt.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIPrompt.extension.js","sourceRoot":"","sources":["../../src/extensions/AIPrompt.extension.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAiB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAoB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQ1D;;GAEG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,qBAAqB;;IAIxD,YAAY,WAAqB;QAC7B,KAAK,CAAC,WAAW,CAAC,CAAC;QAHvB,wBAAmB,GAAW,6DAA6D,CAAA;QAIvF,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,MAAc,EAAE,KAAY,EAAE,KAAY;QACnD,oBAAoB;QACpB,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAE7B,4DAA4D;QAC5D,4DAA4D;QAC5D,IAAI,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEvC,iEAAiE;QACjE,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC3D,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,IAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACnC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAE9B,+CAA+C;QAC/C,kDAAkD;QAClD,0CAA0C;QAE1C,oBAAoB;QACpB,uDAAuD;QACvD,iCAAiC;QAEjC,wBAAwB;QAExB,0CAA0C;QAC1C,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,GAAG,CAAC,OAAgB,EAAE,MAAW,EAAE,IAAS,EAAE,QAA0B;QAC3E,kFAAkF;QAClF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,KAAK,CAAC,mBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC3D,OAAO;QACX,CAAC;QACD,kGAAkG;QAClG,+FAA+F;QAC/F,kGAAkG;QAClG,gFAAgF;QAChF,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;iBACtC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;iBAC5C,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,mBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,mBAAiB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED,yDAAyD;IACjD,MAAM,CAAC,UAAU,CAAC,QAA0B,EAAE,CAAU;QAC5D,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,sEAAsE;aAC/C,wBAAmB,GACtC,4FAA4F;QAC5F,yCAAyC,AAFH,CAEI;IAE9C,8GAA8G;IACpG,WAAW,CAAC,MAA+B;QACjD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,SAAS;YACb,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,GAAG,mBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;gBACxC,MAAM,CAAC,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ;oBAC9C,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK;oBACjE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,kDAAkD;YAC5E,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,sHAAsH;IAC9G,MAAM,CAAC,WAAW,CAAC,KAAc;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gFAAgF,OAAO,KAAK,GAAG,CAAC,CAAC;IACrH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,MAAsB,EAAE,WAAqB;QACnF,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAU,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/H,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC;YACvC,QAAQ,EAAE;gBACN;oBACI,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;mJACsH,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAoB;8IAC5D;iBAC7H;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,GAAG,MAAM,EAAE;iBACvB;aACJ;YACD,KAAK,EAAE,KAAK,CAAC,aAAa;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6CAA6C,SAAS,EAAE,YAAY,IAAI,8BAA8B,EAAE,CAAC,CAAC;QAC9H,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,iFAAiF;IACvE,KAAK,CAAC,YAAY,CAAC,MAAsB,EAAE,WAAqB;QACtE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;YACzH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD;;;OAGG;IACH,IAAc,mBAAmB;QAC7B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,WAAqB;QAChE,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,0FAA0F;QAC9I,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK;YACpD,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9G,+GAA+G;QAC/G,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B;QAC7E,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;;AAtMQ,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,EAAE,UAAU,CAAC;qCAKpB,QAAQ;GAJxB,iBAAiB,CAuM7B;;AAcD,iCAAiC;AACjC,gCAAgC;AAEhC,oDAAoD;AACpD,+BAA+B;AAC/B,wCAAwC;AAExC,uEAAuE;AACvE,uEAAuE;AACvE,wDAAwD;AACxD,kDAAkD;AAElD,4EAA4E;AAC5E,sEAAsE;AACtE,gCAAgC;AAEhC,2CAA2C;AAC3C,kDAAkD;AAClD,kEAAkE;AAClE,YAAY;AAEZ,yCAAyC;AAEzC,0DAA0D;AAC1D,6DAA6D;AAC7D,qDAAqD;AAErD,+BAA+B;AAC/B,kEAAkE;AAClE,4CAA4C;AAE5C,mCAAmC;AAEnC,qDAAqD;AACrD,qFAAqF;AACrF,SAAS;AAET,gEAAgE;AAChE,iCAAiC;AACjC,+DAA+D;AAC/D,kFAAkF;AAClF,yDAAyD;AACzD,oEAAoE;AACpE,8DAA8D;AAC9D,iFAAiF;AACjF,oBAAoB;AACpB,+GAA+G;AAC/G,iJAAiJ;AACjJ,+DAA+D;AAC/D,kCAAkC;AAClC,4BAA4B;AAC5B,8CAA8C;AAC9C,4KAA4K;AAC5K,sKAAsK;AACtK,8KAA8K;AAC9K,0JAA0J;AAC1J,6BAA6B;AAC7B,4BAA4B;AAC5B,4CAA4C;AAC5C,oDAAoD;AACpD,4BAA4B;AAC5B,yBAAyB;AACzB,iDAAiD;AACjD,qBAAqB;AACrB,wDAAwD;AACxD,iFAAiF;AACjF,oBAAoB;AACpB,gBAAgB;AAChB,0BAA0B;AAC1B,+BAA+B;AAC/B,gBAAgB;AAChB,cAAc;AACd,SAAS;AACT,IAAI;AAIJ,MAAM;AACN,6HAA6H;AAC7H,eAAe;AACf,MAAM;AACN,oCAAoC;AACpC,uBAAuB;AACvB,IAAI;AAEJ,MAAM;AACN,2FAA2F;AAC3F,eAAe;AACf,MAAM;AACN,2GAA2G;AAC3G,6IAA6I;AAC7I,kGAAkG;AAClG,uHAAuH;AACvH,sHAAsH;AACtH,oFAAoF;AACpF,wBAAwB;AACxB,IAAI"}
@@ -16,8 +16,19 @@ export declare abstract class TemplateExtensionBase {
16
16
  get tags(): string[];
17
17
  /** @deprecated Use {@link Tags}. */
18
18
  set tags(value: string[]);
19
- get ContextUser(): UserInfo;
19
+ /**
20
+ * The user this extension acts for: the user of the render in progress. An extension instance is
21
+ * shared by every render in the process, so it must read this at run time and never cache it.
22
+ * Inside a render that has no user it is undefined; it never falls back to the user the instance
23
+ * was constructed with, which is whichever caller first configured the engine. Outside a render
24
+ * it returns the constructed user.
25
+ */
26
+ get ContextUser(): UserInfo | undefined;
20
27
  private _contextUser;
28
+ /**
29
+ * @param contextUser fallback for {@link ContextUser} outside a render. The engine builds its
30
+ * extensions once, with whichever user configured it first, so a render never relies on this.
31
+ */
21
32
  constructor(contextUser: UserInfo);
22
33
  /**
23
34
  * Required, must implement this method to parse the template and return the results of a call to nodes.CallExtensionAsync()
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateExtensionBase.d.ts","sourceRoot":"","sources":["../../src/extensions/TemplateExtensionBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,KAAK,MAAM,GAAG,GAAG,CAAC;AAClB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,OAAO,GAAG,GAAG,CAAC;AAInB,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;AAEzE;;GAEG;AACH,8BAAsB,qBAAqB;IACvC;;OAEG;IACI,IAAI,EAAE,MAAM,EAAE,CAAM;IAE3B,oCAAoC;IACpC,IAAW,IAAI,IAAI,MAAM,EAAE,CAE1B;IACD,oCAAoC;IACpC,IAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAE9B;IAED,IAAW,WAAW,IAAI,QAAQ,CAEjC;IACD,OAAO,CAAC,YAAY,CAAW;gBAEnB,WAAW,EAAE,QAAQ;IAIjC;;;;;OAKG;aACa,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG;IACtE;;;;;;;;;;;;;;;;;OAiBG;aACa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CACvD"}
1
+ {"version":3,"file":"TemplateExtensionBase.d.ts","sourceRoot":"","sources":["../../src/extensions/TemplateExtensionBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,KAAK,MAAM,GAAG,GAAG,CAAC;AAClB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,KAAK,GAAG,GAAG,CAAC;AACjB,KAAK,OAAO,GAAG,GAAG,CAAC;AAInB,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;AAEzE;;GAEG;AACH,8BAAsB,qBAAqB;IACvC;;OAEG;IACI,IAAI,EAAE,MAAM,EAAE,CAAM;IAE3B,oCAAoC;IACpC,IAAW,IAAI,IAAI,MAAM,EAAE,CAE1B;IACD,oCAAoC;IACpC,IAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAE9B;IAED;;;;;;OAMG;IACH,IAAW,WAAW,IAAI,QAAQ,GAAG,SAAS,CAE7C;IACD,OAAO,CAAC,YAAY,CAAW;IAE/B;;;OAGG;gBACS,WAAW,EAAE,QAAQ;IAIjC;;;;;OAKG;aACa,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG;IACtE;;;;;;;;;;;;;;;;;OAiBG;aACa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CACvD"}
@@ -1,3 +1,4 @@
1
+ import { CurrentTemplateRenderUser, IsInsideTemplateRender } from "../TemplateRenderUser.js";
1
2
  /**
2
3
  * Used for extending the functionality of the template engine (Nunjucks). Sub-class this class to create a new template extension.
3
4
  */
@@ -10,9 +11,20 @@ export class TemplateExtensionBase {
10
11
  set tags(value) {
11
12
  this.Tags = value;
12
13
  }
14
+ /**
15
+ * The user this extension acts for: the user of the render in progress. An extension instance is
16
+ * shared by every render in the process, so it must read this at run time and never cache it.
17
+ * Inside a render that has no user it is undefined; it never falls back to the user the instance
18
+ * was constructed with, which is whichever caller first configured the engine. Outside a render
19
+ * it returns the constructed user.
20
+ */
13
21
  get ContextUser() {
14
- return this._contextUser;
22
+ return IsInsideTemplateRender() ? CurrentTemplateRenderUser() : this._contextUser;
15
23
  }
24
+ /**
25
+ * @param contextUser fallback for {@link ContextUser} outside a render. The engine builds its
26
+ * extensions once, with whichever user configured it first, so a render never relies on this.
27
+ */
16
28
  constructor(contextUser) {
17
29
  /**
18
30
  * One or more tags that represent case-sensitive tag names that will invoke this extension.
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateExtensionBase.js","sourceRoot":"","sources":["../../src/extensions/TemplateExtensionBase.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,OAAgB,qBAAqB;IAMvC,oCAAoC;IACpC,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,oCAAoC;IACpC,IAAW,IAAI,CAAC,KAAe;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAGD,YAAY,WAAqB;QAnBjC;;WAEG;QACI,SAAI,GAAa,EAAE,CAAC;QAiBvB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;CA4BJ"}
1
+ {"version":3,"file":"TemplateExtensionBase.js","sourceRoot":"","sources":["../../src/extensions/TemplateExtensionBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAW1F;;GAEG;AACH,MAAM,OAAgB,qBAAqB;IAMvC,oCAAoC;IACpC,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,oCAAoC;IACpC,IAAW,IAAI,CAAC,KAAe;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,IAAW,WAAW;QAClB,OAAO,sBAAsB,EAAE,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IACtF,CAAC;IAGD;;;OAGG;IACH,YAAY,WAAqB;QA9BjC;;WAEG;QACI,SAAI,GAAa,EAAE,CAAC;QA4BvB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;CA4BJ"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './TemplateEngine.js';
2
+ export * from './TemplateRenderUser.js';
2
3
  export * from './NunjucksSandbox.js';
3
4
  export * from './NunjucksCompileGuard.js';
4
5
  export * from './TemplateSandboxError.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './TemplateEngine.js';
2
+ export * from './TemplateRenderUser.js';
2
3
  export * from './NunjucksSandbox.js';
3
4
  export * from './NunjucksCompileGuard.js';
4
5
  export * from './TemplateSandboxError.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateRunOperation.d.ts","sourceRoot":"","sources":["../../src/operations/TemplateRunOperation.ts"],"names":[],"mappings":"AAUA,OAAO,EAA0B,iBAAiB,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIpH,qBACa,0BAA2B,SAAQ,oBAAoB;IAChE;;;;OAIG;cACsB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;cAI9E,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAqCpI"}
1
+ {"version":3,"file":"TemplateRunOperation.d.ts","sourceRoot":"","sources":["../../src/operations/TemplateRunOperation.ts"],"names":[],"mappings":"AAUA,OAAO,EAA0B,iBAAiB,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIpH,qBACa,0BAA2B,SAAQ,oBAAoB;IAChE;;;;OAIG;cACsB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;cAI9E,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAwCpI"}
@@ -43,13 +43,14 @@ let TemplateRunServerOperation = class TemplateRunServerOperation extends Templa
43
43
  ExtraFilter: `TemplateID = '${input.templateID}'`,
44
44
  OrderBy: 'Priority ASC',
45
45
  MaxRows: 1,
46
+ SkipTotalRowCount: true,
46
47
  ResultType: 'entity_object',
47
48
  }, user);
48
49
  if (!contentResult.Results?.length) {
49
50
  throw new Error(`No template content found for template ${templateEntity.Name}`);
50
51
  }
51
52
  await TemplateEngineServer.Instance.Config(true /* refresh to get latest templates */, user, provider);
52
- const result = await TemplateEngineServer.Instance.RenderTemplate(templateEntity, contentResult.Results[0], input.data ?? {}, true /* skip validation for execution */);
53
+ const result = await TemplateEngineServer.Instance.RenderTemplate(templateEntity, contentResult.Results[0], input.data ?? {}, true /* skip validation for execution */, undefined, { ContextUser: user });
53
54
  if (!result.Success) {
54
55
  throw new Error(result.Message ?? 'Template render failed');
55
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateRunOperation.js","sourceRoot":"","sources":["../../src/operations/TemplateRunOperation.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAqB,QAAQ,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,oBAAoB,EAAiD,MAAM,+BAA+B,CAAC;AACpH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG5D,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,oBAAoB;IAChE;;;;OAIG;IACgB,KAAK,CAAC,SAAS,CAAC,MAAwB,EAAE,IAAc;QACvE,OAAO,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,qGAAqG;IACzK,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,KAAuB,EAAE,QAA2B,EAAE,IAAc;QAChG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,eAAe,CAA2B,eAAe,EAAE,IAAI,CAAC,CAAC;QACvG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,UAAU,YAAY,CAAC,CAAC;QACtE,CAAC;QAED,6CAA6C;QAC7C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAA0B;YAChG,UAAU,EAAE,uBAAuB;YACnC,WAAW,EAAE,iBAAiB,KAAK,CAAC,UAAU,GAAG;YACjD,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,eAAe;SAC9B,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAC7D,cAAc,EACd,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,IAAI,IAAI,EAAE,EAChB,IAAI,CAAC,mCAAmC,CAC3C,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IACpF,CAAC;CACJ,CAAA;AA/CY,0BAA0B;IADtC,aAAa,CAAC,sBAAsB,EAAE,cAAc,CAAC;GACzC,0BAA0B,CA+CtC"}
1
+ {"version":3,"file":"TemplateRunOperation.js","sourceRoot":"","sources":["../../src/operations/TemplateRunOperation.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAqB,QAAQ,EAAE,OAAO,EAAY,MAAM,sBAAsB,CAAC;AAE9G,OAAO,EAAE,oBAAoB,EAAiD,MAAM,+BAA+B,CAAC;AACpH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG5D,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,oBAAoB;IAChE;;;;OAIG;IACgB,KAAK,CAAC,SAAS,CAAC,MAAwB,EAAE,IAAc;QACvE,OAAO,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,qGAAqG;IACzK,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,KAAuB,EAAE,QAA2B,EAAE,IAAc;QAChG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,eAAe,CAA2B,eAAe,EAAE,IAAI,CAAC,CAAC;QACvG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,UAAU,YAAY,CAAC,CAAC;QACtE,CAAC;QAED,6CAA6C;QAC7C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAA0B;YAChG,UAAU,EAAE,uBAAuB;YACnC,WAAW,EAAE,iBAAiB,KAAK,CAAC,UAAU,GAAG;YACjD,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,CAAC;YACV,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,eAAe;SAC9B,EAAE,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAC7D,cAAc,EACd,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,IAAI,IAAI,EAAE,EAChB,IAAI,CAAC,mCAAmC,EACxC,SAAS,EACT,EAAE,WAAW,EAAE,IAAI,EAAE,CACxB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IACpF,CAAC;CACJ,CAAA;AAlDY,0BAA0B;IADtC,aAAa,CAAC,sBAAsB,EAAE,cAAc,CAAC;GACzC,0BAA0B,CAkDtC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/templates",
3
3
  "type": "module",
4
- "version": "6.2.0-edge.5",
4
+ "version": "6.2.0-edge.7",
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",
@@ -14,14 +14,14 @@
14
14
  "typescript": "^5.9.3"
15
15
  },
16
16
  "dependencies": {
17
- "@memberjunction/core": "6.2.0-edge.5",
18
- "@memberjunction/templates-base-types": "6.2.0-edge.5",
19
- "@memberjunction/ai": "6.2.0-edge.5",
20
- "@memberjunction/ai-core-plus": "6.2.0-edge.5",
21
- "@memberjunction/aiengine": "6.2.0-edge.5",
22
- "@memberjunction/ai-provider-bundle": "6.2.0-edge.5",
23
- "@memberjunction/core-entities": "6.2.0-edge.5",
24
- "@memberjunction/global": "6.2.0-edge.5",
17
+ "@memberjunction/core": "6.2.0-edge.7",
18
+ "@memberjunction/templates-base-types": "6.2.0-edge.7",
19
+ "@memberjunction/ai": "6.2.0-edge.7",
20
+ "@memberjunction/ai-core-plus": "6.2.0-edge.7",
21
+ "@memberjunction/aiengine": "6.2.0-edge.7",
22
+ "@memberjunction/ai-provider-bundle": "6.2.0-edge.7",
23
+ "@memberjunction/core-entities": "6.2.0-edge.7",
24
+ "@memberjunction/global": "6.2.0-edge.7",
25
25
  "nunjucks": "3.2.4"
26
26
  },
27
27
  "repository": {