@accordproject/template-engine 1.0.19 → 1.0.23
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/Common.js +9 -9
- package/dist/Common.js.map +1 -1
- package/dist/TemplateMarkInterpreter.js +113 -151
- package/dist/TemplateMarkInterpreter.js.map +1 -1
- package/dist/TemplateMarkToJavaScriptCompiler.js +31 -24
- package/dist/TemplateMarkToJavaScriptCompiler.js.map +1 -1
- package/dist/TemplateMarkToTypeScriptCompiler.js +90 -92
- package/dist/TemplateMarkToTypeScriptCompiler.js.map +1 -1
- package/dist/TypeScriptCompilationContext.js +29 -22
- package/dist/TypeScriptCompilationContext.js.map +1 -1
- package/dist/TypeScriptRuntime.d.ts +1 -0
- package/dist/TypeScriptRuntime.js +24 -12
- package/dist/TypeScriptRuntime.js.map +1 -1
- package/dist/TypeScriptToJavaScriptCompiler.js +18 -16
- package/dist/TypeScriptToJavaScriptCompiler.js.map +1 -1
- package/dist/compilers/Clause.d.ts +1 -1
- package/dist/compilers/Clause.js +18 -35
- package/dist/compilers/Clause.js.map +1 -1
- package/dist/compilers/Common.js +55 -80
- package/dist/compilers/Common.js.map +1 -1
- package/dist/compilers/Conditional.d.ts +1 -1
- package/dist/compilers/Conditional.js +12 -29
- package/dist/compilers/Conditional.js.map +1 -1
- package/dist/compilers/ContractDefinition.d.ts +1 -1
- package/dist/compilers/ContractDefinition.js +10 -27
- package/dist/compilers/ContractDefinition.js.map +1 -1
- package/dist/compilers/EnumVariable.d.ts +1 -1
- package/dist/compilers/EnumVariable.js +12 -29
- package/dist/compilers/EnumVariable.js.map +1 -1
- package/dist/compilers/FormattedVariable.d.ts +1 -1
- package/dist/compilers/FormattedVariable.js +14 -31
- package/dist/compilers/FormattedVariable.js.map +1 -1
- package/dist/compilers/Formula.d.ts +1 -1
- package/dist/compilers/Formula.js +14 -31
- package/dist/compilers/Formula.js.map +1 -1
- package/dist/compilers/Join.d.ts +1 -1
- package/dist/compilers/Join.js +12 -28
- package/dist/compilers/Join.js.map +1 -1
- package/dist/compilers/ListBlock.d.ts +1 -1
- package/dist/compilers/ListBlock.js +17 -35
- package/dist/compilers/ListBlock.js.map +1 -1
- package/dist/compilers/NodeCompilers.js +44 -44
- package/dist/compilers/NodeCompilers.js.map +1 -1
- package/dist/compilers/Optional.d.ts +1 -1
- package/dist/compilers/Optional.js +17 -34
- package/dist/compilers/Optional.js.map +1 -1
- package/dist/compilers/Variable.d.ts +1 -1
- package/dist/compilers/Variable.js +12 -29
- package/dist/compilers/Variable.js.map +1 -1
- package/dist/compilers/With.d.ts +1 -1
- package/dist/compilers/With.js +13 -30
- package/dist/compilers/With.js.map +1 -1
- package/dist/drafting/DateTime/index.js +3 -3
- package/dist/drafting/DateTime/index.js.map +1 -1
- package/dist/drafting/Double/format.js +5 -5
- package/dist/drafting/Double/format.js.map +1 -1
- package/dist/drafting/Double/index.js +2 -2
- package/dist/drafting/Double/index.js.map +1 -1
- package/dist/drafting/Integer/format.js +3 -3
- package/dist/drafting/Integer/format.js.map +1 -1
- package/dist/drafting/Integer/index.js +2 -2
- package/dist/drafting/Integer/index.js.map +1 -1
- package/dist/drafting/Long/index.js +2 -2
- package/dist/drafting/Long/index.js.map +1 -1
- package/dist/drafting/MonetaryAmount/index.js +4 -4
- package/dist/drafting/MonetaryAmount/index.js.map +1 -1
- package/dist/drafting/index.js +7 -7
- package/dist/drafting/index.js.map +1 -1
- package/dist/model-gen/concerto.d.ts +13 -0
- package/dist/model-gen/concerto.js +5 -0
- package/dist/model-gen/concerto.js.map +1 -0
- package/dist/model-gen/concerto.metamodel@1.0.0.d.ts +24 -1
- package/dist/model-gen/concerto@1.0.0.d.ts +3 -2
- package/dist/model-gen/org.accordproject.commonmark@0.5.0.d.ts +2 -2
- package/dist/model-gen/{org.accordproject.templatemark@0.4.0.d.ts → org.accordproject.templatemark@0.5.0.d.ts} +5 -1
- package/dist/model-gen/{org.accordproject.templatemark@0.4.0.js → org.accordproject.templatemark@0.5.0.js} +3 -2
- package/dist/model-gen/org.accordproject.templatemark@0.5.0.js.map +1 -0
- package/dist/runtime/runtime.d.ts +1 -1
- package/dist/runtime/runtime.js +1 -1
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime.tgz +0 -0
- package/package.json +8 -8
- package/dist/model-gen/org.accordproject.templatemark@0.4.0.js.map +0 -1
|
@@ -17,39 +17,46 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.TemplateMarkToJavaScriptCompiler = void 0;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
const traverse_1 = __importDefault(require("traverse"));
|
|
21
|
+
const markdown_common_1 = require("@accordproject/markdown-common");
|
|
22
|
+
const TypeScriptToJavaScriptCompiler_1 = require("./TypeScriptToJavaScriptCompiler");
|
|
23
|
+
const Common_1 = require("./Common");
|
|
24
|
+
const TemplateMarkToTypeScriptCompiler_1 = require("./TemplateMarkToTypeScriptCompiler");
|
|
25
|
+
const org_accordproject_templatemark_0_5_0_1 = require("./model-gen/org.accordproject.templatemark@0.5.0");
|
|
26
|
+
const CODE_NODES = [
|
|
27
|
+
`${markdown_common_1.TemplateMarkModel.NAMESPACE}.FormulaDefinition`,
|
|
28
|
+
`${markdown_common_1.TemplateMarkModel.NAMESPACE}.ConditionalDefinition`,
|
|
29
|
+
`${markdown_common_1.TemplateMarkModel.NAMESPACE}.ClauseDefinition`,
|
|
29
30
|
];
|
|
31
|
+
function checkCode(code) {
|
|
32
|
+
if (code.type !== org_accordproject_templatemark_0_5_0_1.CodeType.TYPESCRIPT) {
|
|
33
|
+
throw new Error(`Cannot compile ${code.contents} as it is not Typescript.`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
30
36
|
/**
|
|
31
37
|
* Compiles all the Typescript nodes in a TemplateMark JSON
|
|
32
38
|
* to ES_2020 and returns a modified TemplateMark JSON.
|
|
33
39
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
class TemplateMarkToJavaScriptCompiler {
|
|
41
|
+
constructor(modelManager, templateConceptFqn) {
|
|
36
42
|
this.modelManager = modelManager;
|
|
37
43
|
this.compiler = new TypeScriptToJavaScriptCompiler_1.TypeScriptToJavaScriptCompiler(modelManager, templateConceptFqn);
|
|
38
44
|
this.templateClass = (0, Common_1.getTemplateClassDeclaration)(modelManager, templateConceptFqn);
|
|
39
45
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
compile(templateJson) {
|
|
47
|
+
const namedTemplateMark = TemplateMarkToTypeScriptCompiler_1.TemplateMarkToTypeScriptCompiler.nameUserCode(templateJson);
|
|
48
|
+
const functionCompiler = new TemplateMarkToTypeScriptCompiler_1.TemplateMarkToTypeScriptCompiler(this.modelManager, this.templateClass.getFullyQualifiedName());
|
|
43
49
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
const that = this;
|
|
51
|
+
const errors = Array();
|
|
52
|
+
const compiled = (0, traverse_1.default)(namedTemplateMark).map(function (x) {
|
|
47
53
|
if (x && CODE_NODES.includes(x.$class)) {
|
|
48
54
|
if (x.code) { // formula
|
|
49
|
-
|
|
55
|
+
checkCode(x.code);
|
|
56
|
+
const result = that.compiler.compile(functionCompiler.writeFunctionToString(x.name, 'any', x.code.contents));
|
|
50
57
|
if (result.errors.length === 0) {
|
|
51
58
|
x.code.contents = result.code;
|
|
52
|
-
x.code.type =
|
|
59
|
+
x.code.type = org_accordproject_templatemark_0_5_0_1.CodeType.ES_2020;
|
|
53
60
|
this.update(x);
|
|
54
61
|
}
|
|
55
62
|
else {
|
|
@@ -61,10 +68,11 @@ var TemplateMarkToJavaScriptCompiler = /** @class */ (function () {
|
|
|
61
68
|
}
|
|
62
69
|
}
|
|
63
70
|
else if (x.condition) { // condition or clause (boolean condition)
|
|
64
|
-
|
|
71
|
+
checkCode(x.condition);
|
|
72
|
+
const result = that.compiler.compile(functionCompiler.writeFunctionToString(x.functionName, 'boolean', x.condition.contents));
|
|
65
73
|
if (result.errors.length === 0) {
|
|
66
74
|
x.condition.contents = result.code;
|
|
67
|
-
x.condition.type =
|
|
75
|
+
x.condition.type = org_accordproject_templatemark_0_5_0_1.CodeType.ES_2020;
|
|
68
76
|
this.update(x);
|
|
69
77
|
}
|
|
70
78
|
else {
|
|
@@ -83,8 +91,7 @@ var TemplateMarkToJavaScriptCompiler = /** @class */ (function () {
|
|
|
83
91
|
else {
|
|
84
92
|
throw errors;
|
|
85
93
|
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
}());
|
|
94
|
+
}
|
|
95
|
+
}
|
|
89
96
|
exports.TemplateMarkToJavaScriptCompiler = TemplateMarkToJavaScriptCompiler;
|
|
90
97
|
//# sourceMappingURL=TemplateMarkToJavaScriptCompiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateMarkToJavaScriptCompiler.js","sourceRoot":"","sources":["../src/TemplateMarkToJavaScriptCompiler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"TemplateMarkToJavaScriptCompiler.js","sourceRoot":"","sources":["../src/TemplateMarkToJavaScriptCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,79 +40,79 @@ exports.TemplateMarkToTypeScriptCompiler = void 0;
|
|
|
40
40
|
* See the License for the specific language governing permissions and
|
|
41
41
|
* limitations under the License.
|
|
42
42
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
const traverse_1 = __importDefault(require("traverse"));
|
|
44
|
+
const fs_extra_1 = require("fs-extra");
|
|
45
|
+
const tar = __importStar(require("tar"));
|
|
46
|
+
const stream_1 = require("stream");
|
|
47
|
+
const markdown_common_1 = require("@accordproject/markdown-common");
|
|
48
|
+
const concerto_core_1 = require("@accordproject/concerto-core");
|
|
49
|
+
const concerto_codegen_1 = require("@accordproject/concerto-codegen");
|
|
50
|
+
const concerto_util_1 = require("@accordproject/concerto-util");
|
|
51
|
+
const NodeCompilers_1 = require("./compilers/NodeCompilers");
|
|
52
|
+
const Common_1 = require("./compilers/Common");
|
|
53
|
+
const Common_2 = require("./Common");
|
|
54
|
+
const runtime_1 = require("./runtime/runtime");
|
|
55
55
|
/**
|
|
56
56
|
* Converts TemplateMark DOM to a Typescript function, that, when run with JSON data
|
|
57
57
|
* that conforms to the template model will produce AgreementMark JSON output.
|
|
58
58
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
class TemplateMarkToTypeScriptCompiler {
|
|
60
|
+
constructor(modelManager, templateConceptFqn) {
|
|
61
61
|
this.modelManager = modelManager;
|
|
62
62
|
this.templateClass = (0, Common_2.getTemplateClassDeclaration)(this.modelManager, templateConceptFqn);
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
writeFunctionToString(functionName, returnType, code) {
|
|
65
|
+
let result = '';
|
|
66
66
|
result += '/// ---cut---\n';
|
|
67
|
-
result +=
|
|
68
|
-
this.templateClass.getProperties().forEach(
|
|
69
|
-
result +=
|
|
67
|
+
result += `export function ${functionName}(data:TemplateModel.I${this.templateClass.getName()}, library:any, now:dayjs.Dayjs) : ${returnType} {\n`;
|
|
68
|
+
this.templateClass.getProperties().forEach((p) => {
|
|
69
|
+
result += ` const ${p.getName()} = data.${p.getName()};\n`;
|
|
70
70
|
});
|
|
71
71
|
result += ' ' + code.trim() + '\n';
|
|
72
72
|
result += '}\n';
|
|
73
73
|
result += '\n';
|
|
74
74
|
return result;
|
|
75
|
-
}
|
|
76
|
-
|
|
75
|
+
}
|
|
76
|
+
writeFunction(fw, functionName, returnType, code) {
|
|
77
77
|
fw.writeLine(0, this.writeFunctionToString(functionName, returnType, code));
|
|
78
|
-
}
|
|
78
|
+
}
|
|
79
79
|
/**
|
|
80
80
|
* Get a model manager with templatemark model
|
|
81
81
|
* @param {string} outputDir the output directory
|
|
82
82
|
* @returns {ModelManager} the model manager
|
|
83
83
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
getTemplateMarkModelManager() {
|
|
85
|
+
const modelManager = new concerto_core_1.ModelManager({ strict: true });
|
|
86
86
|
modelManager.addCTOModel(markdown_common_1.ConcertoMetaModel.MODEL, 'concertometamodel.cto');
|
|
87
87
|
modelManager.addCTOModel(markdown_common_1.CommonMarkModel.MODEL, 'commonmark.cto');
|
|
88
88
|
modelManager.addCTOModel(markdown_common_1.TemplateMarkModel.MODEL, 'templatemark.cto');
|
|
89
89
|
return modelManager;
|
|
90
|
-
}
|
|
90
|
+
}
|
|
91
91
|
/**
|
|
92
92
|
* Get a model manager with templatemark model
|
|
93
93
|
* @param {string} outputDir the output directory
|
|
94
94
|
* @returns {ModelManager} the model manager
|
|
95
95
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
getCiceroMarkModelManager() {
|
|
97
|
+
const modelManager = new concerto_core_1.ModelManager({ strict: true });
|
|
98
98
|
modelManager.addCTOModel(markdown_common_1.ConcertoMetaModel.MODEL, 'concertometamodel.cto');
|
|
99
99
|
modelManager.addCTOModel(markdown_common_1.CommonMarkModel.MODEL, 'commonmark.cto');
|
|
100
100
|
modelManager.addCTOModel(markdown_common_1.CiceroMarkModel.MODEL, 'ciceromark.cto');
|
|
101
101
|
return modelManager;
|
|
102
|
-
}
|
|
103
|
-
|
|
102
|
+
}
|
|
103
|
+
generateTypeScript(modelManager, outputDir) {
|
|
104
104
|
// generate the TS code for the template model
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
const tsVisitor = new concerto_codegen_1.CodeGen.TypescriptVisitor();
|
|
106
|
+
const parameters = {
|
|
107
107
|
fileWriter: new concerto_util_1.FileWriter(outputDir)
|
|
108
108
|
};
|
|
109
109
|
modelManager.accept(tsVisitor, parameters);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
(0, fs_extra_1.writeFileSync)(
|
|
115
|
-
}
|
|
110
|
+
}
|
|
111
|
+
generateSampleData(modelManager, outputDir) {
|
|
112
|
+
const factory = new concerto_core_1.Factory(modelManager);
|
|
113
|
+
const instance = factory.newResource(this.templateClass.getNamespace(), this.templateClass.getName(), this.templateClass.isIdentified() ? 'sample' : undefined, { generate: 'sample', includeOptionalFields: true });
|
|
114
|
+
(0, fs_extra_1.writeFileSync)(`${outputDir}/sample.json`, JSON.stringify(instance, null, 2));
|
|
115
|
+
}
|
|
116
116
|
/**
|
|
117
117
|
* The main iteration function over templatemark. This function
|
|
118
118
|
* looks up an INodeCompiler that can handle each templatemark node
|
|
@@ -123,24 +123,24 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
123
123
|
* @param {number} level the indentation level
|
|
124
124
|
* @param {object} templateMark the templatemark node to iterate over
|
|
125
125
|
*/
|
|
126
|
-
|
|
127
|
-
fw.writeLine(level,
|
|
126
|
+
static doIt(fw, level, templateMark) {
|
|
127
|
+
fw.writeLine(level, `// start processing ${concerto_core_1.ModelUtil.getShortName(templateMark.$class)}`);
|
|
128
128
|
(0, traverse_1.default)(templateMark).forEach(function (context) {
|
|
129
129
|
if (typeof context === 'object' && context.$class && typeof context.$class === 'string') {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this.before(
|
|
134
|
-
|
|
135
|
-
|
|
130
|
+
const nodeClass = context.$class;
|
|
131
|
+
const compiler = (0, NodeCompilers_1.getCompiler)(nodeClass);
|
|
132
|
+
const sourceLevel = level + 1;
|
|
133
|
+
this.before(() => {
|
|
134
|
+
compiler.enter(fw, sourceLevel, context);
|
|
135
|
+
compiler.generate(fw, sourceLevel, context, TemplateMarkToTypeScriptCompiler.doIt);
|
|
136
136
|
});
|
|
137
|
-
this.after(
|
|
138
|
-
|
|
137
|
+
this.after(() => {
|
|
138
|
+
compiler.exit(fw, sourceLevel, context);
|
|
139
139
|
});
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
|
-
fw.writeLine(level,
|
|
143
|
-
}
|
|
142
|
+
fw.writeLine(level, `// end processing ${concerto_core_1.ModelUtil.getShortName(templateMark.$class)}`);
|
|
143
|
+
}
|
|
144
144
|
/**
|
|
145
145
|
* Converts a TemplateMark document to typescript code that is parameterised
|
|
146
146
|
* by the 'data' argument.
|
|
@@ -163,8 +163,8 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
163
163
|
* @param {IDocument} templateMark the TemplateMark Concerto resource
|
|
164
164
|
* @param {string} outputDir the output directory for code
|
|
165
165
|
*/
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
compileGenerator(templateMark, outputDir) {
|
|
167
|
+
const fw = new concerto_util_1.FileWriter(outputDir);
|
|
168
168
|
fw.openFile('index.ts');
|
|
169
169
|
fw.writeLine(0, '// generated code');
|
|
170
170
|
fw.writeLine(0, 'import { readFileSync } from \'fs\';');
|
|
@@ -189,28 +189,28 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
189
189
|
TemplateMarkToTypeScriptCompiler.doIt(fw, 1, templateMark);
|
|
190
190
|
(0, Common_1.writeEpilog)(fw, 0);
|
|
191
191
|
fw.closeFile();
|
|
192
|
-
}
|
|
192
|
+
}
|
|
193
193
|
/**
|
|
194
194
|
* Decompresses the base64 zipped runtime into an output folder.
|
|
195
195
|
* @param {string} outputDir the output directory to copy the runtime to
|
|
196
196
|
*/
|
|
197
|
-
|
|
198
|
-
(0, fs_extra_1.ensureDirSync)(
|
|
199
|
-
|
|
200
|
-
|
|
197
|
+
copyRuntime(outputDir) {
|
|
198
|
+
(0, fs_extra_1.ensureDirSync)(`${outputDir}/${Common_1.RUNTIME_DIR}`);
|
|
199
|
+
const runtimeBuffer = Buffer.from(runtime_1.RUNTIME_TGZ_BASE64, 'base64');
|
|
200
|
+
const s = new stream_1.Readable();
|
|
201
201
|
s.push(runtimeBuffer);
|
|
202
202
|
s.push(null);
|
|
203
203
|
s.pipe(tar.x({
|
|
204
204
|
strip: 2,
|
|
205
|
-
C:
|
|
205
|
+
C: `${outputDir}/${Common_1.RUNTIME_DIR}`
|
|
206
206
|
}));
|
|
207
|
-
}
|
|
207
|
+
}
|
|
208
208
|
/**
|
|
209
209
|
* Create package.json for the generated code
|
|
210
210
|
* @param {string} outputDir the output directory to copy the runtime to
|
|
211
211
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
212
|
+
createPackage(outputDir) {
|
|
213
|
+
const packageJson = {
|
|
214
214
|
'name': 'generated',
|
|
215
215
|
'version': '1.0.0',
|
|
216
216
|
'description': 'TypeScript code generated from TemplateMark',
|
|
@@ -237,9 +237,9 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
237
237
|
'start': 'ts-node index.ts sample.json'
|
|
238
238
|
}
|
|
239
239
|
};
|
|
240
|
-
(0, fs_extra_1.writeFileSync)(
|
|
241
|
-
}
|
|
242
|
-
|
|
240
|
+
(0, fs_extra_1.writeFileSync)(`${outputDir}/package.json`, JSON.stringify(packageJson, null, 2));
|
|
241
|
+
}
|
|
242
|
+
compile(templateMark, outputDir, options) {
|
|
243
243
|
// create output dir
|
|
244
244
|
(0, fs_extra_1.ensureDirSync)(outputDir);
|
|
245
245
|
// generate sample data
|
|
@@ -249,42 +249,41 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
249
249
|
this.generateTypeScript(this.getTemplateMarkModelManager(), outputDir);
|
|
250
250
|
this.generateTypeScript(this.getCiceroMarkModelManager(), outputDir);
|
|
251
251
|
// generate names for all the nodes containing user code
|
|
252
|
-
|
|
252
|
+
const namedTemplateMark = TemplateMarkToTypeScriptCompiler.nameUserCode(templateMark.toJSON ? templateMark.toJSON() : templateMark);
|
|
253
253
|
// compile the user code
|
|
254
254
|
this.compileUserCode(namedTemplateMark, outputDir);
|
|
255
255
|
// copy the runtime
|
|
256
|
-
if (!
|
|
256
|
+
if (!options?.skipCopyRuntime) {
|
|
257
257
|
this.copyRuntime(outputDir);
|
|
258
258
|
}
|
|
259
259
|
// compile the generator
|
|
260
|
-
if (!
|
|
260
|
+
if (!options?.skipGenerator) {
|
|
261
261
|
this.createPackage(outputDir);
|
|
262
262
|
this.compileGenerator(namedTemplateMark, outputDir);
|
|
263
263
|
}
|
|
264
|
-
}
|
|
265
|
-
|
|
264
|
+
}
|
|
265
|
+
static nameUserCode(templateMarkDom) {
|
|
266
266
|
return (0, traverse_1.default)(templateMarkDom).map(function (x) {
|
|
267
|
-
if (x && ((x.$class ===
|
|
268
|
-
(
|
|
269
|
-
x.functionName =
|
|
267
|
+
if (x && ((x.$class === `${markdown_common_1.TemplateMarkModel.NAMESPACE}.ConditionalDefinition` && x.condition) ||
|
|
268
|
+
(`${markdown_common_1.TemplateMarkModel.NAMESPACE}.ClauseDefinition` && x.condition))) {
|
|
269
|
+
x.functionName = `condition_${this.path.join('_')}`;
|
|
270
270
|
}
|
|
271
271
|
this.update(x);
|
|
272
272
|
});
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
var fw = new concerto_util_1.FileWriter(outputDir);
|
|
273
|
+
}
|
|
274
|
+
compileUserCode(templateMark, outputDir) {
|
|
275
|
+
const fw = new concerto_util_1.FileWriter(outputDir);
|
|
277
276
|
fw.openFile('usercode.ts');
|
|
278
277
|
fw.writeLine(0, '// generated code, do not modify');
|
|
279
278
|
fw.writeLine(0, '');
|
|
280
279
|
fw.writeLine(0, '// IMPORTS');
|
|
281
|
-
fw.writeLine(0,
|
|
280
|
+
fw.writeLine(0, `import * as TemplateModel from './${this.templateClass.getNamespace()}';`);
|
|
282
281
|
fw.writeLine(0, 'import dayjs from \'dayjs\';');
|
|
283
282
|
fw.writeLine(0, 'import jp from \'jsonpath\';');
|
|
284
283
|
fw.writeLine(0, '');
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
if (x && x.$class ===
|
|
284
|
+
const templateMarkDom = templateMark;
|
|
285
|
+
const functionNodes = (0, traverse_1.default)(templateMarkDom).reduce(function (acc, x) {
|
|
286
|
+
if (x && x.$class === `${markdown_common_1.TemplateMarkModel.NAMESPACE}.FormulaDefinition`) {
|
|
288
287
|
acc.push({
|
|
289
288
|
name: x.name,
|
|
290
289
|
code: x.code,
|
|
@@ -292,8 +291,8 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
292
291
|
}
|
|
293
292
|
return acc;
|
|
294
293
|
}, []);
|
|
295
|
-
|
|
296
|
-
if (x && x.$class ===
|
|
294
|
+
const conditionalNodes = (0, traverse_1.default)(templateMarkDom).reduce(function (acc, x) {
|
|
295
|
+
if (x && x.$class === `${markdown_common_1.TemplateMarkModel.NAMESPACE}.ConditionalDefinition` && x.condition) {
|
|
297
296
|
acc.push({
|
|
298
297
|
name: x.functionName,
|
|
299
298
|
code: x.condition,
|
|
@@ -301,8 +300,8 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
301
300
|
}
|
|
302
301
|
return acc;
|
|
303
302
|
}, []);
|
|
304
|
-
|
|
305
|
-
if (x && x.$class ===
|
|
303
|
+
const clauseNodes = (0, traverse_1.default)(templateMarkDom).reduce(function (acc, x) {
|
|
304
|
+
if (x && x.$class === `${markdown_common_1.TemplateMarkModel.NAMESPACE}.ClauseDefinition` && x.condition) {
|
|
306
305
|
acc.push({
|
|
307
306
|
name: x.functionName,
|
|
308
307
|
code: x.condition,
|
|
@@ -311,23 +310,22 @@ var TemplateMarkToTypeScriptCompiler = /** @class */ (function () {
|
|
|
311
310
|
return acc;
|
|
312
311
|
}, []);
|
|
313
312
|
fw.writeLine(0, '// FORMULAE');
|
|
314
|
-
functionNodes.forEach(
|
|
315
|
-
|
|
313
|
+
functionNodes.forEach((fun) => {
|
|
314
|
+
this.writeFunction(fw, `${fun.name}`, 'any', fun.code.contents);
|
|
316
315
|
});
|
|
317
316
|
fw.writeLine(0, '');
|
|
318
317
|
fw.writeLine(0, '// CONDITIONALS');
|
|
319
|
-
conditionalNodes.forEach(
|
|
320
|
-
|
|
318
|
+
conditionalNodes.forEach((fun) => {
|
|
319
|
+
this.writeFunction(fw, `${fun.name}`, 'boolean', fun.code.contents);
|
|
321
320
|
});
|
|
322
321
|
fw.writeLine(0, '');
|
|
323
322
|
fw.writeLine(0, '// CLAUSES');
|
|
324
|
-
clauseNodes.forEach(
|
|
325
|
-
|
|
323
|
+
clauseNodes.forEach((fun) => {
|
|
324
|
+
this.writeFunction(fw, `${fun.name}`, 'boolean', fun.code.contents);
|
|
326
325
|
});
|
|
327
326
|
fw.writeLine(0, '');
|
|
328
327
|
fw.closeFile();
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
}());
|
|
328
|
+
}
|
|
329
|
+
}
|
|
332
330
|
exports.TemplateMarkToTypeScriptCompiler = TemplateMarkToTypeScriptCompiler;
|
|
333
331
|
//# sourceMappingURL=TemplateMarkToTypeScriptCompiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateMarkToTypeScriptCompiler.js","sourceRoot":"","sources":["../src/TemplateMarkToTypeScriptCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;GAYG;AACH,
|
|
1
|
+
{"version":3,"file":"TemplateMarkToTypeScriptCompiler.js","sourceRoot":"","sources":["../src/TemplateMarkToTypeScriptCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TypeScriptCompilationContext = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const concerto_codegen_1 = require("@accordproject/concerto-codegen");
|
|
5
|
+
const concerto_util_1 = require("@accordproject/concerto-util");
|
|
6
|
+
const Common_1 = require("./Common");
|
|
7
7
|
/**
|
|
8
8
|
* This class creates the typescript types
|
|
9
9
|
* required to compile Typescript expressions (used in
|
|
@@ -11,35 +11,42 @@ var Common_1 = require("./Common");
|
|
|
11
11
|
* these to create a compilation context for '@typescript/twoslash'
|
|
12
12
|
* which is used to compile the typescript code.
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
class TypeScriptCompilationContext {
|
|
15
|
+
constructor(modelManager, templateConceptFqn) {
|
|
16
16
|
this.modelManager = modelManager;
|
|
17
17
|
this.templateClass = (0, Common_1.getTemplateClassDeclaration)(this.modelManager, templateConceptFqn);
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
getTypeScriptFiles() {
|
|
20
|
+
const result = {};
|
|
21
|
+
const visitor = new concerto_codegen_1.CodeGen.TypescriptVisitor();
|
|
22
|
+
const writer = new concerto_util_1.InMemoryWriter();
|
|
23
|
+
const params = {
|
|
24
24
|
fileWriter: writer
|
|
25
25
|
};
|
|
26
26
|
this.modelManager.accept(visitor, params);
|
|
27
|
-
writer.getFilesInMemory().forEach(
|
|
27
|
+
writer.getFilesInMemory().forEach((value, key) => {
|
|
28
28
|
result[key] = value;
|
|
29
29
|
});
|
|
30
30
|
return result;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
Object.keys(files).forEach(
|
|
36
|
-
|
|
37
|
-
result +=
|
|
31
|
+
}
|
|
32
|
+
getCompilationContext() {
|
|
33
|
+
const files = this.getTypeScriptFiles();
|
|
34
|
+
let result = '';
|
|
35
|
+
Object.keys(files).forEach(key => {
|
|
36
|
+
const content = files[key];
|
|
37
|
+
result += `
|
|
38
|
+
// @filename: ${key}
|
|
39
|
+
${content}
|
|
40
|
+
`;
|
|
38
41
|
});
|
|
39
|
-
result +=
|
|
42
|
+
result += `
|
|
43
|
+
// @filename: code.ts
|
|
44
|
+
import * as TemplateModel from './${this.templateClass.getNamespace()}';
|
|
45
|
+
import dayjs from 'dayjs';
|
|
46
|
+
import jp from 'jsonpath';
|
|
47
|
+
`;
|
|
40
48
|
return result;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
}());
|
|
49
|
+
}
|
|
50
|
+
}
|
|
44
51
|
exports.TypeScriptCompilationContext = TypeScriptCompilationContext;
|
|
45
52
|
//# sourceMappingURL=TypeScriptCompilationContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptCompilationContext.js","sourceRoot":"","sources":["../src/TypeScriptCompilationContext.ts"],"names":[],"mappings":";;;AAcA,
|
|
1
|
+
{"version":3,"file":"TypeScriptCompilationContext.js","sourceRoot":"","sources":["../src/TypeScriptCompilationContext.ts"],"names":[],"mappings":";;;AAcA,sEAA0D;AAC1D,gEAA8D;AAC9D,qCAAuD;AAEvD;;;;;;GAMG;AACH,MAAa,4BAA4B;IAKrC,YAAY,YAAyB,EAAC,kBAA2B;QAC7D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,IAAA,oCAA2B,EAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAC5F,CAAC;IAED,kBAAkB;QACd,MAAM,MAAM,GAAyB,EAAE,CAAC;QAExC,MAAM,OAAO,GAAG,IAAI,0BAAO,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,8BAAc,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,MAAM;SACrB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,qBAAqB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAExC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,IAAI;gBACN,GAAG;EACjB,OAAO;CACR,CAAC;QACM,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI;;oCAEkB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;;;CAGpE,CAAC;QACM,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA/CD,oEA+CC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function joinList(data: Array<string>, joinDef: any): string;
|
|
1
2
|
export declare function peek($data: any[]): any;
|
|
2
3
|
export declare function peekProperty($data: any[], propertyName: string, allowUndefined?: boolean): any;
|
|
3
4
|
export declare function push($data: any[], item: any): number;
|