@accordproject/template-engine 5.1.0 → 5.2.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.
Files changed (44) hide show
  1. package/README.md +39 -0
  2. package/lib/JavaScriptEvaluator.js +18 -17
  3. package/lib/JavaScriptEvaluator.js.map +1 -1
  4. package/lib/TemplateArchiveProcessor.d.ts +26 -1
  5. package/lib/TemplateArchiveProcessor.js +72 -8
  6. package/lib/TemplateArchiveProcessor.js.map +1 -1
  7. package/lib/TemplateMarkInterpreter.d.ts +12 -1
  8. package/lib/TemplateMarkInterpreter.js +133 -29
  9. package/lib/TemplateMarkInterpreter.js.map +1 -1
  10. package/lib/TemplateMarkToJavaScriptCompiler.d.ts +32 -1
  11. package/lib/TemplateMarkToJavaScriptCompiler.js +54 -6
  12. package/lib/TemplateMarkToJavaScriptCompiler.js.map +1 -1
  13. package/lib/TypeScriptCompilationContext.d.ts +2 -1
  14. package/lib/TypeScriptCompilationContext.js +12 -1
  15. package/lib/TypeScriptCompilationContext.js.map +1 -1
  16. package/lib/TypeScriptToJavaScriptCompiler.d.ts +7 -2
  17. package/lib/TypeScriptToJavaScriptCompiler.js +99 -35
  18. package/lib/TypeScriptToJavaScriptCompiler.js.map +1 -1
  19. package/lib/UserLogic.d.ts +59 -0
  20. package/lib/UserLogic.js +129 -0
  21. package/lib/UserLogic.js.map +1 -0
  22. package/lib/drafting/Double/format.js +5 -1
  23. package/lib/drafting/Double/format.js.map +1 -1
  24. package/lib/drafting/Integer/format.js +5 -1
  25. package/lib/drafting/Integer/format.js.map +1 -1
  26. package/lib/index.d.ts +2 -0
  27. package/lib/index.js +3 -1
  28. package/lib/index.js.map +1 -1
  29. package/lib/llm/LLMExecutor.d.ts +3 -1
  30. package/lib/llm/LLMExecutor.js +3 -2
  31. package/lib/llm/LLMExecutor.js.map +1 -1
  32. package/lib/llm/Reasoners.d.ts +77 -10
  33. package/lib/llm/Reasoners.js +101 -69
  34. package/lib/llm/Reasoners.js.map +1 -1
  35. package/lib/llm/index.d.ts +1 -1
  36. package/lib/runtime/typescriptLibs.d.ts +2 -0
  37. package/lib/runtime/typescriptLibs.js +21 -0
  38. package/lib/runtime/typescriptLibs.js.map +1 -0
  39. package/lib/utils.d.ts +29 -1
  40. package/lib/utils.js +62 -2
  41. package/lib/utils.js.map +1 -1
  42. package/package.json +29 -3
  43. package/umd/template-engine.js +5 -5
  44. package/umd/template-engine.js.LICENSE.txt +1 -1
@@ -49,15 +49,32 @@ const TEMPLATEMARK_ROOT_NODES = [
49
49
  'org.accordproject.templatemark@0.5.0.ContractDefinition'
50
50
  ];
51
51
  const DOCUMENT_ROOT = 'org.accordproject.commonmark@0.5.0.Document';
52
+ /**
53
+ * Determines whether a JS expression references any of the top-level symbols
54
+ * declared by the template's logic/logic.ts. Only those expressions need the
55
+ * (potentially large) logic prelude spliced into their function body.
56
+ * @param {string} expression the JS expression
57
+ * @param {CompiledUserLogic} userLogic the compiled user logic, if any
58
+ * @returns {boolean} true if the expression references a user logic symbol
59
+ */
60
+ function usesUserLogic(expression, userLogic) {
61
+ if (!userLogic || !userLogic.prelude || userLogic.symbols.length === 0) {
62
+ return false;
63
+ }
64
+ return userLogic.symbols.some(name => new RegExp(`(^|[^\\w$.])${name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}($|[^\\w$])`).test(expression));
65
+ }
52
66
  /**
53
67
  * Evaluates a JS expression
54
68
  * @param {*} clauseLibrary the clause library
55
69
  * @param {*} data the contract data
56
70
  * @param {string} fn the JS function (including header)
71
+ * @param {CompiledUserLogic} userLogic the compiled logic/logic.ts, whose prelude is spliced
72
+ * into the formula function body when the expression references one of its helpers
73
+ * (e.g. `monthlyPaymentFormula`), so they are in scope.
57
74
  * @param {GenerationOptions} options the generation options
58
75
  * @returns {object} the result of evaluating the expression against the data
59
76
  */
60
- async function evaluateJavaScript(clauseLibrary, data, fn, options) {
77
+ async function evaluateJavaScript(clauseLibrary, data, fn, userLogic, options) {
61
78
  if (options?.disableJavaScriptEvaluation) {
62
79
  throw new Error('JavaScript evaluation is disabled.');
63
80
  }
@@ -77,8 +94,9 @@ async function evaluateJavaScript(clauseLibrary, data, fn, options) {
77
94
  if (expression.trim().length === 0) {
78
95
  throw new Error('Empty expression');
79
96
  }
97
+ const codeWithPrelude = usesUserLogic(expression, userLogic) ? `${userLogic?.prelude}\n${expression}` : expression;
80
98
  try {
81
- const request = { code: expression, argumentNames: functionArgNames, arguments: functionArgValues };
99
+ const request = { code: codeWithPrelude, argumentNames: functionArgNames, arguments: functionArgValues };
82
100
  if (options?.childProcessJavaScriptEvaluation) {
83
101
  if (browser_or_node_1.isBrowser) {
84
102
  throw new Error('Child process evaluation is not supported inside web browser');
@@ -96,6 +114,31 @@ async function evaluateJavaScript(clauseLibrary, data, fn, options) {
96
114
  throw new Error(`Caught error ${JSON.stringify(err)} evaluating ${expression} with arguments ${JSON.stringify(functionArgValues)}`);
97
115
  }
98
116
  }
117
+ /**
118
+ * Returns true if an element type is a scalar (a primitive or an enum), i.e.
119
+ * a type whose value is not an object that can be navigated into.
120
+ * @param {ModelManager} [modelManager] the model manager used to resolve enums
121
+ * @param {string} [elementType] the fully-qualified element type
122
+ * @returns {boolean} true if the type is a primitive or an enum
123
+ */
124
+ function isScalarType(modelManager, elementType) {
125
+ if (!elementType) {
126
+ return false;
127
+ }
128
+ if (concerto_core_2.ModelUtil.isPrimitiveType(elementType)) {
129
+ return true;
130
+ }
131
+ if (!modelManager) {
132
+ return false;
133
+ }
134
+ try {
135
+ const type = new concerto_core_1.Introspector(modelManager).getClassDeclaration(elementType);
136
+ return !!(type && type.isEnum());
137
+ }
138
+ catch {
139
+ return false;
140
+ }
141
+ }
99
142
  /**
100
143
  * Calculates a JSON path to use to retrieve data, based on a TemplatemMark tree.
101
144
  * For example, if we hit a VariableDefinition {{city}} that is nested inside a
@@ -105,9 +148,10 @@ async function evaluateJavaScript(clauseLibrary, data, fn, options) {
105
148
  * @param {*} rootData the root of the JSON document, typically this is a TemplateMark JSON
106
149
  * @param {*} currentNode the current TemplateMark node we are processing
107
150
  * @param {string[]} paths the traverse path to the current node
151
+ * @param {ModelManager} [modelManager] the model manager, used to detect optionals guarding enums
108
152
  * @returns {string} the JSON path to use to retrieve data
109
153
  */
110
- function getJsonPath(rootData, currentNode, paths) {
154
+ function getJsonPath(rootData, currentNode, paths, modelManager) {
111
155
  if (!currentNode) {
112
156
  throw new Error('Node must be supplied');
113
157
  }
@@ -122,6 +166,9 @@ function getJsonPath(rootData, currentNode, paths) {
122
166
  throw new Error('Paths must be supplied');
123
167
  }
124
168
  const withPath = [];
169
+ // the innermost enclosing optional that guards a scalar (primitive or enum) value, if
170
+ // it is also the innermost enclosing navigation node
171
+ let scalarOptional = null;
125
172
  for (let n = 1; n < paths.length; n++) {
126
173
  const sub = paths.slice(0, n);
127
174
  const obj = traverse_1.default.get(rootData, sub);
@@ -132,12 +179,27 @@ function getJsonPath(rootData, currentNode, paths) {
132
179
  if (obj && obj.$class) {
133
180
  if (TemplateMarkNodes_1.NAVIGATION_NODES.indexOf(obj.$class) >= 0) {
134
181
  if (obj.name !== 'top') { // HACK!!
135
- withPath.push(`['${obj.name}']`);
182
+ // A scalar optional has no property scope to navigate into, so named
183
+ // variables inside it (e.g. {{age}} in {{#optional age}}) resolve from
184
+ // the parent data context rather than as $['age']['age']
185
+ if (TemplateMarkNodes_1.OPTIONAL_DEFINITION_RE.test(obj.$class) && isScalarType(modelManager, obj.elementType)) {
186
+ scalarOptional = obj.name;
187
+ }
188
+ else {
189
+ withPath.push(`['${obj.name}']`);
190
+ scalarOptional = null;
191
+ }
136
192
  }
137
193
  }
138
194
  }
139
195
  }
140
- if (currentNode.name !== 'this' && currentNode.name !== 'top') {
196
+ if (currentNode.name === 'this') {
197
+ // {{this}} directly inside a scalar optional refers to the optional value itself
198
+ if (scalarOptional) {
199
+ withPath.push(`['${scalarOptional}']`);
200
+ }
201
+ }
202
+ else if (currentNode.name !== 'top') {
141
203
  withPath.push(`['${currentNode.name}']`);
142
204
  }
143
205
  return withPath.length > 0 ? `$${withPath.join('')}` : '$';
@@ -147,10 +209,11 @@ function getJsonPath(rootData, currentNode, paths) {
147
209
  * @param {*} clauseLibrary - the clause library
148
210
  * @param {*} templateMark - the TemplateMark JSON document
149
211
  * @param {*} data - the template data JSON
212
+ * @param {CompiledUserLogic} userLogic - the compiled logic/logic.ts, exposing its helpers
150
213
  * @param {[GenerationOptions]} options - the generation options
151
214
  * @returns {Promise<UserCodeResult>} a promise to a UserCodeResult
152
215
  */
153
- async function evaluateUserCode(clauseLibrary, templateMark, data, options) {
216
+ async function evaluateUserCode(clauseLibrary, templateMark, data, userLogic, options) {
154
217
  const result = {};
155
218
  const paths = (0, traverse_1.default)(templateMark).paths();
156
219
  for (let n = 0; n < paths.length; n++) {
@@ -161,7 +224,7 @@ async function evaluateUserCode(clauseLibrary, templateMark, data, options) {
161
224
  if (TemplateMarkNodes_1.FORMULA_DEFINITION_RE.test(nodeClass)) {
162
225
  if (context.code) {
163
226
  checkCode(context.code);
164
- const evalResponse = await evaluateJavaScript(clauseLibrary, data, context.code.contents, options);
227
+ const evalResponse = await evaluateJavaScript(clauseLibrary, data, context.code.contents, userLogic, options);
165
228
  result[path.join('/')] = JSON.stringify(evalResponse.result);
166
229
  }
167
230
  else {
@@ -171,7 +234,7 @@ async function evaluateUserCode(clauseLibrary, templateMark, data, options) {
171
234
  else if (TemplateMarkNodes_1.CONDITIONAL_DEFINITION_RE.test(nodeClass) || TemplateMarkNodes_1.CLAUSE_DEFINITION_RE.test(nodeClass)) {
172
235
  if (context.condition) {
173
236
  checkCode(context.condition);
174
- const evalResponse = await evaluateJavaScript(clauseLibrary, data, context.condition.contents, options);
237
+ const evalResponse = await evaluateJavaScript(clauseLibrary, data, context.condition.contents, userLogic, options);
175
238
  result[path.join('/')] = JSON.stringify(evalResponse.result);
176
239
  }
177
240
  }
@@ -189,7 +252,7 @@ async function evaluateUserCode(clauseLibrary, templateMark, data, options) {
189
252
  * @param {[GenerationOptions]} options - the generation options
190
253
  * @returns {*} the AgreementMark JSON for optional blocks
191
254
  */
192
- async function generateOptionalBlocks(modelManager, clauseLibrary, templateMark, data, options) {
255
+ async function generateOptionalBlocks(modelManager, clauseLibrary, templateMark, data, userLogic, options) {
193
256
  const result = {};
194
257
  const paths = (0, traverse_1.default)(templateMark).paths();
195
258
  for (let n = 0; n < paths.length; n++) {
@@ -199,11 +262,18 @@ async function generateOptionalBlocks(modelManager, clauseLibrary, templateMark,
199
262
  const nodeClass = context.$class;
200
263
  // evaluate optional blocks, processing the whenSome content with the optional property value as context
201
264
  if (TemplateMarkNodes_1.OPTIONAL_DEFINITION_RE.test(nodeClass)) {
202
- const path = getJsonPath(templateMark, context, thisPath);
265
+ const path = getJsonPath(templateMark, context, thisPath, modelManager);
203
266
  const variableValues = jsonpath_1.default.query(data, path, 1);
204
267
  if (variableValues.length > 0) {
205
268
  // Optional property exists, process whenSome with the property value as context
206
269
  const optionalPropertyValue = variableValues[0];
270
+ // Scalar optional values (primitives and enums) are not pre-processed: the
271
+ // normal traverse handles them with the full parent data context, so that
272
+ // both {{this}} and named variables like {{age}} resolve inside
273
+ // {{#optional age}}...{{/optional}}.
274
+ if (typeof optionalPropertyValue !== 'object' || optionalPropertyValue === null) {
275
+ continue;
276
+ }
207
277
  if (context.whenSome && context.whenSome.length > 0) {
208
278
  // Create a paragraph wrapper for the whenSome content
209
279
  const whenSomeParagraph = {
@@ -211,7 +281,7 @@ async function generateOptionalBlocks(modelManager, clauseLibrary, templateMark,
211
281
  nodes: context.whenSome
212
282
  };
213
283
  // Process with the optional property value as the new data context
214
- const subResult = await generateAgreement(modelManager, clauseLibrary, whenSomeParagraph, optionalPropertyValue, options);
284
+ const subResult = await generateAgreement(modelManager, clauseLibrary, whenSomeParagraph, optionalPropertyValue, userLogic, options);
215
285
  result[thisPath.join('/')] = subResult.nodes ? subResult.nodes : [];
216
286
  }
217
287
  else {
@@ -237,7 +307,7 @@ async function generateOptionalBlocks(modelManager, clauseLibrary, templateMark,
237
307
  * @param {[GenerationOptions]} options - the generation options
238
308
  * @returns {*} the AgreementMark JSON for the list block
239
309
  */
240
- async function generateRecursiveBlocks(modelManager, clauseLibrary, templateMark, data, nodeRegExp, childNodeClass, options) {
310
+ async function generateRecursiveBlocks(modelManager, clauseLibrary, templateMark, data, nodeRegExp, childNodeClass, userLogic, options) {
241
311
  const result = {};
242
312
  const paths = (0, traverse_1.default)(templateMark).paths();
243
313
  for (let n = 0; n < paths.length; n++) {
@@ -247,7 +317,7 @@ async function generateRecursiveBlocks(modelManager, clauseLibrary, templateMark
247
317
  const nodeClass = context.$class;
248
318
  // evaluate nodes, recursing on each child item
249
319
  if (nodeRegExp.test(nodeClass)) {
250
- const path = getJsonPath(templateMark, context, thisPath);
320
+ const path = getJsonPath(templateMark, context, thisPath, modelManager);
251
321
  const variableValues = jsonpath_1.default.query(data, path, 1);
252
322
  if (variableValues.length === 0) {
253
323
  throw new Error(`No values found for path '${path}' in data ${JSON.stringify(data)}.`);
@@ -278,7 +348,7 @@ async function generateRecursiveBlocks(modelManager, clauseLibrary, templateMark
278
348
  for (let n = 0; n < arrayData.length; n++) {
279
349
  const arrayItem = arrayData[n];
280
350
  // arrayItem is now the data for the nested generation
281
- const subResult = await generateAgreement(modelManager, clauseLibrary, itemTemplate, arrayItem, options);
351
+ const subResult = await generateAgreement(modelManager, clauseLibrary, itemTemplate, arrayItem, userLogic, options);
282
352
  // When the template had a List/Item wrapper, the processed Item's
283
353
  // children (a Paragraph) become the children of the new output Item.
284
354
  // Otherwise the processed block itself becomes the sole child of
@@ -308,15 +378,15 @@ async function generateRecursiveBlocks(modelManager, clauseLibrary, templateMark
308
378
  * @param {[GenerationOptions]} options - the generation options
309
379
  * @returns {*} the AgreementMark JSON
310
380
  */
311
- async function generateAgreement(modelManager, clauseLibrary, templateMark, data, options) {
381
+ async function generateAgreement(modelManager, clauseLibrary, templateMark, data, userLogic, options) {
312
382
  const introspector = new concerto_core_1.Introspector(modelManager);
313
383
  // evaluate all the user code (async)
314
- const userCodeResults = await evaluateUserCode(clauseLibrary, templateMark, data, options);
384
+ const userCodeResults = await evaluateUserCode(clauseLibrary, templateMark, data, userLogic, options);
315
385
  // evaluate all recursive blocks (async)
316
- const listBlockResults = await generateRecursiveBlocks(modelManager, clauseLibrary, templateMark, data, TemplateMarkNodes_1.LISTBLOCK_DEFINITION_RE, `${markdown_common_1.CommonMarkModel.NAMESPACE}.Item`, options);
317
- const foreachBlockResults = await generateRecursiveBlocks(modelManager, clauseLibrary, templateMark, data, TemplateMarkNodes_1.FOREACH_DEFINITION_RE, `${markdown_common_1.CommonMarkModel.NAMESPACE}.Paragraph`, options);
386
+ const listBlockResults = await generateRecursiveBlocks(modelManager, clauseLibrary, templateMark, data, TemplateMarkNodes_1.LISTBLOCK_DEFINITION_RE, `${markdown_common_1.CommonMarkModel.NAMESPACE}.Item`, userLogic, options);
387
+ const foreachBlockResults = await generateRecursiveBlocks(modelManager, clauseLibrary, templateMark, data, TemplateMarkNodes_1.FOREACH_DEFINITION_RE, `${markdown_common_1.CommonMarkModel.NAMESPACE}.Paragraph`, userLogic, options);
318
388
  // evaluate all optional blocks (async)
319
- const optionalBlockResults = await generateOptionalBlocks(modelManager, clauseLibrary, templateMark, data, options);
389
+ const optionalBlockResults = await generateOptionalBlocks(modelManager, clauseLibrary, templateMark, data, userLogic, options);
320
390
  // traverse the templatemark, creating an output agreementmark tree
321
391
  return (0, traverse_1.default)(templateMark).map(function (context) {
322
392
  let stopHere = false;
@@ -346,7 +416,12 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
346
416
  else if (TemplateMarkNodes_1.FORMULA_DEFINITION_RE.test(nodeClass)) {
347
417
  if (context.code) {
348
418
  const result = userCodeResults[this.path.join('/')];
349
- if (result === null) {
419
+ if (result === undefined) {
420
+ // JSON.stringify(undefined) is undefined, which would leave the
421
+ // required `value` field unset and fail downstream validation.
422
+ throw new Error(`Formula '${context.name}' did not return a value. Formulas must be an expression or use 'return' to produce a value.`);
423
+ }
424
+ else if (result === null) {
350
425
  context.value = '<null>';
351
426
  }
352
427
  else if (typeof result === 'string') {
@@ -371,7 +446,7 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
371
446
  }
372
447
  // map over an array of items, joining them into a Text node
373
448
  else if (TemplateMarkNodes_1.JOIN_DEFINITION_RE.test(nodeClass)) {
374
- const path = getJsonPath(templateMark, context, this.path);
449
+ const path = getJsonPath(templateMark, context, this.path, modelManager);
375
450
  const variableValues = jsonpath_1.default.query(data, path, 1);
376
451
  if (variableValues.length === 0) {
377
452
  throw new Error(`No values found for path '${path}' in data ${JSON.stringify(data)}.`);
@@ -412,7 +487,7 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
412
487
  TemplateMarkNodes_1.ENUM_VARIABLE_DEFINITION_RE.test(nodeClass) ||
413
488
  TemplateMarkNodes_1.FORMATTED_VARIABLE_DEFINITION_RE.test(nodeClass)) {
414
489
  if (typeof data === 'object') {
415
- const path = getJsonPath(templateMark, context, this.path);
490
+ const path = getJsonPath(templateMark, context, this.path, modelManager);
416
491
  const variableValues = jsonpath_1.default.query(data, path, 1);
417
492
  if (variableValues.length === 0) {
418
493
  throw new Error(`No values found for path '${path}' in data ${JSON.stringify(data)}.`);
@@ -456,7 +531,7 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
456
531
  }
457
532
  }
458
533
  else {
459
- const path = getJsonPath(templateMark, context, this.path);
534
+ const path = getJsonPath(templateMark, context, this.path, modelManager);
460
535
  const variableValues = jsonpath_1.default.query(data, path, 1);
461
536
  if (variableValues && variableValues.length) {
462
537
  if (variableValues.length === 1) {
@@ -477,7 +552,7 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
477
552
  }
478
553
  // only include the children of a clause if its condition is true
479
554
  else if (TemplateMarkNodes_1.CLAUSE_DEFINITION_RE.test(nodeClass)) {
480
- const path = getJsonPath(templateMark, context, this.path);
555
+ const path = getJsonPath(templateMark, context, this.path, modelManager);
481
556
  const variableValues = jsonpath_1.default.query(data, path, 1);
482
557
  // If there's an explicit condition, evaluate it first (takes precedence over implicit check).
483
558
  // This allows conditions like "return address!==undefined" to work correctly when
@@ -516,7 +591,7 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
516
591
  }
517
592
  // add a 'hasSome' property to OptionalDefinition
518
593
  else if (TemplateMarkNodes_1.OPTIONAL_DEFINITION_RE.test(nodeClass)) {
519
- const path = getJsonPath(templateMark, context, this.path);
594
+ const path = getJsonPath(templateMark, context, this.path, modelManager);
520
595
  const variableValues = jsonpath_1.default.query(data, path, 1);
521
596
  if (variableValues && variableValues.length) {
522
597
  if (variableValues.length === 1) {
@@ -530,7 +605,9 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
530
605
  stopHere = true; // do not process child nodes, we've already done it above...
531
606
  }
532
607
  else {
608
+ // scalar optionals are processed in place, with the parent data context
533
609
  context.nodes = context.whenSome;
610
+ context.whenSome = [];
534
611
  }
535
612
  }
536
613
  else {
@@ -552,10 +629,12 @@ async function generateAgreement(modelManager, clauseLibrary, templateMark, data
552
629
  * JSON data to produce JSON data.
553
630
  */
554
631
  class TemplateMarkInterpreter {
555
- constructor(modelManager, clauseLibrary, templateConceptFqn) {
632
+ constructor(modelManager, clauseLibrary, templateConceptFqn, userLogic) {
633
+ this.compilers = new Map();
556
634
  this.modelManager = modelManager;
557
635
  this.clauseLibrary = clauseLibrary;
558
636
  this.templateClass = (0, utils_1.getTemplateClassDeclaration)(this.modelManager, templateConceptFqn);
637
+ this.userLogic = userLogic;
559
638
  }
560
639
  /**
561
640
  * Checks that a TemplateMark JSON document is valid with respect to the
@@ -652,10 +731,35 @@ class TemplateMarkInterpreter {
652
731
  if (firstChild.name !== 'top') {
653
732
  throw new Error('First child is not named "top"!');
654
733
  }
655
- const compiler = new TemplateMarkToJavaScriptCompiler_1.TemplateMarkToJavaScriptCompiler(this.modelManager, templateConcept);
656
- await compiler.initialize();
734
+ if (!(0, TemplateMarkToJavaScriptCompiler_1.hasUserCode)(templateMark)) {
735
+ // nothing to compile, so don't load the TypeScript compiler
736
+ return templateMark;
737
+ }
738
+ const compiler = await this.getCompiler(templateConcept);
657
739
  return compiler.compile(templateMark);
658
740
  }
741
+ /**
742
+ * Returns an initialized compiler for a template concept, creating it
743
+ * on first use and reusing it for later calls.
744
+ * @param {string} templateConcept the fully qualified name of the template concept
745
+ * @returns {Promise<TemplateMarkToJavaScriptCompiler>} the compiler
746
+ */
747
+ getCompiler(templateConcept) {
748
+ let compiler = this.compilers.get(templateConcept);
749
+ if (!compiler) {
750
+ const created = new TemplateMarkToJavaScriptCompiler_1.TemplateMarkToJavaScriptCompiler(this.modelManager, templateConcept, this.userLogic?.symbols ?? []);
751
+ const initialized = created.initialize().then(() => created);
752
+ initialized.catch(() => {
753
+ // don't cache a failed initialization, so that a later call can retry
754
+ if (this.compilers.get(templateConcept) === initialized) {
755
+ this.compilers.delete(templateConcept);
756
+ }
757
+ });
758
+ this.compilers.set(templateConcept, initialized);
759
+ compiler = initialized;
760
+ }
761
+ return compiler;
762
+ }
659
763
  validateCiceroMark(ciceroMark) {
660
764
  const modelManager = new concerto_core_1.ModelManager();
661
765
  modelManager.addCTOModel(markdown_common_1.ConcertoMetaModel.MODEL, 'concertometamodel.cto');
@@ -680,7 +784,7 @@ class TemplateMarkInterpreter {
680
784
  const typedTemplateMark = this.checkTypes(templateMark);
681
785
  const jsTemplateMark = await this.compileTypeScriptToJavaScript(typedTemplateMark);
682
786
  // console.log('Compiled JS: ' + JSON.stringify(jsTemplateMark, null, 2));
683
- const ciceroMark = await generateAgreement(this.modelManager, this.clauseLibrary, jsTemplateMark, data, options);
787
+ const ciceroMark = await generateAgreement(this.modelManager, this.clauseLibrary, jsTemplateMark, data, this.userLogic, options);
684
788
  // console.log('Generated AgreementMark');
685
789
  return this.validateCiceroMark(ciceroMark);
686
790
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateMarkInterpreter.js","sourceRoot":"","sources":["../src/TemplateMarkInterpreter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateMarkInterpreter.js","sourceRoot":"","sources":["../src/TemplateMarkInterpreter.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,37 @@ export type CompilerError = {
6
6
  code: string;
7
7
  errors: TwoSlashReturn['errors'];
8
8
  };
9
+ /**
10
+ * Thrown when user code in a template fails to compile. The message is a
11
+ * human-readable summary; the full structured diagnostics for every failing
12
+ * node are available on the errors property inherited from AggregateError.
13
+ */
14
+ export declare class TemplateCompilationError extends AggregateError {
15
+ errors: CompilerError[];
16
+ /**
17
+ * Creates a new TemplateCompilationError
18
+ * @param {CompilerError[]} errors the compilation errors, one per failing node
19
+ */
20
+ constructor(errors: CompilerError[]);
21
+ /**
22
+ * Returns a plain object for JSON.stringify. Error's message and
23
+ * AggregateError's errors are non-enumerable, so they would otherwise
24
+ * be omitted.
25
+ * @returns {object} the name, message and structured compilation errors
26
+ */
27
+ toJSON(): {
28
+ name: string;
29
+ message: string;
30
+ errors: CompilerError[];
31
+ };
32
+ }
33
+ /**
34
+ * Returns true if the TemplateMark JSON contains any user code (formulas,
35
+ * conditions or clause conditions) that needs to be compiled.
36
+ * @param {*} templateJson the TemplateMark JSON object
37
+ * @returns {boolean} true if there is code to compile
38
+ */
39
+ export declare function hasUserCode(templateJson: any): boolean;
9
40
  /**
10
41
  * Compiles all the Typescript nodes in a TemplateMark JSON
11
42
  * to ES_2020 and returns a modified TemplateMark JSON.
@@ -14,7 +45,7 @@ export declare class TemplateMarkToJavaScriptCompiler {
14
45
  modelManager: ModelManager;
15
46
  compiler: TypeScriptToJavaScriptCompiler;
16
47
  templateClass: ClassDeclaration;
17
- constructor(modelManager: ModelManager, templateConceptFqn?: string);
48
+ constructor(modelManager: ModelManager, templateConceptFqn?: string, userLogicSymbols?: string[]);
18
49
  initialize(): Promise<void>;
19
50
  compile(templateJson: any): any;
20
51
  }
@@ -16,7 +16,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  return (mod && mod.__esModule) ? mod : { "default": mod };
17
17
  };
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.TemplateMarkToJavaScriptCompiler = void 0;
19
+ exports.TemplateMarkToJavaScriptCompiler = exports.TemplateCompilationError = void 0;
20
+ exports.hasUserCode = hasUserCode;
20
21
  /* eslint-disable @typescript-eslint/no-explicit-any */
21
22
  const traverse_1 = __importDefault(require("traverse"));
22
23
  const markdown_common_1 = require("@accordproject/markdown-common");
@@ -28,6 +29,53 @@ const CODE_NODES = [
28
29
  `${markdown_common_1.TemplateMarkModel.NAMESPACE}.ConditionalDefinition`,
29
30
  `${markdown_common_1.TemplateMarkModel.NAMESPACE}.ClauseDefinition`,
30
31
  ];
32
+ /**
33
+ * Thrown when user code in a template fails to compile. The message is a
34
+ * human-readable summary; the full structured diagnostics for every failing
35
+ * node are available on the errors property inherited from AggregateError.
36
+ */
37
+ class TemplateCompilationError extends AggregateError {
38
+ /**
39
+ * Creates a new TemplateCompilationError
40
+ * @param {CompilerError[]} errors the compilation errors, one per failing node
41
+ */
42
+ constructor(errors) {
43
+ super(errors, errors.map(e => {
44
+ const details = e.errors.map(d => {
45
+ const pos = d.line !== undefined ? ` (line ${d.line}, col ${d.character})` : '';
46
+ return `${d.renderedMessage}${pos}`;
47
+ });
48
+ return `Compilation error in '${e.nodeId}': ${details.join('; ')}`;
49
+ }).join('\n'));
50
+ this.name = 'TemplateCompilationError';
51
+ }
52
+ /**
53
+ * Returns a plain object for JSON.stringify. Error's message and
54
+ * AggregateError's errors are non-enumerable, so they would otherwise
55
+ * be omitted.
56
+ * @returns {object} the name, message and structured compilation errors
57
+ */
58
+ toJSON() {
59
+ return { name: this.name, message: this.message, errors: this.errors };
60
+ }
61
+ }
62
+ exports.TemplateCompilationError = TemplateCompilationError;
63
+ /**
64
+ * Returns true if the TemplateMark JSON contains any user code (formulas,
65
+ * conditions or clause conditions) that needs to be compiled.
66
+ * @param {*} templateJson the TemplateMark JSON object
67
+ * @returns {boolean} true if there is code to compile
68
+ */
69
+ function hasUserCode(templateJson) {
70
+ let found = false;
71
+ (0, traverse_1.default)(templateJson).forEach(function (x) {
72
+ if (x && CODE_NODES.includes(x.$class) && (x.code || x.condition)) {
73
+ found = true;
74
+ this.stop();
75
+ }
76
+ });
77
+ return found;
78
+ }
31
79
  function checkCode(code) {
32
80
  if (code.type !== org_accordproject_templatemark_0_5_0_1.CodeType.TYPESCRIPT) {
33
81
  throw new Error(`Cannot compile ${code.contents} as it is not Typescript.`);
@@ -38,9 +86,9 @@ function checkCode(code) {
38
86
  * to ES_2020 and returns a modified TemplateMark JSON.
39
87
  */
40
88
  class TemplateMarkToJavaScriptCompiler {
41
- constructor(modelManager, templateConceptFqn) {
89
+ constructor(modelManager, templateConceptFqn, userLogicSymbols = []) {
42
90
  this.modelManager = modelManager;
43
- this.compiler = new TypeScriptToJavaScriptCompiler_1.TypeScriptToJavaScriptCompiler(modelManager, templateConceptFqn);
91
+ this.compiler = new TypeScriptToJavaScriptCompiler_1.TypeScriptToJavaScriptCompiler(modelManager, templateConceptFqn, userLogicSymbols);
44
92
  this.templateClass = (0, utils_1.getTemplateClassDeclaration)(modelManager, templateConceptFqn);
45
93
  }
46
94
  async initialize() {
@@ -55,7 +103,7 @@ class TemplateMarkToJavaScriptCompiler {
55
103
  if (x && CODE_NODES.includes(x.$class)) {
56
104
  if (x.code) { // formula
57
105
  checkCode(x.code);
58
- const result = that.compiler.compile((0, utils_1.writeFunctionToString)(that.templateClass, x.name, 'any', x.code.contents));
106
+ const result = that.compiler.compile((0, utils_1.writeFunctionToString)(that.templateClass, x.name, 'any', x.code.contents, that.compiler.ts));
59
107
  if (result.errors.length === 0) {
60
108
  x.code.contents = result.code;
61
109
  x.code.type = org_accordproject_templatemark_0_5_0_1.CodeType.ES_2020;
@@ -71,7 +119,7 @@ class TemplateMarkToJavaScriptCompiler {
71
119
  }
72
120
  else if (x.condition) { // condition or clause (boolean condition)
73
121
  checkCode(x.condition);
74
- const result = that.compiler.compile((0, utils_1.writeFunctionToString)(that.templateClass, x.functionName, 'boolean', x.condition.contents));
122
+ const result = that.compiler.compile((0, utils_1.writeFunctionToString)(that.templateClass, x.functionName, 'boolean', x.condition.contents, that.compiler.ts));
75
123
  if (result.errors.length === 0) {
76
124
  x.condition.contents = result.code;
77
125
  x.condition.type = org_accordproject_templatemark_0_5_0_1.CodeType.ES_2020;
@@ -91,7 +139,7 @@ class TemplateMarkToJavaScriptCompiler {
91
139
  return compiled;
92
140
  }
93
141
  else {
94
- throw errors;
142
+ throw new TemplateCompilationError(errors);
95
143
  }
96
144
  }
97
145
  }