@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.
- package/README.md +39 -0
- package/lib/JavaScriptEvaluator.js +18 -17
- package/lib/JavaScriptEvaluator.js.map +1 -1
- package/lib/TemplateArchiveProcessor.d.ts +26 -1
- package/lib/TemplateArchiveProcessor.js +72 -8
- package/lib/TemplateArchiveProcessor.js.map +1 -1
- package/lib/TemplateMarkInterpreter.d.ts +12 -1
- package/lib/TemplateMarkInterpreter.js +133 -29
- package/lib/TemplateMarkInterpreter.js.map +1 -1
- package/lib/TemplateMarkToJavaScriptCompiler.d.ts +32 -1
- package/lib/TemplateMarkToJavaScriptCompiler.js +54 -6
- package/lib/TemplateMarkToJavaScriptCompiler.js.map +1 -1
- package/lib/TypeScriptCompilationContext.d.ts +2 -1
- package/lib/TypeScriptCompilationContext.js +12 -1
- package/lib/TypeScriptCompilationContext.js.map +1 -1
- package/lib/TypeScriptToJavaScriptCompiler.d.ts +7 -2
- package/lib/TypeScriptToJavaScriptCompiler.js +99 -35
- package/lib/TypeScriptToJavaScriptCompiler.js.map +1 -1
- package/lib/UserLogic.d.ts +59 -0
- package/lib/UserLogic.js +129 -0
- package/lib/UserLogic.js.map +1 -0
- package/lib/drafting/Double/format.js +5 -1
- package/lib/drafting/Double/format.js.map +1 -1
- package/lib/drafting/Integer/format.js +5 -1
- package/lib/drafting/Integer/format.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/llm/LLMExecutor.d.ts +3 -1
- package/lib/llm/LLMExecutor.js +3 -2
- package/lib/llm/LLMExecutor.js.map +1 -1
- package/lib/llm/Reasoners.d.ts +77 -10
- package/lib/llm/Reasoners.js +101 -69
- package/lib/llm/Reasoners.js.map +1 -1
- package/lib/llm/index.d.ts +1 -1
- package/lib/runtime/typescriptLibs.d.ts +2 -0
- package/lib/runtime/typescriptLibs.js +21 -0
- package/lib/runtime/typescriptLibs.js.map +1 -0
- package/lib/utils.d.ts +29 -1
- package/lib/utils.js +62 -2
- package/lib/utils.js.map +1 -1
- package/package.json +29 -3
- package/umd/template-engine.js +5 -5
- 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:
|
|
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
|
-
|
|
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
|
|
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 ===
|
|
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
|
-
|
|
656
|
-
|
|
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
|
}
|