@accordproject/template-engine 2.6.5 → 2.6.6

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/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { ModelManager, ClassDeclaration } from '@accordproject/concerto-core';
2
+ import { Template } from '@accordproject/cicero-core';
2
3
 
3
4
  type TemplateData = Record<string, unknown>;
4
5
 
@@ -46,10 +47,41 @@ declare class TemplateMarkInterpreter {
46
47
  generate(templateMark: object, data: TemplateData, options?: GenerationOptions): Promise<any>;
47
48
  }
48
49
 
50
+ /**
51
+ * A template archive processor: can draft content using the
52
+ * templatemark for the archive and trigger the logic of the archive
53
+ */
54
+ declare class TemplateArchiveProcessor {
55
+ template: Template;
56
+ /**
57
+ * Creates a template archive processor
58
+ * @param {Template} template - the template to be used by the processor
59
+ */
60
+ constructor(template: Template);
61
+ /**
62
+ * Drafts a template by merging it with data
63
+ * @param {any} data the data to merge with the template
64
+ * @param {string} format the output format
65
+ * @param {any} options merge options
66
+ * @param {[string]} currentTime the current value for 'now'
67
+ * @returns {Promise} the drafted content
68
+ */
69
+ draft(data: any, format: string, options: any, currentTime?: string): Promise<any>;
70
+ /**
71
+ * Trigger the logic of a template
72
+ * @param {object} request - the request to send to the template logic
73
+ * @param {object} state - the current state of the template
74
+ * @param {[string]} currentTime - the current time, defaults to now
75
+ * @param {[number]} utcOffset - the UTC offer, defaults to zero
76
+ * @returns {Promise} the response and any events
77
+ */
78
+ trigger(data: any, request: any, state?: any, currentTime?: string, utcOffset?: number): Promise<any>;
79
+ }
80
+
49
81
  declare function ensureDirSync(path: string): void;
50
82
  declare function removeSync(path: string): void;
51
83
  declare function writeFunctionToString(templateClass: ClassDeclaration, functionName: string, returnType: string, code: string): string;
52
84
  declare function nameUserCode(templateMarkDom: any): any;
53
85
  declare function getTemplateClassDeclaration(modelManager: ModelManager, templateConceptFqn?: string): ClassDeclaration;
54
86
 
55
- export { TemplateMarkInterpreter, ensureDirSync, getTemplateClassDeclaration, nameUserCode, removeSync, writeFunctionToString };
87
+ export { TemplateArchiveProcessor, TemplateMarkInterpreter, ensureDirSync, getTemplateClassDeclaration, nameUserCode, removeSync, writeFunctionToString };
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ var fs = require('fs');
18
18
  var lzstring = require('lz-string');
19
19
  var child_process = require('child_process');
20
20
  var path = require('path');
21
+ var markdownTransform = require('@accordproject/markdown-transform');
21
22
 
22
23
  function _interopNamespaceDefault(e) {
23
24
  var n = Object.create(null);
@@ -326,6 +327,7 @@ type GenerationOptions = {
326
327
 
327
328
  const DAYJS_BASE64 = "Ly8vIDxyZWZlcmVuY2UgcGF0aD0iLi9sb2NhbGUvaW5kZXguZC50cyIgLz4KCmV4cG9ydCA9IGRheWpzOwoKZGVjbGFyZSBmdW5jdGlvbiBkYXlqcyAoZGF0ZT86IGRheWpzLkNvbmZpZ1R5cGUpOiBkYXlqcy5EYXlqcwoKZGVjbGFyZSBmdW5jdGlvbiBkYXlqcyAoZGF0ZT86IGRheWpzLkNvbmZpZ1R5cGUsIGZvcm1hdD86IGRheWpzLk9wdGlvblR5cGUsIHN0cmljdD86IGJvb2xlYW4pOiBkYXlqcy5EYXlqcwoKZGVjbGFyZSBmdW5jdGlvbiBkYXlqcyAoZGF0ZT86IGRheWpzLkNvbmZpZ1R5cGUsIGZvcm1hdD86IGRheWpzLk9wdGlvblR5cGUsIGxvY2FsZT86IHN0cmluZywgc3RyaWN0PzogYm9vbGVhbik6IGRheWpzLkRheWpzCgpkZWNsYXJlIG5hbWVzcGFjZSBkYXlqcyB7CiAgaW50ZXJmYWNlIENvbmZpZ1R5cGVNYXAgewogICAgZGVmYXVsdDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IERheWpzIHwgbnVsbCB8IHVuZGVmaW5lZAogIH0KCiAgZXhwb3J0IHR5cGUgQ29uZmlnVHlwZSA9IENvbmZpZ1R5cGVNYXBba2V5b2YgQ29uZmlnVHlwZU1hcF0KCiAgZXhwb3J0IGludGVyZmFjZSBGb3JtYXRPYmplY3QgeyBsb2NhbGU/OiBzdHJpbmcsIGZvcm1hdD86IHN0cmluZywgdXRjPzogYm9vbGVhbiB9CgogIGV4cG9ydCB0eXBlIE9wdGlvblR5cGUgPSBGb3JtYXRPYmplY3QgfCBzdHJpbmcgfCBzdHJpbmdbXQoKICBleHBvcnQgdHlwZSBVbml0VHlwZVNob3J0ID0gJ2QnIHwgJ0QnIHwgJ00nIHwgJ3knIHwgJ2gnIHwgJ20nIHwgJ3MnIHwgJ21zJwoKICBleHBvcnQgdHlwZSBVbml0VHlwZUxvbmcgPSAnbWlsbGlzZWNvbmQnIHwgJ3NlY29uZCcgfCAnbWludXRlJyB8ICdob3VyJyB8ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICdkYXRlJwoKICBleHBvcnQgdHlwZSBVbml0VHlwZUxvbmdQbHVyYWwgPSAnbWlsbGlzZWNvbmRzJyB8ICdzZWNvbmRzJyB8ICdtaW51dGVzJyB8ICdob3VycycgfCAnZGF5cycgfCAnbW9udGhzJyB8ICd5ZWFycycgfCAnZGF0ZXMnCiAgCiAgZXhwb3J0IHR5cGUgVW5pdFR5cGUgPSBVbml0VHlwZUxvbmcgfCBVbml0VHlwZUxvbmdQbHVyYWwgfCBVbml0VHlwZVNob3J0OwoKICBleHBvcnQgdHlwZSBPcFVuaXRUeXBlID0gVW5pdFR5cGUgfCAid2VlayIgfCAid2Vla3MiIHwgJ3cnOwogIGV4cG9ydCB0eXBlIFFVbml0VHlwZSA9IFVuaXRUeXBlIHwgInF1YXJ0ZXIiIHwgInF1YXJ0ZXJzIiB8ICdRJzsKICBleHBvcnQgdHlwZSBNYW5pcHVsYXRlVHlwZSA9IEV4Y2x1ZGU8T3BVbml0VHlwZSwgJ2RhdGUnIHwgJ2RhdGVzJz47CiAgY2xhc3MgRGF5anMgewogICAgY29uc3RydWN0b3IgKGNvbmZpZz86IENvbmZpZ1R5cGUpCiAgICAvKioKICAgICAqIEFsbCBEYXkuanMgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLiBTdGlsbCwgYGRheWpzI2Nsb25lYCBjYW4gY3JlYXRlIGEgY2xvbmUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IGlmIHlvdSBuZWVkIG9uZS4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5jbG9uZSgpLy8gPT4gRGF5anMKICAgICAqIGRheWpzKGRheWpzKCcyMDE5LTAxLTI1JykpIC8vIHBhc3NpbmcgYSBEYXlqcyBvYmplY3QgdG8gYSBjb25zdHJ1Y3RvciB3aWxsIGFsc28gY2xvbmUgaXQKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vcGFyc2UvZGF5anMtY2xvbmUKICAgICAqLwogICAgY2xvbmUoKTogRGF5anMKICAgIC8qKgogICAgICogVGhpcyByZXR1cm5zIGEgYGJvb2xlYW5gIGluZGljYXRpbmcgd2hldGhlciB0aGUgRGF5LmpzIG9iamVjdCBjb250YWlucyBhIHZhbGlkIGRhdGUgb3Igbm90LgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmlzVmFsaWQoKS8vID0+IGJvb2xlYW4KICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vcGFyc2UvaXMtdmFsaWQKICAgICAqLwogICAgaXNWYWxpZCgpOiBib29sZWFuCiAgICAvKioKICAgICAqIEdldCB0aGUgeWVhci4KICAgICAqIGBgYAogICAgICogZGF5anMoKS55ZWFyKCkvLyA9PiAyMDIwCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2dldC1zZXQveWVhcgogICAgICovCiAgICB5ZWFyKCk6IG51bWJlcgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHllYXIuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkueWVhcigyMDAwKS8vID0+IERheWpzCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2dldC1zZXQveWVhcgogICAgICovCiAgICB5ZWFyKHZhbHVlOiBudW1iZXIpOiBEYXlqcwogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1vbnRoLgogICAgICoKICAgICAqIE1vbnRocyBhcmUgemVybyBpbmRleGVkLCBzbyBKYW51YXJ5IGlzIG1vbnRoIDAuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkubW9udGgoKS8vID0+IDAtMTEKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9tb250aAogICAgICovCiAgICBtb250aCgpOiBudW1iZXIKICAgIC8qKgogICAgICogU2V0IHRoZSBtb250aC4KICAgICAqCiAgICAgKiBNb250aHMgYXJlIHplcm8gaW5kZXhlZCwgc28gSmFudWFyeSBpcyBtb250aCAwLgogICAgICoKICAgICAqIEFjY2VwdHMgbnVtYmVycyBmcm9tIDAgdG8gMTEuIElmIHRoZSByYW5nZSBpcyBleGNlZWRlZCwgaXQgd2lsbCBidWJibGUgdXAgdG8gdGhlIG5leHQgeWVhci4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5tb250aCgwKS8vID0+IERheWpzCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2dldC1zZXQvbW9udGgKICAgICAqLwogICAgbW9udGgodmFsdWU6IG51bWJlcik6IERheWpzCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF0ZSBvZiB0aGUgbW9udGguCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkuZGF0ZSgpLy8gPT4gMS0zMQogICAgICogYGBgCiAgICAgKiBEb2NzOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9nZXQtc2V0L2RhdGUKICAgICAqLwogICAgZGF0ZSgpOiBudW1iZXIKICAgIC8qKgogICAgICogU2V0IHRoZSBkYXRlIG9mIHRoZSBtb250aC4KICAgICAqCiAgICAgKiBBY2NlcHRzIG51bWJlcnMgZnJvbSAxIHRvIDMxLiBJZiB0aGUgcmFuZ2UgaXMgZXhjZWVkZWQsIGl0IHdpbGwgYnViYmxlIHVwIHRvIHRoZSBuZXh0IG1vbnRocy4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5kYXRlKDEpLy8gPT4gRGF5anMKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9kYXRlCiAgICAgKi8KICAgIGRhdGUodmFsdWU6IG51bWJlcik6IERheWpzCiAgICAvKioKICAgICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLgogICAgICoKICAgICAqIFJldHVybnMgbnVtYmVycyBmcm9tIDAgKFN1bmRheSkgdG8gNiAoU2F0dXJkYXkpLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmRheSgpLy8gMC02CiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2dldC1zZXQvZGF5CiAgICAgKi8KICAgIGRheSgpOiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2CiAgICAvKioKICAgICAqIFNldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLgogICAgICoKICAgICAqIEFjY2VwdHMgbnVtYmVycyBmcm9tIDAgKFN1bmRheSkgdG8gNiAoU2F0dXJkYXkpLiBJZiB0aGUgcmFuZ2UgaXMgZXhjZWVkZWQsIGl0IHdpbGwgYnViYmxlIHVwIHRvIG5leHQgd2Vla3MuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkuZGF5KDApLy8gPT4gRGF5anMKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9kYXkKICAgICAqLwogICAgZGF5KHZhbHVlOiBudW1iZXIpOiBEYXlqcwogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkuaG91cigpLy8gPT4gMC0yMwogICAgICogYGBgCiAgICAgKiBEb2NzOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9nZXQtc2V0L2hvdXIKICAgICAqLwogICAgaG91cigpOiBudW1iZXIKICAgIC8qKgogICAgICogU2V0IHRoZSBob3VyLgogICAgICoKICAgICAqIEFjY2VwdHMgbnVtYmVycyBmcm9tIDAgdG8gMjMuIElmIHRoZSByYW5nZSBpcyBleGNlZWRlZCwgaXQgd2lsbCBidWJibGUgdXAgdG8gdGhlIG5leHQgZGF5LgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmhvdXIoMTIpLy8gPT4gRGF5anMKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9ob3VyCiAgICAgKi8KICAgIGhvdXIodmFsdWU6IG51bWJlcik6IERheWpzCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5taW51dGUoKS8vID0+IDAtNTkKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9taW51dGUKICAgICAqLwogICAgbWludXRlKCk6IG51bWJlcgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1pbnV0ZXMuCiAgICAgKgogICAgICogQWNjZXB0cyBudW1iZXJzIGZyb20gMCB0byA1OS4gSWYgdGhlIHJhbmdlIGlzIGV4Y2VlZGVkLCBpdCB3aWxsIGJ1YmJsZSB1cCB0byB0aGUgbmV4dCBob3VyLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLm1pbnV0ZSg1OSkvLyA9PiBEYXlqcwogICAgICogYGBgCiAgICAgKiBEb2NzOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9nZXQtc2V0L21pbnV0ZQogICAgICovCiAgICBtaW51dGUodmFsdWU6IG51bWJlcik6IERheWpzCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kcy4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5zZWNvbmQoKS8vID0+IDAtNTkKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9zZWNvbmQKICAgICAqLwogICAgc2Vjb25kKCk6IG51bWJlcgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHNlY29uZHMuCiAgICAgKgogICAgICogQWNjZXB0cyBudW1iZXJzIGZyb20gMCB0byA1OS4gSWYgdGhlIHJhbmdlIGlzIGV4Y2VlZGVkLCBpdCB3aWxsIGJ1YmJsZSB1cCB0byB0aGUgbmV4dCBtaW51dGVzLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLnNlY29uZCgxKS8vIERheWpzCiAgICAgKiBgYGAKICAgICAqLwogICAgc2Vjb25kKHZhbHVlOiBudW1iZXIpOiBEYXlqcwogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kcy4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5taWxsaXNlY29uZCgpLy8gPT4gMC05OTkKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9taWxsaXNlY29uZAogICAgICovCiAgICBtaWxsaXNlY29uZCgpOiBudW1iZXIKICAgIC8qKgogICAgICogU2V0IHRoZSBtaWxsaXNlY29uZHMuCiAgICAgKgogICAgICogQWNjZXB0cyBudW1iZXJzIGZyb20gMCB0byA5OTkuIElmIHRoZSByYW5nZSBpcyBleGNlZWRlZCwgaXQgd2lsbCBidWJibGUgdXAgdG8gdGhlIG5leHQgc2Vjb25kcy4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5taWxsaXNlY29uZCgxKS8vID0+IERheWpzCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2dldC1zZXQvbWlsbGlzZWNvbmQKICAgICAqLwogICAgbWlsbGlzZWNvbmQodmFsdWU6IG51bWJlcik6IERheWpzCiAgICAvKioKICAgICAqIEdlbmVyaWMgc2V0dGVyLCBhY2NlcHRpbmcgdW5pdCBhcyBmaXJzdCBhcmd1bWVudCwgYW5kIHZhbHVlIGFzIHNlY29uZCwgcmV0dXJucyBhIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBhcHBsaWVkIGNoYW5nZXMuCiAgICAgKgogICAgICogSW4gZ2VuZXJhbDoKICAgICAqIGBgYAogICAgICogZGF5anMoKS5zZXQodW5pdCwgdmFsdWUpID09PSBkYXlqcygpW3VuaXRdKHZhbHVlKQogICAgICogYGBgCiAgICAgKiBVbml0cyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSwgYW5kIHN1cHBvcnQgcGx1cmFsIGFuZCBzaG9ydCBmb3Jtcy4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5zZXQoJ2RhdGUnLCAxKQogICAgICogZGF5anMoKS5zZXQoJ21vbnRoJywgMykgLy8gQXByaWwKICAgICAqIGRheWpzKCkuc2V0KCdzZWNvbmQnLCAzMCkKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZ2V0LXNldC9zZXQKICAgICAqLwogICAgc2V0KHVuaXQ6IFVuaXRUeXBlLCB2YWx1ZTogbnVtYmVyKTogRGF5anMKICAgIC8qKgogICAgICogU3RyaW5nIGdldHRlciwgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBpbmZvcm1hdGlvbiBnZXR0aW5nIGZyb20gRGF5LmpzIG9iamVjdC4KICAgICAqCiAgICAgKiBJbiBnZW5lcmFsOgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmdldCh1bml0KSA9PT0gZGF5anMoKVt1bml0XSgpCiAgICAgKiBgYGAKICAgICAqIFVuaXRzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLCBhbmQgc3VwcG9ydCBwbHVyYWwgYW5kIHNob3J0IGZvcm1zLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmdldCgneWVhcicpCiAgICAgKiBkYXlqcygpLmdldCgnbW9udGgnKSAvLyBzdGFydCAwCiAgICAgKiBkYXlqcygpLmdldCgnZGF0ZScpCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2dldC1zZXQvZ2V0CiAgICAgKi8KICAgIGdldCh1bml0OiBVbml0VHlwZSk6IG51bWJlcgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgY2xvbmVkIERheS5qcyBvYmplY3Qgd2l0aCBhIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZSBhZGRlZC4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5hZGQoNywgJ2RheScpLy8gPT4gRGF5anMKICAgICAqIGBgYAogICAgICogVW5pdHMgYXJlIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBzdXBwb3J0IHBsdXJhbCBhbmQgc2hvcnQgZm9ybXMuCiAgICAgKgogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vbWFuaXB1bGF0ZS9hZGQKICAgICAqLwogICAgYWRkKHZhbHVlOiBudW1iZXIsIHVuaXQ/OiBNYW5pcHVsYXRlVHlwZSk6IERheWpzCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjbG9uZWQgRGF5LmpzIG9iamVjdCB3aXRoIGEgc3BlY2lmaWVkIGFtb3VudCBvZiB0aW1lIHN1YnRyYWN0ZWQuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkuc3VidHJhY3QoNywgJ3llYXInKS8vID0+IERheWpzCiAgICAgKiBgYGAKICAgICAqIFVuaXRzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLCBhbmQgc3VwcG9ydCBwbHVyYWwgYW5kIHNob3J0IGZvcm1zLgogICAgICoKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL21hbmlwdWxhdGUvc3VidHJhY3QKICAgICAqLwogICAgc3VidHJhY3QodmFsdWU6IG51bWJlciwgdW5pdD86IE1hbmlwdWxhdGVUeXBlKTogRGF5anMKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNsb25lZCBEYXkuanMgb2JqZWN0IGFuZCBzZXQgaXQgdG8gdGhlIHN0YXJ0IG9mIGEgdW5pdCBvZiB0aW1lLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLnN0YXJ0T2YoJ3llYXInKS8vID0+IERheWpzCiAgICAgKiBgYGAKICAgICAqIFVuaXRzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLCBhbmQgc3VwcG9ydCBwbHVyYWwgYW5kIHNob3J0IGZvcm1zLgogICAgICoKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL21hbmlwdWxhdGUvc3RhcnQtb2YKICAgICAqLwogICAgc3RhcnRPZih1bml0OiBPcFVuaXRUeXBlKTogRGF5anMKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNsb25lZCBEYXkuanMgb2JqZWN0IGFuZCBzZXQgaXQgdG8gdGhlIGVuZCBvZiBhIHVuaXQgb2YgdGltZS4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5lbmRPZignbW9udGgnKS8vID0+IERheWpzCiAgICAgKiBgYGAKICAgICAqIFVuaXRzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLCBhbmQgc3VwcG9ydCBwbHVyYWwgYW5kIHNob3J0IGZvcm1zLgogICAgICoKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL21hbmlwdWxhdGUvZW5kLW9mCiAgICAgKi8KICAgIGVuZE9mKHVuaXQ6IE9wVW5pdFR5cGUpOiBEYXlqcwogICAgLyoqCiAgICAgKiBHZXQgdGhlIGZvcm1hdHRlZCBkYXRlIGFjY29yZGluZyB0byB0aGUgc3RyaW5nIG9mIHRva2VucyBwYXNzZWQgaW4uCiAgICAgKgogICAgICogVG8gZXNjYXBlIGNoYXJhY3RlcnMsIHdyYXAgdGhlbSBpbiBzcXVhcmUgYnJhY2tldHMgKGUuZy4gW01NXSkuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkuZm9ybWF0KCkvLyA9PiBjdXJyZW50IGRhdGUgaW4gSVNPODYwMSwgd2l0aG91dCBmcmFjdGlvbiBzZWNvbmRzIGUuZy4gJzIwMjAtMDQtMDJUMDg6MDI6MTctMDU6MDAnCiAgICAgKiBkYXlqcygnMjAxOS0wMS0yNScpLmZvcm1hdCgnW1lZWVllc2NhcGVdIFlZWVktTU0tRERUSEg6bW06c3NaW1pdJykvLyAnWVlZWWVzY2FwZSAyMDE5LTAxLTI1VDAwOjAwOjAwLTAyOjAwWicKICAgICAqIGRheWpzKCcyMDE5LTAxLTI1JykuZm9ybWF0KCdERC9NTS9ZWVlZJykgLy8gJzI1LzAxLzIwMTknCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL2Rpc3BsYXkvZm9ybWF0CiAgICAgKi8KICAgIGZvcm1hdCh0ZW1wbGF0ZT86IHN0cmluZyk6IHN0cmluZwogICAgLyoqCiAgICAgKiBUaGlzIGluZGljYXRlcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRlLXRpbWUgaW4gdGhlIHNwZWNpZmllZCB1bml0LgogICAgICoKICAgICAqIFRvIGdldCB0aGUgZGlmZmVyZW5jZSBpbiBtaWxsaXNlY29uZHMsIHVzZSBgZGF5anMjZGlmZmAKICAgICAqIGBgYAogICAgICogY29uc3QgZGF0ZTEgPSBkYXlqcygnMjAxOS0wMS0yNScpCiAgICAgKiBjb25zdCBkYXRlMiA9IGRheWpzKCcyMDE4LTA2LTA1JykKICAgICAqIGRhdGUxLmRpZmYoZGF0ZTIpIC8vIDIwMjE0MDAwMDAwIGRlZmF1bHQgbWlsbGlzZWNvbmRzCiAgICAgKiBkYXRlMS5kaWZmKCkgLy8gbWlsbGlzZWNvbmRzIHRvIGN1cnJlbnQgdGltZQogICAgICogYGBgCiAgICAgKgogICAgICogVG8gZ2V0IHRoZSBkaWZmZXJlbmNlIGluIGFub3RoZXIgdW5pdCBvZiBtZWFzdXJlbWVudCwgcGFzcyB0aGF0IG1lYXN1cmVtZW50IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuCiAgICAgKiBgYGAKICAgICAqIGNvbnN0IGRhdGUxID0gZGF5anMoJzIwMTktMDEtMjUnKQogICAgICogZGF0ZTEuZGlmZignMjAxOC0wNi0wNScsICdtb250aCcpIC8vIDcKICAgICAqIGBgYAogICAgICogVW5pdHMgYXJlIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBzdXBwb3J0IHBsdXJhbCBhbmQgc2hvcnQgZm9ybXMuCiAgICAgKgogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZGlzcGxheS9kaWZmZXJlbmNlCiAgICAgKi8KICAgIGRpZmYoZGF0ZT86IENvbmZpZ1R5cGUsIHVuaXQ/OiBRVW5pdFR5cGUgfCBPcFVuaXRUeXBlLCBmbG9hdD86IGJvb2xlYW4pOiBudW1iZXIKICAgIC8qKgogICAgICogVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2YgKiptaWxsaXNlY29uZHMqKiBzaW5jZSB0aGUgVW5peCBFcG9jaCBvZiB0aGUgRGF5LmpzIG9iamVjdC4KICAgICAqIGBgYAogICAgICogZGF5anMoJzIwMTktMDEtMjUnKS52YWx1ZU9mKCkgLy8gMTU0ODM4MTYwMDAwMAogICAgICogK2RheWpzKDE1NDgzODE2MDAwMDApIC8vIDE1NDgzODE2MDAwMDAKICAgICAqIGBgYAogICAgICogVG8gZ2V0IGEgVW5peCB0aW1lc3RhbXAgKHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2gpIGZyb20gYSBEYXkuanMgb2JqZWN0LCB5b3Ugc2hvdWxkIHVzZSBVbml4IFRpbWVzdGFtcCBgZGF5anMjdW5peCgpYC4KICAgICAqCiAgICAgKiBEb2NzOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9kaXNwbGF5L3VuaXgtdGltZXN0YW1wLW1pbGxpc2Vjb25kcwogICAgICovCiAgICB2YWx1ZU9mKCk6IG51bWJlcgogICAgLyoqCiAgICAgKiBUaGlzIHJldHVybnMgdGhlIFVuaXggdGltZXN0YW1wICh0aGUgbnVtYmVyIG9mICoqc2Vjb25kcyoqIHNpbmNlIHRoZSBVbml4IEVwb2NoKSBvZiB0aGUgRGF5LmpzIG9iamVjdC4KICAgICAqIGBgYAogICAgICogZGF5anMoJzIwMTktMDEtMjUnKS51bml4KCkgLy8gMTU0ODM4MTYwMAogICAgICogYGBgCiAgICAgKiBUaGlzIHZhbHVlIGlzIGZsb29yZWQgdG8gdGhlIG5lYXJlc3Qgc2Vjb25kLCBhbmQgZG9lcyBub3QgaW5jbHVkZSBhIG1pbGxpc2Vjb25kcyBjb21wb25lbnQuCiAgICAgKgogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZGlzcGxheS91bml4LXRpbWVzdGFtcAogICAgICovCiAgICB1bml4KCk6IG51bWJlcgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBjdXJyZW50IG1vbnRoLgogICAgICogYGBgCiAgICAgKiBkYXlqcygnMjAxOS0wMS0yNScpLmRheXNJbk1vbnRoKCkgLy8gMzEKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZGlzcGxheS9kYXlzLWluLW1vbnRoCiAgICAgKi8KICAgIGRheXNJbk1vbnRoKCk6IG51bWJlcgogICAgLyoqCiAgICAgKiBUbyBnZXQgYSBjb3B5IG9mIHRoZSBuYXRpdmUgYERhdGVgIG9iamVjdCBwYXJzZWQgZnJvbSB0aGUgRGF5LmpzIG9iamVjdCB1c2UgYGRheWpzI3RvRGF0ZWAuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCcyMDE5LTAxLTI1JykudG9EYXRlKCkvLyA9PiBEYXRlCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9EYXRlKCk6IERhdGUKICAgIC8qKgogICAgICogVG8gc2VyaWFsaXplIGFzIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIGBgYAogICAgICogZGF5anMoJzIwMTktMDEtMjUnKS50b0pTT04oKSAvLyAnMjAxOS0wMS0yNVQwMjowMDowMC4wMDBaJwogICAgICogYGBgCiAgICAgKiBEb2NzOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9kaXNwbGF5L2FzLWpzb24KICAgICAqLwogICAgdG9KU09OKCk6IHN0cmluZwogICAgLyoqCiAgICAgKiBUbyBmb3JtYXQgYXMgYW4gSVNPIDg2MDEgc3RyaW5nLgogICAgICogYGBgCiAgICAgKiBkYXlqcygnMjAxOS0wMS0yNScpLnRvSVNPU3RyaW5nKCkgLy8gJzIwMTktMDEtMjVUMDI6MDA6MDAuMDAwWicKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vZGlzcGxheS9hcy1pc28tc3RyaW5nCiAgICAgKi8KICAgIHRvSVNPU3RyaW5nKCk6IHN0cmluZwogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRlLgogICAgICogYGBgCiAgICAgKiBkYXlqcygnMjAxOS0wMS0yNScpLnRvU3RyaW5nKCkgLy8gJ0ZyaSwgMjUgSmFuIDIwMTkgMDI6MDA6MDAgR01UJwogICAgICogYGBgCiAgICAgKiBEb2NzOiBodHRwczovL2RheS5qcy5vcmcvZG9jcy9lbi9kaXNwbGF5L2FzLXN0cmluZwogICAgICovCiAgICB0b1N0cmluZygpOiBzdHJpbmcKICAgIC8qKgogICAgICogR2V0IHRoZSBVVEMgb2Zmc2V0IGluIG1pbnV0ZXMuCiAgICAgKiBgYGAKICAgICAqIGRheWpzKCkudXRjT2Zmc2V0KCkKICAgICAqIGBgYAogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vbWFuaXB1bGF0ZS91dGMtb2Zmc2V0CiAgICAgKi8KICAgIHV0Y09mZnNldCgpOiBudW1iZXIKICAgIC8qKgogICAgICogVGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgRGF5LmpzIG9iamVjdCBpcyBiZWZvcmUgdGhlIG90aGVyIHN1cHBsaWVkIGRhdGUtdGltZS4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5pc0JlZm9yZShkYXlqcygnMjAxMS0wMS0wMScpKSAvLyBkZWZhdWx0IG1pbGxpc2Vjb25kcwogICAgICogYGBgCiAgICAgKiBJZiB5b3Ugd2FudCB0byBsaW1pdCB0aGUgZ3JhbnVsYXJpdHkgdG8gYSB1bml0IG90aGVyIHRoYW4gbWlsbGlzZWNvbmRzLCBwYXNzIGl0IGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmlzQmVmb3JlKCcyMDExLTAxLTAxJywgJ3llYXInKS8vID0+IGJvb2xlYW4KICAgICAqIGBgYAogICAgICogVW5pdHMgYXJlIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBzdXBwb3J0IHBsdXJhbCBhbmQgc2hvcnQgZm9ybXMuCiAgICAgKgogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vcXVlcnkvaXMtYmVmb3JlCiAgICAgKi8KICAgIGlzQmVmb3JlKGRhdGU/OiBDb25maWdUeXBlLCB1bml0PzogT3BVbml0VHlwZSk6IGJvb2xlYW4KICAgIC8qKgogICAgICogVGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgRGF5LmpzIG9iamVjdCBpcyB0aGUgc2FtZSBhcyB0aGUgb3RoZXIgc3VwcGxpZWQgZGF0ZS10aW1lLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmlzU2FtZShkYXlqcygnMjAxMS0wMS0wMScpKSAvLyBkZWZhdWx0IG1pbGxpc2Vjb25kcwogICAgICogYGBgCiAgICAgKiBJZiB5b3Ugd2FudCB0byBsaW1pdCB0aGUgZ3JhbnVsYXJpdHkgdG8gYSB1bml0IG90aGVyIHRoYW4gbWlsbGlzZWNvbmRzLCBwYXNzIGl0IGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmlzU2FtZSgnMjAxMS0wMS0wMScsICd5ZWFyJykvLyA9PiBib29sZWFuCiAgICAgKiBgYGAKICAgICAqIERvY3M6IGh0dHBzOi8vZGF5LmpzLm9yZy9kb2NzL2VuL3F1ZXJ5L2lzLXNhbWUKICAgICAqLwogICAgaXNTYW1lKGRhdGU/OiBDb25maWdUeXBlLCB1bml0PzogT3BVbml0VHlwZSk6IGJvb2xlYW4KICAgIC8qKgogICAgICogVGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgRGF5LmpzIG9iamVjdCBpcyBhZnRlciB0aGUgb3RoZXIgc3VwcGxpZWQgZGF0ZS10aW1lLgogICAgICogYGBgCiAgICAgKiBkYXlqcygpLmlzQWZ0ZXIoZGF5anMoJzIwMTEtMDEtMDEnKSkgLy8gZGVmYXVsdCBtaWxsaXNlY29uZHMKICAgICAqIGBgYAogICAgICogSWYgeW91IHdhbnQgdG8gbGltaXQgdGhlIGdyYW51bGFyaXR5IHRvIGEgdW5pdCBvdGhlciB0aGFuIG1pbGxpc2Vjb25kcywgcGFzcyBpdCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlci4KICAgICAqIGBgYAogICAgICogZGF5anMoKS5pc0FmdGVyKCcyMDExLTAxLTAxJywgJ3llYXInKS8vID0+IGJvb2xlYW4KICAgICAqIGBgYAogICAgICogVW5pdHMgYXJlIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBzdXBwb3J0IHBsdXJhbCBhbmQgc2hvcnQgZm9ybXMuCiAgICAgKgogICAgICogRG9jczogaHR0cHM6Ly9kYXkuanMub3JnL2RvY3MvZW4vcXVlcnkvaXMtYWZ0ZXIKICAgICAqLwogICAgaXNBZnRlcihkYXRlPzogQ29uZmlnVHlwZSwgdW5pdD86IE9wVW5pdFR5cGUpOiBib29sZWFuCgogICAgbG9jYWxlKCk6IHN0cmluZwoKICAgIGxvY2FsZShwcmVzZXQ6IHN0cmluZyB8IElMb2NhbGUsIG9iamVjdD86IFBhcnRpYWw8SUxvY2FsZT4pOiBEYXlqcwogIH0KCiAgZXhwb3J0IHR5cGUgUGx1Z2luRnVuYzxUID0gdW5rbm93bj4gPSAob3B0aW9uOiBULCBjOiB0eXBlb2YgRGF5anMsIGQ6IHR5cGVvZiBkYXlqcykgPT4gdm9pZAoKICBleHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgPSB1bmtub3duPihwbHVnaW46IFBsdWdpbkZ1bmM8VD4sIG9wdGlvbj86IFQpOiBEYXlqcwoKICBleHBvcnQgZnVuY3Rpb24gbG9jYWxlKHByZXNldD86IHN0cmluZyB8IElMb2NhbGUsIG9iamVjdD86IFBhcnRpYWw8SUxvY2FsZT4sIGlzTG9jYWw/OiBib29sZWFuKTogc3RyaW5nCgogIGV4cG9ydCBmdW5jdGlvbiBpc0RheWpzKGQ6IGFueSk6IGQgaXMgRGF5anMKCiAgZXhwb3J0IGZ1bmN0aW9uIHVuaXgodDogbnVtYmVyKTogRGF5anMKCiAgY29uc3QgTHMgOiB7IFtrZXk6IHN0cmluZ10gOiAgSUxvY2FsZSB9Cn0K";
328
329
  const JSONPATH_BASE64 = "dHlwZSBQYXRoQ29tcG9uZW50ID0gc3RyaW5nIHwgbnVtYmVyOwoKLyoqCiAqIEZpbmQgZWxlbWVudHMgaW4gYG9iamAgbWF0Y2hpbmcgYHBhdGhFeHByZXNzaW9uYC4gUmV0dXJucyBhbiBhcnJheSBvZiBlbGVtZW50cyB0aGF0CiAqIHNhdGlzZnkgdGhlIHByb3ZpZGVkIEpTT05QYXRoIGV4cHJlc3Npb24sb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm9uZSB3ZXJlIG1hdGNoZWQuCiAqIFJldHVybnMgb25seSBmaXJzdCBgY291bnRgIGVsZW1lbnRzIGlmIHNwZWNpZmllZC4KICovCmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIHF1ZXJ5KG9iajogYW55LCBwYXRoRXhwcmVzc2lvbjogc3RyaW5nLCBjb3VudD86IG51bWJlcik6IGFueVtdOwoKLyoqCiAqIEZpbmQgcGF0aHMgdG8gZWxlbWVudHMgaW4gYG9iamAgbWF0Y2hpbmcgYHBhdGhFeHByZXNzaW9uYC4gUmV0dXJucyBhbiBhcnJheSBvZgogKiBlbGVtZW50IHBhdGhzIHRoYXQgc2F0aXNmeSB0aGUgcHJvdmlkZWQgSlNPTlBhdGggZXhwcmVzc2lvbi4gRWFjaCBwYXRoIGlzIGl0c2VsZiBhbgogKiBhcnJheSBvZiBrZXlzIHJlcHJlc2VudGluZyB0aGUgbG9jYXRpb24gd2l0aGluIGBvYmpgIG9mIHRoZSBtYXRjaGluZyBlbGVtZW50LiBSZXR1cm5zCiAqIG9ubHkgZmlyc3QgYGNvdW50YCBwYXRocyBpZiBzcGVjaWZpZWQuCiAqLwpleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYXRocyhvYmo6IGFueSwgcGF0aEV4cHJlc3Npb246IHN0cmluZywgY291bnQ/OiBudW1iZXIpOiBQYXRoQ29tcG9uZW50W11bXTsKCi8qKgogKiBGaW5kIGVsZW1lbnRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIHBhdGhzIGluIGBvYmpgIG1hdGNoaW5nIGBwYXRoRXhwcmVzc2lvbmAuCiAqIFJldHVybnMgYW4gYXJyYXkgb2Ygbm9kZSBvYmplY3RzIHdoZXJlIGVhY2ggbm9kZSBoYXMgYSBgcGF0aGAgY29udGFpbmluZyBhbiBhcnJheSBvZgogKiBrZXlzIHJlcHJlc2VudGluZyB0aGUgbG9jYXRpb24gd2l0aGluIGBvYmpgLCBhbmQgYSBgdmFsdWVgIHBvaW50aW5nIHRvIHRoZSBtYXRjaGVkCiAqIGVsZW1lbnQuIFJldHVybnMgb25seSBmaXJzdCBgY291bnRgIG5vZGVzIGlmIHNwZWNpZmllZC4KICovCmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIG5vZGVzKAogICAgb2JqOiBhbnksCiAgICBwYXRoRXhwcmVzc2lvbjogc3RyaW5nLAogICAgY291bnQ/OiBudW1iZXIsCik6IEFycmF5PHsgcGF0aDogUGF0aENvbXBvbmVudFtdOyB2YWx1ZTogYW55IH0+OwoKLyoqCiAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoaW5nIGBwYXRoRXhwcmVzc2lvbmAuIElmIGBuZXdWYWx1ZWAgaXMKICogcHJvdmlkZWQsIHNldHMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGFuZCByZXR1cm5zIHRoZSBuZXcgdmFsdWUuCiAqLwpleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiB2YWx1ZShvYmo6IGFueSwgcGF0aEV4cHJlc3Npb246IHN0cmluZyk6IGFueTsKZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gdmFsdWU8VD4ob2JqOiBhbnksIHBhdGhFeHByZXNzaW9uOiBzdHJpbmcsIG5ld1ZhbHVlOiBUKTogVDsKCi8qKgogKiBSZXR1cm5zIHRoZSBwYXJlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQuCiAqLwpleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYXJlbnQob2JqOiBhbnksIHBhdGhFeHByZXNzaW9uOiBzdHJpbmcpOiBhbnk7CgovKioKICogUnVucyB0aGUgc3VwcGxpZWQgZnVuY3Rpb24gYGZuYCBvbiBlYWNoIG1hdGNoaW5nIGVsZW1lbnQsIGFuZCByZXBsYWNlcyBlYWNoCiAqIG1hdGNoaW5nIGVsZW1lbnQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gYWNjZXB0cyB0aGUKICogdmFsdWUgb2YgdGhlIG1hdGNoaW5nIGVsZW1lbnQgYXMgaXRzIG9ubHkgcGFyYW1ldGVyLiBSZXR1cm5zIG1hdGNoaW5nIG5vZGVzIHdpdGgKICogdGhlaXIgdXBkYXRlZCB2YWx1ZXMuCiAqLwpleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBhcHBseSgKICAgIG9iajogYW55LAogICAgcGF0aEV4cHJlc3Npb246IHN0cmluZywKICAgIGZuOiAoeDogYW55KSA9PiBhbnksCik6IEFycmF5PHsgcGF0aDogUGF0aENvbXBvbmVudFtdOyB2YWx1ZTogYW55IH0+OwoKLyoqCiAqIFBhcnNlIHRoZSBwcm92aWRlZCBKU09OUGF0aCBleHByZXNzaW9uIGludG8gcGF0aCBjb21wb25lbnRzIGFuZCB0aGVpciBhc3NvY2lhdGVkCiAqIG9wZXJhdGlvbnMuCiAqLwpleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBwYXJzZShwYXRoRXhwcmVzc2lvbjogc3RyaW5nKTogYW55W107CgovKioKICogUmV0dXJucyBhIHBhdGggZXhwcmVzc2lvbiBpbiBzdHJpbmcgZm9ybSwgZ2l2ZW4gYSBwYXRoLiBUaGUgc3VwcGxpZWQgcGF0aCBtYXkgZWl0aGVyCiAqIGJlIGEgZmxhdCBhcnJheSBvZiBrZXlzLCBhcyByZXR1cm5lZCBieSBganAubm9kZXNgIGZvciBleGFtcGxlLCBvciBtYXkgYWx0ZXJuYXRpdmVseSBiZSBhCiAqIGZ1bGx5IHBhcnNlZCBwYXRoIGV4cHJlc3Npb24gaW4gdGhlIGZvcm0gb2YgYW4gYXJyYXkgb2YgcGF0aCBjb21wb25lbnRzIGFzIHJldHVybmVkCiAqIGJ5IGBqcC5wYXJzZWAuCiAqLwpleHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBzdHJpbmdpZnkocGF0aDogUGF0aENvbXBvbmVudFtdKTogc3RyaW5nOwoKZXhwb3J0IGFzIG5hbWVzcGFjZSBqc29ucGF0aDsK";
330
+ const SMART_LEGAL_CONTRACT_BASE64 = "LyoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKi8KCi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZSAqLwoKLy8gd2UgZHVwbGljYXRlIHRoZXNlIGludGVyZmFjZXMgaGVyZSB0byBhdm9pZCBpbXBvcnRzIGludG8gdGhlIHJ1bnRpbWUKaW50ZXJmYWNlIElDb25jZXB0IHsKICAgICRjbGFzczogc3RyaW5nOwogfQoKaW50ZXJmYWNlIElUcmFuc2FjdGlvbiBleHRlbmRzIElDb25jZXB0IHsKICAgICR0aW1lc3RhbXA6IERhdGU7CiB9CgppbnRlcmZhY2UgSUV2ZW50IGV4dGVuZHMgSUNvbmNlcHQgewogICAkdGltZXN0YW1wOiBEYXRlOwp9CgppbnRlcmZhY2UgSVN0YXRlIHsKICAgICRpZGVudGlmaWVyOiBzdHJpbmc7Cn0KCmludGVyZmFjZSBFbmdpbmVSZXNwb25zZTxTIGV4dGVuZHMgSVN0YXRlPiB7CiAgICBzdGF0ZT86IFM7CiAgICBldmVudHM/OiBBcnJheTxJRXZlbnQ+Cn0KCmludGVyZmFjZSBJUmVxdWVzdCBleHRlbmRzIElUcmFuc2FjdGlvbiB7Cn0KCmludGVyZmFjZSBJUmVzcG9uc2UgZXh0ZW5kcyBJVHJhbnNhY3Rpb24gewp9CgppbnRlcmZhY2UgSUFzc2V0IGV4dGVuZHMgSUNvbmNlcHQgewogICAkaWRlbnRpZmllcjogc3RyaW5nOwp9CgppbnRlcmZhY2UgSUNvbnRyYWN0IGV4dGVuZHMgSUFzc2V0IHsKICAgY29udHJhY3RJZDogc3RyaW5nOwp9CgppbnRlcmZhY2UgSUNsYXVzZSBleHRlbmRzIElBc3NldCB7CiAgIGNsYXVzZUlkOiBzdHJpbmc7Cn0KCmludGVyZmFjZSBUcmlnZ2VyUmVzcG9uc2U8UyBleHRlbmRzIElTdGF0ZT4gZXh0ZW5kcyBFbmdpbmVSZXNwb25zZTxTPiB7CiAgICByZXN1bHQ6IElSZXNwb25zZTsKfQoKaW50ZXJmYWNlIEluaXRSZXNwb25zZTxTIGV4dGVuZHMgSVN0YXRlPiBleHRlbmRzIEVuZ2luZVJlc3BvbnNlPFM+IHt9Cgp0eXBlIFRlbXBsYXRlRGF0YSA9IElDb250cmFjdHxJQ2xhdXNlOwoKYWJzdHJhY3QgY2xhc3MgVGVtcGxhdGVMb2dpYzxUIGV4dGVuZHMgVGVtcGxhdGVEYXRhLCBTIGV4dGVuZHMgSVN0YXRlID0gSVN0YXRlPiB7CiAgICBhYnN0cmFjdCB0cmlnZ2VyKGRhdGE6IFQsIHJlcXVlc3Q6IElSZXF1ZXN0LCBzdGF0ZTpTKSA6IFByb21pc2U8VHJpZ2dlclJlc3BvbnNlPFM+PjsKICAgIGluaXQoZGF0YTogVCkgOiBQcm9taXNlPEluaXRSZXNwb25zZTxTPnx1bmRlZmluZWQ+Owp9Cg==";
329
331
 
330
332
  const TYPESCRIPT_URL = process.env.TYPESCRIPT_URL ? process.env.TYPESCRIPT_URL : "https://cdn.jsdelivr.net/npm/typescript@4.9.4/+esm";
331
333
  const SCRIPT_TARGET = 9;
@@ -993,6 +995,81 @@ class TemplateMarkInterpreter {
993
995
  }
994
996
  }
995
997
 
998
+ class TemplateArchiveProcessor {
999
+ /**
1000
+ * Creates a template archive processor
1001
+ * @param {Template} template - the template to be used by the processor
1002
+ */
1003
+ constructor(template) {
1004
+ this.template = template;
1005
+ }
1006
+ /**
1007
+ * Drafts a template by merging it with data
1008
+ * @param {any} data the data to merge with the template
1009
+ * @param {string} format the output format
1010
+ * @param {any} options merge options
1011
+ * @param {[string]} currentTime the current value for 'now'
1012
+ * @returns {Promise} the drafted content
1013
+ */
1014
+ async draft(data, format, options, currentTime) {
1015
+ const metadata = this.template.getMetadata();
1016
+ const templateKind = metadata.getTemplateType() !== 0 ? "clause" : "contract";
1017
+ const modelManager = this.template.getModelManager();
1018
+ const engine = new TemplateMarkInterpreter(modelManager, {});
1019
+ const templateMarkTransformer = new markdownTemplate.TemplateMarkTransformer();
1020
+ const templateMarkDom = templateMarkTransformer.fromMarkdownTemplate(
1021
+ { content: this.template.getTemplate() },
1022
+ modelManager,
1023
+ templateKind,
1024
+ { options }
1025
+ );
1026
+ const now = currentTime ? currentTime : (/* @__PURE__ */ new Date()).toISOString();
1027
+ const ciceroMark = await engine.generate(templateMarkDom, data, { now });
1028
+ const result = markdownTransform.transform(ciceroMark.toJSON(), "ciceromark", ["ciceromark_unquoted", format], null, options);
1029
+ return result;
1030
+ }
1031
+ /**
1032
+ * Trigger the logic of a template
1033
+ * @param {object} request - the request to send to the template logic
1034
+ * @param {object} state - the current state of the template
1035
+ * @param {[string]} currentTime - the current time, defaults to now
1036
+ * @param {[number]} utcOffset - the UTC offer, defaults to zero
1037
+ * @returns {Promise} the response and any events
1038
+ */
1039
+ async trigger(data, request, state, currentTime, utcOffset) {
1040
+ const logicManager = this.template.getLogicManager();
1041
+ if (logicManager.getLanguage() === "typescript") {
1042
+ const compiledCode = {};
1043
+ const tsFiles = logicManager.getScriptManager().getScriptsForTarget("typescript");
1044
+ for (let n = 0; n < tsFiles.length; n++) {
1045
+ const tsFile = tsFiles[n];
1046
+ const compiler = new TypeScriptToJavaScriptCompiler(
1047
+ this.template.getModelManager(),
1048
+ this.template.getTemplateModel().getFullyQualifiedName()
1049
+ );
1050
+ await compiler.initialize();
1051
+ const code = `${Buffer.from(SMART_LEGAL_CONTRACT_BASE64, "base64").toString()}
1052
+ ${tsFile.getContents()}`;
1053
+ const result = compiler.compile(code);
1054
+ compiledCode[tsFile.getIdentifier()] = result;
1055
+ }
1056
+ const evaluator = new JavaScriptEvaluator();
1057
+ const evalResponse = await evaluator.evalDangerously({
1058
+ templateLogic: true,
1059
+ verbose: true,
1060
+ code: compiledCode["logic/logic.ts"].code,
1061
+ // TODO DCS - how to find the code to run?
1062
+ argumentNames: ["data", "request", "state"],
1063
+ arguments: [data, request, state, currentTime, utcOffset]
1064
+ });
1065
+ return evalResponse.result;
1066
+ } else {
1067
+ return -1;
1068
+ }
1069
+ }
1070
+ }
1071
+
1072
+ exports.TemplateArchiveProcessor = TemplateArchiveProcessor;
996
1073
  exports.TemplateMarkInterpreter = TemplateMarkInterpreter;
997
1074
  exports.ensureDirSync = ensureDirSync;
998
1075
  exports.getTemplateClassDeclaration = getTemplateClassDeclaration;