@freelog/freelog-cg-collection 1.2.13 → 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.
- package/dist/resources/context_config/event_configs.json +126 -0
- package/dist/src/calculator/CalculatorFactory.d.ts +17 -0
- package/dist/src/calculator/CalculatorFactory.js +40 -0
- package/dist/src/calculator/CalculatorFactoryBuilder.d.ts +4 -0
- package/dist/src/calculator/CalculatorFactoryBuilder.js +13 -0
- package/dist/src/calculator/ExpArgsGroupCalculator.d.ts +12 -0
- package/dist/src/calculator/ExpArgsGroupCalculator.js +25 -0
- package/dist/src/calculator/ExpBooleanCalculator.d.ts +13 -0
- package/dist/src/calculator/ExpBooleanCalculator.js +81 -0
- package/dist/src/calculator/ExpCalculator.d.ts +17 -0
- package/dist/src/calculator/ExpCalculator.js +56 -0
- package/dist/src/calculator/ExpCollectionCalculator.d.ts +0 -0
- package/dist/src/calculator/ExpCollectionCalculator.js +1 -0
- package/dist/src/calculator/ExpConditionCalculator.d.ts +12 -0
- package/dist/src/calculator/ExpConditionCalculator.js +34 -0
- package/dist/src/contract-declaration-executor/DefaultContractDeclarationExecutor.d.ts +8 -0
- package/dist/src/contract-declaration-executor/DefaultContractDeclarationExecutor.js +13 -0
- package/dist/src/contract-declaration-executor/DynamicContractDeclarationExecutor.d.ts +7 -0
- package/dist/src/contract-declaration-executor/DynamicContractDeclarationExecutor.js +21 -0
- package/dist/src/contract-declaration-executor/USEContractDeclaration.d.ts +4 -0
- package/dist/src/contract-declaration-executor/USEContractDeclaration.js +23 -0
- package/dist/src/function-executor/ApiFunctionExecutor.d.ts +11 -0
- package/dist/src/function-executor/ApiFunctionExecutor.js +17 -0
- package/dist/src/function-executor/DefaultFunctionExecutor.d.ts +11 -0
- package/dist/src/function-executor/DefaultFunctionExecutor.js +19 -0
- package/dist/src/function-executor/DynamicFunctionExecutor.d.ts +13 -0
- package/dist/src/function-executor/DynamicFunctionExecutor.js +58 -0
- package/dist/src/function-executor/FunFunctionExecutor.d.ts +15 -0
- package/dist/src/function-executor/FunFunctionExecutor.js +48 -0
- package/dist/src/function-executor/KitFunctionExecutor.d.ts +9 -0
- package/dist/src/function-executor/KitFunctionExecutor.js +32 -0
- package/dist/src/function-executor/QueryFunctionExecutor.d.ts +40 -0
- package/dist/src/function-executor/QueryFunctionExecutor.js +42 -0
- package/dist/src/function-executor/TimeFunctionExecutor.d.ts +8 -0
- package/dist/src/function-executor/TimeFunctionExecutor.js +51 -0
- package/dist/src/helper/ContractDeclarationHelper.d.ts +7 -0
- package/dist/src/helper/ContractDeclarationHelper.js +28 -0
- package/dist/src/helper/ExpHelper.d.ts +16 -0
- package/dist/src/helper/ExpHelper.js +86 -0
- package/dist/src/helper/FunctionHelper.d.ts +41 -0
- package/dist/src/helper/FunctionHelper.js +161 -0
- package/dist/src/helper/GetPostHelper.d.ts +5 -0
- package/dist/src/helper/GetPostHelper.js +13 -0
- package/dist/src/helper/PolicyHelper.d.ts +102 -0
- package/dist/src/helper/PolicyHelper.js +519 -0
- package/dist/src/interface/Calculator.d.ts +5 -0
- package/dist/src/interface/Calculator.js +3 -0
- package/dist/src/interface/ConstantForApi.d.ts +12 -0
- package/dist/src/interface/ConstantForApi.js +17 -0
- package/dist/src/interface/ContractDeclarationExecute.d.ts +3 -0
- package/dist/src/interface/ContractDeclarationExecute.js +3 -0
- package/dist/src/interface/ExpHelperAware.d.ts +4 -0
- package/dist/src/interface/ExpHelperAware.js +3 -0
- package/dist/src/interface/FunctionHelperAware.d.ts +4 -0
- package/dist/src/interface/FunctionHelperAware.js +3 -0
- package/dist/src/interface/FunctionInvoke.d.ts +4 -0
- package/dist/src/interface/FunctionInvoke.js +3 -0
- package/dist/src/interface/GetPostInvoke.d.ts +4 -0
- package/dist/src/interface/GetPostInvoke.js +3 -0
- package/dist/src/interface/OutsideApiServiceAware.d.ts +4 -0
- package/dist/src/interface/OutsideApiServiceAware.js +3 -0
- package/dist/src/interface/VarContextCapable.d.ts +3 -0
- package/dist/src/interface/VarContextCapable.js +3 -0
- package/dist/src/model/AssignmentClauseInfo.d.ts +3 -0
- package/dist/src/model/AssignmentClauseInfo.js +3 -0
- package/dist/src/model/contract-declaration/VarContractDeclarationInfo.d.ts +17 -0
- package/dist/src/model/contract-declaration/VarContractDeclarationInfo.js +3 -0
- package/dist/src/model/exp/EntityInfo.d.ts +6 -0
- package/dist/src/model/exp/EntityInfo.js +3 -0
- package/dist/src/model/exp/Exp.d.ts +3 -0
- package/dist/src/model/exp/Exp.js +3 -0
- package/dist/src/model/exp/ExpAtom.d.ts +3 -0
- package/dist/src/model/exp/ExpAtom.js +3 -0
- package/dist/src/model/exp/ExpOp.d.ts +7 -0
- package/dist/src/model/exp/ExpOp.js +3 -0
- package/dist/src/model/exp/ExpParen.d.ts +5 -0
- package/dist/src/model/exp/ExpParen.js +3 -0
- package/dist/src/model/exp/ExpSigned.d.ts +6 -0
- package/dist/src/model/exp/ExpSigned.js +3 -0
- package/dist/src/model/exp/FunctionCallInfo.d.ts +12 -0
- package/dist/src/model/exp/FunctionCallInfo.js +3 -0
- package/dist/src/model/exp/NumberInfo.d.ts +5 -0
- package/dist/src/model/exp/NumberInfo.js +3 -0
- package/dist/src/model/exp/StringInfo.d.ts +5 -0
- package/dist/src/model/exp/StringInfo.js +3 -0
- package/dist/src/model/exp/VariableChainInfo.d.ts +6 -0
- package/dist/src/model/exp/VariableChainInfo.js +3 -0
- package/dist/src/model/exp-args-group/ExpArgsGroup.d.ts +9 -0
- package/dist/src/model/exp-args-group/ExpArgsGroup.js +3 -0
- package/dist/src/model/exp-boolean/BooleanInfo.d.ts +5 -0
- package/dist/src/model/exp-boolean/BooleanInfo.js +3 -0
- package/dist/src/model/exp-boolean/ExpBoolean.d.ts +3 -0
- package/dist/src/model/exp-boolean/ExpBoolean.js +3 -0
- package/dist/src/model/exp-boolean/ExpBooleanAtom.d.ts +3 -0
- package/dist/src/model/exp-boolean/ExpBooleanAtom.js +3 -0
- package/dist/src/model/exp-boolean/ExpBooleanOpCollection.d.ts +7 -0
- package/dist/src/model/exp-boolean/ExpBooleanOpCollection.js +3 -0
- package/dist/src/model/exp-boolean/ExpBooleanOpCompare.d.ts +7 -0
- package/dist/src/model/exp-boolean/ExpBooleanOpCompare.js +3 -0
- package/dist/src/model/exp-boolean/ExpBooleanOpLogic.d.ts +7 -0
- package/dist/src/model/exp-boolean/ExpBooleanOpLogic.js +3 -0
- package/dist/src/model/exp-boolean/ExpBooleanParen.d.ts +5 -0
- package/dist/src/model/exp-boolean/ExpBooleanParen.js +3 -0
- package/dist/src/model/exp-collection/ExpCollection.d.ts +9 -0
- package/dist/src/model/exp-collection/ExpCollection.js +3 -0
- package/dist/src/model/exp-condition/ExpCondition.d.ts +11 -0
- package/dist/src/model/exp-condition/ExpCondition.js +3 -0
- package/dist/src/model/policy/ActionInfo.d.ts +20 -0
- package/dist/src/model/policy/ActionInfo.js +3 -0
- package/dist/src/model/policy/ContractDeclarationInfo.d.ts +7 -0
- package/dist/src/model/policy/ContractDeclarationInfo.js +7 -0
- package/dist/src/model/policy/EventInfo.d.ts +27 -0
- package/dist/src/model/policy/EventInfo.js +3 -0
- package/dist/src/model/policy/PolicyInfo.d.ts +32 -0
- package/dist/src/model/policy/PolicyInfo.js +3 -0
- package/dist/src/model/policy/VarDeclarationInfo.d.ts +10 -0
- package/dist/src/model/policy/VarDeclarationInfo.js +3 -0
- package/dist/src/service/OutsideApiService.d.ts +58 -0
- package/dist/src/service/OutsideApiService.js +62 -0
- package/dist/src/state-machine/ContractFsmHook.d.ts +17 -0
- package/dist/src/state-machine/ContractFsmHook.js +33 -0
- package/dist/src/state-machine/ContractStateMachine.d.ts +51 -0
- package/dist/src/state-machine/ContractStateMachine.js +190 -0
- package/dist/src/tools/PolicyDecompiler.d.ts +26 -0
- package/dist/src/tools/PolicyDecompiler.js +298 -0
- package/dist/src/tools/PolicyMapper.d.ts +3 -0
- package/dist/src/tools/PolicyMapper.js +83 -0
- package/package.json +1 -1
- package/src/tools/PolicyMapper.ts +1 -2
- package/test/library/MomentTest.test.ts +12 -0
- 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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
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import eventConfigs from "../../resources/context_config/event_configs.json";
|
|
2
2
|
|
|
3
3
|
export class PolicyMapper {
|
|
4
4
|
|
|
5
5
|
static compileResult4Old2New(compileResult): any {
|
|
6
|
-
let eventConfigs = JSON.parse(fs.readFileSync("./resources/context_config/event_configs.json", "utf-8"));
|
|
7
6
|
let eventNameMap = new Map([["TransactionEvent", "Pay"], ["RelativeTimeEvent", "Relative"], ["TimeEvent", "Schedule"]]);
|
|
8
7
|
|
|
9
8
|
let compileResultNew = {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import moment = require("moment/moment");
|
|
2
|
+
|
|
3
|
+
it("unixTime", async () => {
|
|
4
|
+
let elapsed = 2;
|
|
5
|
+
|
|
6
|
+
let nowTimestamp = moment().unix();
|
|
7
|
+
let secondsPerCycle = 4 * 60 * 60;
|
|
8
|
+
let lastCycleTimestamp = Math.floor(nowTimestamp / secondsPerCycle) * secondsPerCycle;
|
|
9
|
+
let targetTimestamp = lastCycleTimestamp + elapsed * secondsPerCycle;
|
|
10
|
+
console.log(targetTimestamp);
|
|
11
|
+
console.log(moment(targetTimestamp * 1000).unix());
|
|
12
|
+
});
|