@freelog/freelog-cg-collection 1.2.12 → 1.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/model/exp/FunctionCallInfo.d.ts +5 -7
  2. package/dist/model/exp-condition/ExpCondition.d.ts +6 -8
  3. package/dist/model/policy/ActionInfo.d.ts +1 -0
  4. package/dist/model/policy/PolicyInfo.d.ts +25 -26
  5. package/dist/resources/context_config/event_configs.json +126 -0
  6. package/dist/src/calculator/CalculatorFactory.d.ts +17 -0
  7. package/dist/src/calculator/CalculatorFactory.js +40 -0
  8. package/dist/src/calculator/CalculatorFactoryBuilder.d.ts +4 -0
  9. package/dist/src/calculator/CalculatorFactoryBuilder.js +13 -0
  10. package/dist/src/calculator/ExpArgsGroupCalculator.d.ts +12 -0
  11. package/dist/src/calculator/ExpArgsGroupCalculator.js +25 -0
  12. package/dist/src/calculator/ExpBooleanCalculator.d.ts +13 -0
  13. package/dist/src/calculator/ExpBooleanCalculator.js +81 -0
  14. package/dist/src/calculator/ExpCalculator.d.ts +17 -0
  15. package/dist/src/calculator/ExpCalculator.js +56 -0
  16. package/dist/src/calculator/ExpCollectionCalculator.d.ts +0 -0
  17. package/dist/src/calculator/ExpCollectionCalculator.js +1 -0
  18. package/dist/src/calculator/ExpConditionCalculator.d.ts +12 -0
  19. package/dist/src/calculator/ExpConditionCalculator.js +34 -0
  20. package/dist/src/contract-declaration-executor/DefaultContractDeclarationExecutor.d.ts +8 -0
  21. package/dist/src/contract-declaration-executor/DefaultContractDeclarationExecutor.js +13 -0
  22. package/dist/src/contract-declaration-executor/DynamicContractDeclarationExecutor.d.ts +7 -0
  23. package/dist/src/contract-declaration-executor/DynamicContractDeclarationExecutor.js +21 -0
  24. package/dist/src/contract-declaration-executor/USEContractDeclaration.d.ts +4 -0
  25. package/dist/src/contract-declaration-executor/USEContractDeclaration.js +23 -0
  26. package/dist/src/function-executor/ApiFunctionExecutor.d.ts +11 -0
  27. package/dist/src/function-executor/ApiFunctionExecutor.js +17 -0
  28. package/dist/src/function-executor/DefaultFunctionExecutor.d.ts +11 -0
  29. package/dist/src/function-executor/DefaultFunctionExecutor.js +19 -0
  30. package/dist/src/function-executor/DynamicFunctionExecutor.d.ts +13 -0
  31. package/dist/src/function-executor/DynamicFunctionExecutor.js +58 -0
  32. package/dist/src/function-executor/FunFunctionExecutor.d.ts +15 -0
  33. package/dist/src/function-executor/FunFunctionExecutor.js +48 -0
  34. package/dist/src/function-executor/KitFunctionExecutor.d.ts +9 -0
  35. package/dist/src/function-executor/KitFunctionExecutor.js +32 -0
  36. package/dist/src/function-executor/QueryFunctionExecutor.d.ts +40 -0
  37. package/dist/src/function-executor/QueryFunctionExecutor.js +42 -0
  38. package/dist/src/function-executor/TimeFunctionExecutor.d.ts +8 -0
  39. package/dist/src/function-executor/TimeFunctionExecutor.js +51 -0
  40. package/dist/src/helper/ContractDeclarationHelper.d.ts +7 -0
  41. package/dist/src/helper/ContractDeclarationHelper.js +28 -0
  42. package/dist/src/helper/ExpHelper.d.ts +16 -0
  43. package/dist/src/helper/ExpHelper.js +86 -0
  44. package/dist/src/helper/FunctionHelper.d.ts +41 -0
  45. package/dist/src/helper/FunctionHelper.js +161 -0
  46. package/dist/src/helper/GetPostHelper.d.ts +5 -0
  47. package/dist/src/helper/GetPostHelper.js +13 -0
  48. package/dist/src/helper/PolicyHelper.d.ts +102 -0
  49. package/dist/src/helper/PolicyHelper.js +519 -0
  50. package/dist/src/interface/Calculator.d.ts +5 -0
  51. package/dist/src/interface/Calculator.js +3 -0
  52. package/dist/src/interface/ConstantForApi.d.ts +12 -0
  53. package/dist/src/interface/ConstantForApi.js +17 -0
  54. package/dist/src/interface/ContractDeclarationExecute.d.ts +3 -0
  55. package/dist/src/interface/ContractDeclarationExecute.js +3 -0
  56. package/dist/src/interface/ExpHelperAware.d.ts +4 -0
  57. package/dist/src/interface/ExpHelperAware.js +3 -0
  58. package/dist/src/interface/FunctionHelperAware.d.ts +4 -0
  59. package/dist/src/interface/FunctionHelperAware.js +3 -0
  60. package/dist/src/interface/FunctionInvoke.d.ts +4 -0
  61. package/dist/src/interface/FunctionInvoke.js +3 -0
  62. package/dist/src/interface/GetPostInvoke.d.ts +4 -0
  63. package/dist/src/interface/GetPostInvoke.js +3 -0
  64. package/dist/src/interface/OutsideApiServiceAware.d.ts +4 -0
  65. package/dist/src/interface/OutsideApiServiceAware.js +3 -0
  66. package/dist/src/interface/VarContextCapable.d.ts +3 -0
  67. package/dist/src/interface/VarContextCapable.js +3 -0
  68. package/dist/src/model/AssignmentClauseInfo.d.ts +3 -0
  69. package/dist/src/model/AssignmentClauseInfo.js +3 -0
  70. package/dist/src/model/contract-declaration/VarContractDeclarationInfo.d.ts +17 -0
  71. package/dist/src/model/contract-declaration/VarContractDeclarationInfo.js +3 -0
  72. package/dist/src/model/exp/EntityInfo.d.ts +6 -0
  73. package/dist/src/model/exp/EntityInfo.js +3 -0
  74. package/dist/src/model/exp/Exp.d.ts +3 -0
  75. package/dist/src/model/exp/Exp.js +3 -0
  76. package/dist/src/model/exp/ExpAtom.d.ts +3 -0
  77. package/dist/src/model/exp/ExpAtom.js +3 -0
  78. package/dist/src/model/exp/ExpOp.d.ts +7 -0
  79. package/dist/src/model/exp/ExpOp.js +3 -0
  80. package/dist/src/model/exp/ExpParen.d.ts +5 -0
  81. package/dist/src/model/exp/ExpParen.js +3 -0
  82. package/dist/src/model/exp/ExpSigned.d.ts +6 -0
  83. package/dist/src/model/exp/ExpSigned.js +3 -0
  84. package/dist/src/model/exp/FunctionCallInfo.d.ts +12 -0
  85. package/dist/src/model/exp/FunctionCallInfo.js +3 -0
  86. package/dist/src/model/exp/NumberInfo.d.ts +5 -0
  87. package/dist/src/model/exp/NumberInfo.js +3 -0
  88. package/dist/src/model/exp/StringInfo.d.ts +5 -0
  89. package/dist/src/model/exp/StringInfo.js +3 -0
  90. package/dist/src/model/exp/VariableChainInfo.d.ts +6 -0
  91. package/dist/src/model/exp/VariableChainInfo.js +3 -0
  92. package/dist/src/model/exp-args-group/ExpArgsGroup.d.ts +9 -0
  93. package/dist/src/model/exp-args-group/ExpArgsGroup.js +3 -0
  94. package/dist/src/model/exp-boolean/BooleanInfo.d.ts +5 -0
  95. package/dist/src/model/exp-boolean/BooleanInfo.js +3 -0
  96. package/dist/src/model/exp-boolean/ExpBoolean.d.ts +3 -0
  97. package/dist/src/model/exp-boolean/ExpBoolean.js +3 -0
  98. package/dist/src/model/exp-boolean/ExpBooleanAtom.d.ts +3 -0
  99. package/dist/src/model/exp-boolean/ExpBooleanAtom.js +3 -0
  100. package/dist/src/model/exp-boolean/ExpBooleanOpCollection.d.ts +7 -0
  101. package/dist/src/model/exp-boolean/ExpBooleanOpCollection.js +3 -0
  102. package/dist/src/model/exp-boolean/ExpBooleanOpCompare.d.ts +7 -0
  103. package/dist/src/model/exp-boolean/ExpBooleanOpCompare.js +3 -0
  104. package/dist/src/model/exp-boolean/ExpBooleanOpLogic.d.ts +7 -0
  105. package/dist/src/model/exp-boolean/ExpBooleanOpLogic.js +3 -0
  106. package/dist/src/model/exp-boolean/ExpBooleanParen.d.ts +5 -0
  107. package/dist/src/model/exp-boolean/ExpBooleanParen.js +3 -0
  108. package/dist/src/model/exp-collection/ExpCollection.d.ts +9 -0
  109. package/dist/src/model/exp-collection/ExpCollection.js +3 -0
  110. package/dist/src/model/exp-condition/ExpCondition.d.ts +11 -0
  111. package/dist/src/model/exp-condition/ExpCondition.js +3 -0
  112. package/dist/src/model/policy/ActionInfo.d.ts +20 -0
  113. package/dist/src/model/policy/ActionInfo.js +3 -0
  114. package/dist/src/model/policy/ContractDeclarationInfo.d.ts +7 -0
  115. package/dist/src/model/policy/ContractDeclarationInfo.js +7 -0
  116. package/dist/src/model/policy/EventInfo.d.ts +27 -0
  117. package/dist/src/model/policy/EventInfo.js +3 -0
  118. package/dist/src/model/policy/PolicyInfo.d.ts +32 -0
  119. package/dist/src/model/policy/PolicyInfo.js +3 -0
  120. package/dist/src/model/policy/VarDeclarationInfo.d.ts +10 -0
  121. package/dist/src/model/policy/VarDeclarationInfo.js +3 -0
  122. package/dist/src/service/OutsideApiService.d.ts +58 -0
  123. package/dist/src/service/OutsideApiService.js +62 -0
  124. package/dist/src/state-machine/ContractFsmHook.d.ts +17 -0
  125. package/dist/src/state-machine/ContractFsmHook.js +33 -0
  126. package/dist/src/state-machine/ContractStateMachine.d.ts +51 -0
  127. package/dist/src/state-machine/ContractStateMachine.js +190 -0
  128. package/dist/src/tools/PolicyDecompiler.d.ts +26 -0
  129. package/dist/src/tools/PolicyDecompiler.js +298 -0
  130. package/dist/src/tools/PolicyMapper.d.ts +3 -0
  131. package/dist/src/tools/PolicyMapper.js +83 -0
  132. package/dist/tools/PolicyDecompiler.d.ts +26 -0
  133. package/dist/tools/PolicyDecompiler.js +298 -0
  134. package/dist/tools/PolicyMapper.d.ts +3 -0
  135. package/dist/tools/PolicyMapper.js +81 -0
  136. package/index.js +5 -0
  137. package/package.json +1 -1
  138. package/resources/zhaojn.json +1947 -7
  139. package/resources/zhaojn.sc +58 -2
  140. package/resources/zhaojn2.json +61 -113
  141. package/resources/zhaojn3.json +76 -0
  142. package/src/model/exp/FunctionCallInfo.ts +2 -2
  143. package/src/model/exp-condition/ExpCondition.ts +2 -2
  144. package/src/model/policy/ActionInfo.ts +1 -1
  145. package/src/model/policy/PolicyInfo.ts +28 -22
  146. package/src/tools/PolicyDecompiler.ts +329 -0
  147. package/src/tools/PolicyMapper.ts +80 -0
  148. package/test/library/MomentTest.test.ts +12 -0
  149. package/test/tools/PolicyDecompilerTest.test.ts +9 -0
  150. package/test/tools/PolicyMapperTest.test.ts +15 -0
  151. package/tsconfig.json +2 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PolicyMapper = void 0;
7
+ const event_configs_json_1 = __importDefault(require("../../resources/context_config/event_configs.json"));
8
+ class PolicyMapper {
9
+ static compileResult4Old2New(compileResult) {
10
+ let eventNameMap = new Map([["TransactionEvent", "Pay"], ["RelativeTimeEvent", "Relative"], ["TimeEvent", "Schedule"]]);
11
+ let compileResultNew = {
12
+ audienceSection: {
13
+ conditions: [],
14
+ audiences: compileResult["audiences"].map(a => {
15
+ return a["name"].toUpperCase();
16
+ })
17
+ },
18
+ contractDeclarationSection: { contractDeclarations: [] },
19
+ varDeclarationList: [],
20
+ stateMachine: []
21
+ };
22
+ for (let stateData of Object.entries(compileResult["states"])) {
23
+ let stateInfo = { stateName: stateData[0], serviceStateSection: {}, events: [] };
24
+ if (stateInfo.stateName == "initial") {
25
+ stateInfo.stateName = "Initial";
26
+ }
27
+ if (stateData[1]["serviceStates"].includes("active")) {
28
+ stateInfo.serviceStateSection["serviceState"] = "Permit";
29
+ }
30
+ if (stateData[1]["transitions"].length != 0) {
31
+ for (let transitionInfo of stateData[1]["transitions"]) {
32
+ let eventConfig = event_configs_json_1.default.find(ec => ec["name"] == eventNameMap.get(transitionInfo["name"]));
33
+ if (eventConfig == null) {
34
+ continue;
35
+ }
36
+ let eventInfo = {
37
+ type: "normal",
38
+ eventName: eventConfig["name"],
39
+ eventPath: eventConfig["path"],
40
+ eventParamList: [],
41
+ toState: transitionInfo["toState"]
42
+ };
43
+ // 参数处理
44
+ for (let paramConfig of eventConfig["paramList"]) {
45
+ let paramValue = transitionInfo["args"][paramConfig["name"]];
46
+ if (paramValue != null) {
47
+ switch (paramConfig["type"]) {
48
+ case "number":
49
+ eventInfo.eventParamList.push({
50
+ // paramName: paramConfig["name"],
51
+ paramValueObj: { expType: "number", value: Number(paramValue) }
52
+ });
53
+ break;
54
+ case "string":
55
+ eventInfo.eventParamList.push({
56
+ paramValueObj: { expType: "string", value: paramValue }
57
+ });
58
+ break;
59
+ case "boolean":
60
+ eventInfo.eventParamList.push({
61
+ paramValueObj: { expType: "boolean", value: paramValue == "true" }
62
+ });
63
+ break;
64
+ }
65
+ }
66
+ }
67
+ // 特殊事件参数处理
68
+ if (eventInfo.eventName == "Pay") {
69
+ eventInfo.eventParamList.push({ paramValueObj: { expType: "number", value: 1 } });
70
+ }
71
+ stateInfo.events.push(eventInfo);
72
+ }
73
+ }
74
+ else {
75
+ stateInfo.events.push({ type: "terminate", eventName: "terminate" });
76
+ }
77
+ compileResultNew.stateMachine.push(stateInfo);
78
+ }
79
+ return compileResultNew;
80
+ }
81
+ }
82
+ exports.PolicyMapper = PolicyMapper;
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5TWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL1BvbGljeU1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyR0FBNkU7QUFFN0UsTUFBYSxZQUFZO0lBRXJCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhO1FBQ3RDLElBQUksWUFBWSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4SCxJQUFJLGdCQUFnQixHQUFHO1lBQ25CLGVBQWUsRUFBRTtnQkFDYixVQUFVLEVBQUUsRUFBRTtnQkFDZCxTQUFTLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDMUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ25DLENBQUMsQ0FBQzthQUNMO1lBQ0QsMEJBQTBCLEVBQUUsRUFBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUM7WUFDdEQsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixZQUFZLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBQ0YsS0FBSyxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxTQUFTLEdBQUcsRUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFDLENBQUM7WUFDL0UsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxTQUFTLENBQUMsU0FBUyxHQUFHLFNB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
@@ -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.14",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "antlr4": "4.8.0",