@freelog/freelog-cg-collection 1.2.12 → 1.2.13

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.
@@ -4,11 +4,9 @@ export interface FunctionCallInfo extends Exp {
4
4
  expType: "functionCall";
5
5
  varChain?: string;
6
6
  funcName: string;
7
- paramList: [
8
- {
9
- paramName?: string;
10
- paramValue: string;
11
- paramValueObj: AssignmentClauseInfo;
12
- }
13
- ];
7
+ paramList: {
8
+ paramName?: string;
9
+ paramValue: string;
10
+ paramValueObj: AssignmentClauseInfo;
11
+ }[];
14
12
  }
@@ -2,12 +2,10 @@ import { AssignmentClauseInfo } from "../AssignmentClauseInfo";
2
2
  import { ExpBoolean } from "../exp-boolean/ExpBoolean";
3
3
  export interface ExpCondition extends AssignmentClauseInfo {
4
4
  expType: "expCondition";
5
- paramList: [
6
- {
7
- paramCondition?: string;
8
- paramConditionObj?: ExpBoolean;
9
- paramValue: string;
10
- paramValueObj: any;
11
- }
12
- ];
5
+ paramList: {
6
+ paramCondition?: string;
7
+ paramConditionObj?: ExpBoolean;
8
+ paramValue: string;
9
+ paramValueObj: any;
10
+ }[];
13
11
  }
@@ -1,6 +1,7 @@
1
1
  import { FunctionCallInfo } from "../exp/FunctionCallInfo";
2
2
  import { AssignmentClauseInfo } from "../AssignmentClauseInfo";
3
3
  export interface ActionInfo {
4
+ type: string;
4
5
  }
5
6
  export interface ActionFunctionCall extends ActionInfo {
6
7
  type: "functionCall";
@@ -3,31 +3,30 @@ import { EventInfo } from "./EventInfo";
3
3
  import { AssignmentClauseInfo } from "../AssignmentClauseInfo";
4
4
  import { ContractDeclarationInfo } from "./ContractDeclarationInfo";
5
5
  export interface PolicyInfo {
6
- audienceSection: {
7
- audiences: string[];
8
- conditions: [
9
- {
10
- paramName?: string;
11
- paramValue: string;
12
- paramValueObj: AssignmentClauseInfo;
13
- content: string;
14
- }
15
- ];
16
- };
17
- contractDeclarationSection: {
18
- contractDeclarations: ContractDeclarationInfo[];
19
- };
6
+ audienceSection: AudienceSection;
7
+ contractDeclarationSection: ContractDeclarationSection;
20
8
  varDeclarationList: VarDeclarationInfo[];
21
- stateMachine: [
22
- {
23
- stateName: string;
24
- assignments: VarDeclarationInfo[];
25
- events: EventInfo[];
26
- serviceStateSection?: {
27
- serviceState?: string;
28
- serviceStateCollection?: string[];
29
- };
30
- stateContextArgs?: string[];
31
- }
32
- ];
9
+ stateMachine: StateInfo[];
10
+ }
11
+ export interface AudienceSection {
12
+ audiences: string[];
13
+ conditions: {
14
+ paramName?: string;
15
+ paramValue: string;
16
+ paramValueObj: AssignmentClauseInfo;
17
+ content: string;
18
+ }[];
19
+ }
20
+ export interface ContractDeclarationSection {
21
+ contractDeclarations: ContractDeclarationInfo[];
22
+ }
23
+ export interface StateInfo {
24
+ stateName: string;
25
+ assignments: VarDeclarationInfo[];
26
+ events: EventInfo[];
27
+ serviceStateSection?: {
28
+ serviceState?: string;
29
+ serviceStateCollection?: string[];
30
+ };
31
+ stateContextArgs?: string[];
33
32
  }
@@ -0,0 +1,26 @@
1
+ import { AudienceSection, ContractDeclarationSection, PolicyInfo, StateInfo } from "../model/policy/PolicyInfo";
2
+ import { VarDeclarationInfo } from "../model/policy/VarDeclarationInfo";
3
+ import { ContractDeclarationInfo } from "../model/policy/ContractDeclarationInfo";
4
+ import { EventInfo } from "../model/policy/EventInfo";
5
+ import { AssignmentClauseInfo } from "../model/AssignmentClauseInfo";
6
+ import { ActionInfo } from "../model/policy/ActionInfo";
7
+ export declare class PolicyDecompiler {
8
+ static decompile(policyInfo: PolicyInfo): string;
9
+ static decompileAudienceSection(audienceSection: AudienceSection): string;
10
+ static decompileContractDeclarationSection(contractDeclarationSection: ContractDeclarationSection): string;
11
+ static decompileContractDeclaration(contractDeclarationInfo: ContractDeclarationInfo): string;
12
+ static decompileVarDeclarationList(varDeclarationList: VarDeclarationInfo[]): string;
13
+ static decompileVarDeclaration(varDeclaration: VarDeclarationInfo): string;
14
+ static decompileStateMachine(stateMachine: StateInfo[]): string;
15
+ static decompileStateInfo(stateInfo: StateInfo): string;
16
+ static decompileEventInfo(eventInfo: EventInfo): string;
17
+ static decompileActionInfo(actionInfo: ActionInfo): string;
18
+ static decompileAssignmentClauseInfo(assignmentClauseInfo: AssignmentClauseInfo): string;
19
+ private static decompileAssignmentClauseInfo4Exp;
20
+ private static decompileAssignmentClauseInfo4ExpBoolean;
21
+ static decompileParamList(paramList: {
22
+ paramName?: string;
23
+ paramValue: string;
24
+ paramValueObj: any;
25
+ }[]): string;
26
+ }
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolicyDecompiler = void 0;
4
+ class PolicyDecompiler {
5
+ static decompile(policyInfo) {
6
+ let content = "";
7
+ content += `\n${PolicyDecompiler.decompileAudienceSection(policyInfo.audienceSection)}`;
8
+ if (policyInfo.contractDeclarationSection != null && policyInfo.contractDeclarationSection.contractDeclarations != null && policyInfo.contractDeclarationSection.contractDeclarations.length != 0) {
9
+ content += `\n${PolicyDecompiler.decompileContractDeclarationSection(policyInfo.contractDeclarationSection)}`;
10
+ }
11
+ if (policyInfo.varDeclarationList != null && policyInfo.varDeclarationList.length != 0) {
12
+ content += `\n${PolicyDecompiler.decompileVarDeclarationList(policyInfo.varDeclarationList)}`;
13
+ }
14
+ content += `\n${PolicyDecompiler.decompileStateMachine(policyInfo.stateMachine)}`;
15
+ return content;
16
+ }
17
+ static decompileAudienceSection(audienceSection) {
18
+ let content = "";
19
+ content += `FOR ${audienceSection.audiences.join(", ")}`;
20
+ if (audienceSection.conditions != null && audienceSection.conditions.length != 0) {
21
+ content += `(${PolicyDecompiler.decompileParamList(audienceSection.conditions)})`;
22
+ }
23
+ return content;
24
+ }
25
+ static decompileContractDeclarationSection(contractDeclarationSection) {
26
+ let content = "\n";
27
+ if (contractDeclarationSection.contractDeclarations != null && contractDeclarationSection.contractDeclarations.length != 0) {
28
+ content += contractDeclarationSection.contractDeclarations.map(PolicyDecompiler.decompileContractDeclaration).join("\n");
29
+ }
30
+ return content;
31
+ }
32
+ static decompileContractDeclaration(contractDeclarationInfo) {
33
+ let content = "";
34
+ let varValueObj = contractDeclarationInfo.varValueObj;
35
+ switch (contractDeclarationInfo.type) {
36
+ case "contractDeclaration": {
37
+ content += `${varValueObj.keyword} &${varValueObj.type}(${PolicyDecompiler.decompileParamList(varValueObj.conditions)}) AS ${varValueObj.varName}`;
38
+ break;
39
+ }
40
+ }
41
+ return content;
42
+ }
43
+ static decompileVarDeclarationList(varDeclarationList) {
44
+ let content = "";
45
+ if (varDeclarationList != null && varDeclarationList.length != 0) {
46
+ content += "\n";
47
+ content += varDeclarationList.map(PolicyDecompiler.decompileVarDeclaration).join("\n");
48
+ }
49
+ return content;
50
+ }
51
+ static decompileVarDeclaration(varDeclaration) {
52
+ let content = "";
53
+ switch (varDeclaration.type) {
54
+ case "varGlobal":
55
+ content += `${varDeclaration.varName} = ${PolicyDecompiler.decompileAssignmentClauseInfo(varDeclaration.varValueObj)}`;
56
+ break;
57
+ case "varMacro":
58
+ content += `${varDeclaration.varName} <- ${PolicyDecompiler.decompileAssignmentClauseInfo(varDeclaration.varValueObj)}`;
59
+ break;
60
+ case "expCustom":
61
+ content += `defExpr ${varDeclaration.varName}`;
62
+ content += `(`;
63
+ if (varDeclaration.paramList != null && varDeclaration.paramList.length != 0) {
64
+ content += varDeclaration.paramList.join(", ");
65
+ }
66
+ content += `)`;
67
+ content += ` = ${PolicyDecompiler.decompileAssignmentClauseInfo(varDeclaration.varValueObj)}`;
68
+ break;
69
+ case "varInitial":
70
+ content += `let ${varDeclaration.varName} = ${PolicyDecompiler.decompileAssignmentClauseInfo(varDeclaration.varValueObj)}`;
71
+ break;
72
+ case "varAssigment":
73
+ content = `${varDeclaration.varName} = ${PolicyDecompiler.decompileAssignmentClauseInfo(varDeclaration.varValueObj)}`;
74
+ break;
75
+ }
76
+ return content;
77
+ }
78
+ static decompileStateMachine(stateMachine) {
79
+ let content = "\n";
80
+ content += `${stateMachine.map(this.decompileStateInfo).join("\n\n")}`;
81
+ return content;
82
+ }
83
+ static decompileStateInfo(stateInfo) {
84
+ let content = "";
85
+ /*
86
+ * serviceStateSection
87
+ */
88
+ content += stateInfo.stateName;
89
+ if (stateInfo.serviceStateSection.serviceState != null) {
90
+ content += ` ${stateInfo.serviceStateSection.serviceState}`;
91
+ }
92
+ if (stateInfo.serviceStateSection.serviceStateCollection != null && stateInfo.serviceStateSection.serviceStateCollection.length != 0) {
93
+ content += `{`;
94
+ content += `${stateInfo.serviceStateSection.serviceStateCollection.join(", ")}`;
95
+ content += `}`;
96
+ }
97
+ if (stateInfo.stateContextArgs != null && stateInfo.stateContextArgs.length != 0) {
98
+ content += `[`;
99
+ content += `${stateInfo.stateContextArgs.join(", ")}`;
100
+ content += `]`;
101
+ }
102
+ content += `:\n`;
103
+ /*
104
+ * assignments
105
+ */
106
+ if (stateInfo.assignments != null && stateInfo.assignments.length != 0) {
107
+ content += stateInfo.assignments.map(assignment => {
108
+ return `\t${PolicyDecompiler.decompileVarDeclaration(assignment)}`;
109
+ }).join("\n");
110
+ content += `\n`;
111
+ }
112
+ /*
113
+ * events
114
+ */
115
+ content += stateInfo.events.map(eventInfo => {
116
+ return `\t${PolicyDecompiler.decompileEventInfo(eventInfo)}`;
117
+ }).join("\n");
118
+ return content;
119
+ }
120
+ static decompileEventInfo(eventInfo) {
121
+ let content = "";
122
+ if (eventInfo.type == "normal") {
123
+ content += `Event.`;
124
+ if (eventInfo.eventPath != null) {
125
+ content += `${eventInfo.eventPath}.`;
126
+ }
127
+ content += `${eventInfo.eventName}(${PolicyDecompiler.decompileParamList(eventInfo.eventParamList)}) -> ${eventInfo.toState}`;
128
+ if (eventInfo.actions != null && eventInfo.actions.length != 0) {
129
+ content += `{`;
130
+ content += eventInfo.actions.map(PolicyDecompiler.decompileActionInfo).join("; ");
131
+ content += `}`;
132
+ }
133
+ }
134
+ else if (eventInfo.type == "terminate") {
135
+ content += `terminate`;
136
+ }
137
+ return content;
138
+ }
139
+ static decompileActionInfo(actionInfo) {
140
+ let content = "";
141
+ if (actionInfo.type == "functionCall") {
142
+ let action = actionInfo;
143
+ content += PolicyDecompiler.decompileAssignmentClauseInfo(action.actionObj);
144
+ }
145
+ else if (actionInfo.type == "varAssignment") {
146
+ let action = actionInfo;
147
+ content += `${action.actionObj.varName} = ${PolicyDecompiler.decompileAssignmentClauseInfo(action.actionObj.varValueObj)}`;
148
+ }
149
+ return content;
150
+ }
151
+ static decompileAssignmentClauseInfo(assignmentClauseInfo) {
152
+ let content = "";
153
+ if (["expOp", "number", "string", "entity", "variableChain", "functionCall", "expParen", "expSigned"].includes(assignmentClauseInfo.expType)) {
154
+ // 表达式
155
+ content += PolicyDecompiler.decompileAssignmentClauseInfo4Exp(assignmentClauseInfo);
156
+ }
157
+ else if (["expBooleanOpLogic", "expBooleanOpCollection", "expBooleanOpCompare", "expBooleanParen", "boolean"].includes(assignmentClauseInfo.expType)) {
158
+ // 布尔值
159
+ content += PolicyDecompiler.decompileAssignmentClauseInfo4ExpBoolean(assignmentClauseInfo);
160
+ }
161
+ else if (assignmentClauseInfo.expType == "expCondition") {
162
+ // 数组
163
+ let info = assignmentClauseInfo;
164
+ content += `[`;
165
+ if (info.paramList != null && info.paramList.length != 0) {
166
+ content += info.paramList.map(paramInfo => {
167
+ if (paramInfo.paramConditionObj != null) {
168
+ return `${PolicyDecompiler.decompileAssignmentClauseInfo(paramInfo.paramConditionObj)} : ${PolicyDecompiler.decompileAssignmentClauseInfo(paramInfo.paramValueObj)}`;
169
+ }
170
+ else {
171
+ return `${PolicyDecompiler.decompileAssignmentClauseInfo(paramInfo.paramValueObj)}`;
172
+ }
173
+ }).join(", ");
174
+ }
175
+ content += `]`;
176
+ }
177
+ else if (assignmentClauseInfo.expType == "expArgsGroup") {
178
+ // 对象
179
+ let info = assignmentClauseInfo;
180
+ content += `{`;
181
+ if (info.paramList != null && info.paramList.length != 0) {
182
+ content += info.paramList.map(paramInfo => {
183
+ return `"${paramInfo.paramName}":${PolicyDecompiler.decompileAssignmentClauseInfo(paramInfo.paramValueObj)}`;
184
+ }).join(", ");
185
+ }
186
+ content += `}`;
187
+ }
188
+ return content;
189
+ }
190
+ static decompileAssignmentClauseInfo4Exp(assignmentClauseInfo) {
191
+ let content = "";
192
+ switch (assignmentClauseInfo.expType) {
193
+ // 运算
194
+ case "expOp": {
195
+ let info = assignmentClauseInfo;
196
+ content += `${PolicyDecompiler.decompileAssignmentClauseInfo(info.var1)} ${info.op} ${PolicyDecompiler.decompileAssignmentClauseInfo(info.var2)}`;
197
+ break;
198
+ }
199
+ // 数字
200
+ case "number": {
201
+ let info = assignmentClauseInfo;
202
+ content += `${info.value}`;
203
+ break;
204
+ }
205
+ // 字符串
206
+ case "string": {
207
+ let info = assignmentClauseInfo;
208
+ content += `"${info.value}"`;
209
+ break;
210
+ }
211
+ // 实体
212
+ case "entity": {
213
+ let info = assignmentClauseInfo;
214
+ content += `${info.entityType}.<${info.entityName}>`;
215
+ break;
216
+ }
217
+ // 变量
218
+ case "variableChain": {
219
+ let info = assignmentClauseInfo;
220
+ content += info.content;
221
+ break;
222
+ }
223
+ // 函数
224
+ case "functionCall": {
225
+ let info = assignmentClauseInfo;
226
+ if (info.varChain != null) {
227
+ content += `${info.varChain}.`;
228
+ }
229
+ content += `${info.funcName}(${PolicyDecompiler.decompileParamList(info.paramList)})`;
230
+ break;
231
+ } // 瓜括号
232
+ case "expParen": {
233
+ let info = assignmentClauseInfo;
234
+ content += `(${PolicyDecompiler.decompileAssignmentClauseInfo(info.var1)})`;
235
+ break;
236
+ }
237
+ // 符号
238
+ case "expSigned": {
239
+ let info = assignmentClauseInfo;
240
+ content += `${info.symbol}${PolicyDecompiler.decompileAssignmentClauseInfo(info.var1)}`;
241
+ break;
242
+ }
243
+ }
244
+ return content;
245
+ }
246
+ static decompileAssignmentClauseInfo4ExpBoolean(assignmentClauseInfo) {
247
+ let content = "";
248
+ switch (assignmentClauseInfo.expType) {
249
+ case "expBooleanOpLogic": {
250
+ let info = assignmentClauseInfo;
251
+ if (info.var2 != null) {
252
+ content += `${PolicyDecompiler.decompileAssignmentClauseInfo4ExpBoolean(info.var1)} ${info.op} ${PolicyDecompiler.decompileAssignmentClauseInfo4ExpBoolean(info.var2)}`;
253
+ }
254
+ else {
255
+ content += `${info.op} ${PolicyDecompiler.decompileAssignmentClauseInfo4ExpBoolean(info.var1)}`;
256
+ }
257
+ break;
258
+ }
259
+ case "expBooleanOpCollection": {
260
+ let info = assignmentClauseInfo;
261
+ content += `${PolicyDecompiler.decompileAssignmentClauseInfo(info.var1)} ${info.op} ${PolicyDecompiler.decompileAssignmentClauseInfo(info.var2)}`;
262
+ break;
263
+ }
264
+ case "expBooleanOpCompare": {
265
+ let info = assignmentClauseInfo;
266
+ content += `${PolicyDecompiler.decompileAssignmentClauseInfo(info.var1)} ${info.op} ${PolicyDecompiler.decompileAssignmentClauseInfo(info.var2)}`;
267
+ break;
268
+ }
269
+ case "expBooleanParen": {
270
+ let info = assignmentClauseInfo;
271
+ content += `(${this.decompileAssignmentClauseInfo4ExpBoolean(info.var1)})`;
272
+ break;
273
+ }
274
+ case "boolean": {
275
+ let info = assignmentClauseInfo;
276
+ content += `${info.value}`;
277
+ break;
278
+ }
279
+ }
280
+ return content;
281
+ }
282
+ static decompileParamList(paramList) {
283
+ let content = "";
284
+ if (paramList != null && paramList.length != 0) {
285
+ content += paramList.map(paramInfo => {
286
+ if (paramInfo.paramName != null) {
287
+ return `${paramInfo.paramName} = ${PolicyDecompiler.decompileAssignmentClauseInfo(paramInfo.paramValueObj)}`;
288
+ }
289
+ else {
290
+ return `${PolicyDecompiler.decompileAssignmentClauseInfo(paramInfo.paramValueObj)}`;
291
+ }
292
+ }).join(", ");
293
+ }
294
+ return content;
295
+ }
296
+ }
297
+ exports.PolicyDecompiler = PolicyDecompiler;
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5RGVjb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9Qb2xpY3lEZWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNCQSxNQUFhLGdCQUFnQjtJQUV6QixNQUFNLENBQUMsU0FBUyxDQUFDLFVBQXNCO1FBQ25DLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN4RixJQUFJLFVBQVUsQ0FBQywwQkFBMEIsSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLDBCQUEwQixDQUFDLG9CQUFvQixJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsMEJBQTBCLENBQUMsb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hNLE9BQU8sSUFBSSxLQUFLLGdCQUFnQixDQUFDLG1DQUFtQyxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7UUFDbEgsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsa0JBQWtCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxLQUFLLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDbEcsQ0FBQztRQUNELE9BQU8sSUFBSSxLQUFLLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBRWxGLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLENBQUMsd0JBQXdCLENBQUMsZUFBZ0M7UUFDNUQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxPQUFPLGVBQWUsQ0FB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
@@ -0,0 +1,3 @@
1
+ export declare class PolicyMapper {
2
+ static compileResult4Old2New(compileResult: any): any;
3
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolicyMapper = void 0;
4
+ const fs = require("fs");
5
+ class PolicyMapper {
6
+ static compileResult4Old2New(compileResult) {
7
+ let eventConfigs = JSON.parse(fs.readFileSync("./resources/context_config/event_configs.json", "utf-8"));
8
+ let eventNameMap = new Map([["TransactionEvent", "Pay"], ["RelativeTimeEvent", "Relative"], ["TimeEvent", "Schedule"]]);
9
+ let compileResultNew = {
10
+ audienceSection: {
11
+ conditions: [],
12
+ audiences: compileResult["audiences"].map(a => {
13
+ return a["name"].toUpperCase();
14
+ })
15
+ },
16
+ contractDeclarationSection: { contractDeclarations: [] },
17
+ varDeclarationList: [],
18
+ stateMachine: []
19
+ };
20
+ for (let stateData of Object.entries(compileResult["states"])) {
21
+ let stateInfo = { stateName: stateData[0], serviceStateSection: {}, events: [] };
22
+ if (stateInfo.stateName == "initial") {
23
+ stateInfo.stateName = "Initial";
24
+ }
25
+ if (stateData[1]["serviceStates"].includes("active")) {
26
+ stateInfo.serviceStateSection["serviceState"] = "Permit";
27
+ }
28
+ if (stateData[1]["transitions"].length != 0) {
29
+ for (let transitionInfo of stateData[1]["transitions"]) {
30
+ let eventConfig = eventConfigs.find(ec => ec["name"] == eventNameMap.get(transitionInfo["name"]));
31
+ if (eventConfig == null) {
32
+ continue;
33
+ }
34
+ let eventInfo = {
35
+ type: "normal",
36
+ eventName: eventConfig["name"],
37
+ eventPath: eventConfig["path"],
38
+ eventParamList: [],
39
+ toState: transitionInfo["toState"]
40
+ };
41
+ // 参数处理
42
+ for (let paramConfig of eventConfig["paramList"]) {
43
+ let paramValue = transitionInfo["args"][paramConfig["name"]];
44
+ if (paramValue != null) {
45
+ switch (paramConfig["type"]) {
46
+ case "number":
47
+ eventInfo.eventParamList.push({
48
+ // paramName: paramConfig["name"],
49
+ paramValueObj: { expType: "number", value: Number(paramValue) }
50
+ });
51
+ break;
52
+ case "string":
53
+ eventInfo.eventParamList.push({
54
+ paramValueObj: { expType: "string", value: paramValue }
55
+ });
56
+ break;
57
+ case "boolean":
58
+ eventInfo.eventParamList.push({
59
+ paramValueObj: { expType: "boolean", value: paramValue == "true" }
60
+ });
61
+ break;
62
+ }
63
+ }
64
+ }
65
+ // 特殊事件参数处理
66
+ if (eventInfo.eventName == "Pay") {
67
+ eventInfo.eventParamList.push({ paramValueObj: { expType: "number", value: 1 } });
68
+ }
69
+ stateInfo.events.push(eventInfo);
70
+ }
71
+ }
72
+ else {
73
+ stateInfo.events.push({ type: "terminate", eventName: "terminate" });
74
+ }
75
+ compileResultNew.stateMachine.push(stateInfo);
76
+ }
77
+ return compileResultNew;
78
+ }
79
+ }
80
+ exports.PolicyMapper = PolicyMapper;
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5TWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL1BvbGljeU1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFFekIsTUFBYSxZQUFZO0lBRXJCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhO1FBQ3RDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQywrQ0FBK0MsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3pHLElBQUksWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4SCxJQUFJLGdCQUFnQixHQUFHO1lBQ25CLGVBQWUsRUFBRTtnQkFDYixVQUFVLEVBQUUsRUFBRTtnQkFDZCxTQUFTLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDMUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25DLENBQUMsQ0FBQzthQUNMO1lBQ0QsMEJBQTBCLEVBQUUsRUFBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUM7WUFDdEQsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixZQUFZLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBQ0YsS0FBSyxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxTQUFTLEdBQUcsRUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFB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
package/index.js CHANGED
@@ -20,6 +20,8 @@ const {GetPostHelper} = require("./dist/helper/GetPostHelper");
20
20
  const {ContractStateMachine} = require("./dist/state-machine/ContractStateMachine");
21
21
  const {ContractFsmHook} = require("./dist/state-machine/ContractFsmHook");
22
22
  const {DynamicFunctionExecutor} = require("./dist/function-executor/DynamicFunctionExecutor");
23
+ const {PolicyDecompiler} = require("./dist/tools/PolicyDecompiler");
24
+ const {PolicyMapper} = require("./dist/tools/PolicyMapper");
23
25
 
24
26
  exports.PolicyHelper = PolicyHelper;
25
27
  exports.FunctionHelper = FunctionHelper
@@ -37,6 +39,9 @@ exports.GetPostHelper = GetPostHelper;
37
39
  exports.ContractStateMachine = ContractStateMachine;
38
40
  exports.ContractFsmHook = ContractFsmHook;
39
41
 
42
+ exports.PolicyDecompiler = PolicyDecompiler;
43
+ exports.PolicyMapper = PolicyMapper;
44
+
40
45
  exports.compile = async function (serviceName, policyText) {
41
46
  let chars = new antlr4.InputStream(policyText);
42
47
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freelog/freelog-cg-collection",
3
- "version": "1.2.12",
3
+ "version": "1.2.13",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "antlr4": "4.8.0",