@freelog/freelog-cg-collection 1.2.14 → 1.2.16
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/CollectionPolicyCustomVisitor.js +2 -1
- package/dist/config/ConfigEvent.d.ts +22 -0
- package/dist/{resources/context_config/event_configs.json → config/ConfigEvent.js} +9 -2
- package/dist/tools/PolicyMapper.js +6 -3
- package/package.json +1 -1
- package/src/config/ConfigEvent.ts +128 -0
- package/src/tools/PolicyMapper.ts +5 -1
- package/tsconfig.json +5 -4
- package/dist/function-executor/DefaultFunctionInvoke.d.ts +0 -5
- package/dist/function-executor/DefaultFunctionInvoke.js +0 -13
- package/dist/function-executor/FunctionHandle.d.ts +0 -17
- package/dist/function-executor/FunctionHandle.js +0 -44
- package/dist/function-executor/api/FunctionApiExecutor.d.ts +0 -5
- package/dist/function-executor/api/FunctionApiExecutor.js +0 -12
- package/dist/function-executor/fun/FunctionFunExecutor.d.ts +0 -9
- package/dist/function-executor/fun/FunctionFunExecutor.js +0 -30
- package/dist/function-executor/kit/FunctionKitExecutor.d.ts +0 -5
- package/dist/function-executor/kit/FunctionKitExecutor.js +0 -12
- package/dist/function-executor/query/FunctionQueryExecutor.d.ts +0 -5
- package/dist/function-executor/query/FunctionQueryExecutor.js +0 -12
- package/dist/function-executor/time/FunctionTimeExecutor.d.ts +0 -5
- package/dist/function-executor/time/FunctionTimeExecutor.js +0 -12
- package/dist/interface/DefaultFunctionInvoke.d.ts +0 -5
- package/dist/interface/DefaultFunctionInvoke.js +0 -13
- package/dist/model/contract-declaration/ContractDeclarationInfo.d.ts +0 -6
- package/dist/model/contract-declaration/ContractDeclarationInfo.js +0 -7
- package/dist/src/calculator/CalculatorFactory.d.ts +0 -17
- package/dist/src/calculator/CalculatorFactory.js +0 -40
- package/dist/src/calculator/CalculatorFactoryBuilder.d.ts +0 -4
- package/dist/src/calculator/CalculatorFactoryBuilder.js +0 -13
- package/dist/src/calculator/ExpArgsGroupCalculator.d.ts +0 -12
- package/dist/src/calculator/ExpArgsGroupCalculator.js +0 -25
- package/dist/src/calculator/ExpBooleanCalculator.d.ts +0 -13
- package/dist/src/calculator/ExpBooleanCalculator.js +0 -81
- package/dist/src/calculator/ExpCalculator.d.ts +0 -17
- package/dist/src/calculator/ExpCalculator.js +0 -56
- package/dist/src/calculator/ExpCollectionCalculator.d.ts +0 -0
- package/dist/src/calculator/ExpCollectionCalculator.js +0 -1
- package/dist/src/calculator/ExpConditionCalculator.d.ts +0 -12
- package/dist/src/calculator/ExpConditionCalculator.js +0 -34
- package/dist/src/contract-declaration-executor/DefaultContractDeclarationExecutor.d.ts +0 -8
- package/dist/src/contract-declaration-executor/DefaultContractDeclarationExecutor.js +0 -13
- package/dist/src/contract-declaration-executor/DynamicContractDeclarationExecutor.d.ts +0 -7
- package/dist/src/contract-declaration-executor/DynamicContractDeclarationExecutor.js +0 -21
- package/dist/src/contract-declaration-executor/USEContractDeclaration.d.ts +0 -4
- package/dist/src/contract-declaration-executor/USEContractDeclaration.js +0 -23
- package/dist/src/function-executor/ApiFunctionExecutor.d.ts +0 -11
- package/dist/src/function-executor/ApiFunctionExecutor.js +0 -17
- package/dist/src/function-executor/DefaultFunctionExecutor.d.ts +0 -11
- package/dist/src/function-executor/DefaultFunctionExecutor.js +0 -19
- package/dist/src/function-executor/DynamicFunctionExecutor.d.ts +0 -13
- package/dist/src/function-executor/DynamicFunctionExecutor.js +0 -58
- package/dist/src/function-executor/FunFunctionExecutor.d.ts +0 -15
- package/dist/src/function-executor/FunFunctionExecutor.js +0 -48
- package/dist/src/function-executor/KitFunctionExecutor.d.ts +0 -9
- package/dist/src/function-executor/KitFunctionExecutor.js +0 -32
- package/dist/src/function-executor/QueryFunctionExecutor.d.ts +0 -40
- package/dist/src/function-executor/QueryFunctionExecutor.js +0 -42
- package/dist/src/function-executor/TimeFunctionExecutor.d.ts +0 -8
- package/dist/src/function-executor/TimeFunctionExecutor.js +0 -51
- package/dist/src/helper/ContractDeclarationHelper.d.ts +0 -7
- package/dist/src/helper/ContractDeclarationHelper.js +0 -28
- package/dist/src/helper/ExpHelper.d.ts +0 -16
- package/dist/src/helper/ExpHelper.js +0 -86
- package/dist/src/helper/FunctionHelper.d.ts +0 -41
- package/dist/src/helper/FunctionHelper.js +0 -161
- package/dist/src/helper/GetPostHelper.d.ts +0 -5
- package/dist/src/helper/GetPostHelper.js +0 -13
- package/dist/src/helper/PolicyHelper.d.ts +0 -102
- package/dist/src/helper/PolicyHelper.js +0 -519
- package/dist/src/interface/Calculator.d.ts +0 -5
- package/dist/src/interface/Calculator.js +0 -3
- package/dist/src/interface/ConstantForApi.d.ts +0 -12
- package/dist/src/interface/ConstantForApi.js +0 -17
- package/dist/src/interface/ContractDeclarationExecute.d.ts +0 -3
- package/dist/src/interface/ContractDeclarationExecute.js +0 -3
- package/dist/src/interface/ExpHelperAware.d.ts +0 -4
- package/dist/src/interface/ExpHelperAware.js +0 -3
- package/dist/src/interface/FunctionHelperAware.d.ts +0 -4
- package/dist/src/interface/FunctionHelperAware.js +0 -3
- package/dist/src/interface/FunctionInvoke.d.ts +0 -4
- package/dist/src/interface/FunctionInvoke.js +0 -3
- package/dist/src/interface/GetPostInvoke.d.ts +0 -4
- package/dist/src/interface/GetPostInvoke.js +0 -3
- package/dist/src/interface/OutsideApiServiceAware.d.ts +0 -4
- package/dist/src/interface/OutsideApiServiceAware.js +0 -3
- package/dist/src/interface/VarContextCapable.d.ts +0 -3
- package/dist/src/interface/VarContextCapable.js +0 -3
- package/dist/src/model/AssignmentClauseInfo.d.ts +0 -3
- package/dist/src/model/AssignmentClauseInfo.js +0 -3
- package/dist/src/model/contract-declaration/VarContractDeclarationInfo.d.ts +0 -17
- package/dist/src/model/contract-declaration/VarContractDeclarationInfo.js +0 -3
- package/dist/src/model/exp/EntityInfo.d.ts +0 -6
- package/dist/src/model/exp/EntityInfo.js +0 -3
- package/dist/src/model/exp/Exp.d.ts +0 -3
- package/dist/src/model/exp/Exp.js +0 -3
- package/dist/src/model/exp/ExpAtom.d.ts +0 -3
- package/dist/src/model/exp/ExpAtom.js +0 -3
- package/dist/src/model/exp/ExpOp.d.ts +0 -7
- package/dist/src/model/exp/ExpOp.js +0 -3
- package/dist/src/model/exp/ExpParen.d.ts +0 -5
- package/dist/src/model/exp/ExpParen.js +0 -3
- package/dist/src/model/exp/ExpSigned.d.ts +0 -6
- package/dist/src/model/exp/ExpSigned.js +0 -3
- package/dist/src/model/exp/FunctionCallInfo.d.ts +0 -12
- package/dist/src/model/exp/FunctionCallInfo.js +0 -3
- package/dist/src/model/exp/NumberInfo.d.ts +0 -5
- package/dist/src/model/exp/NumberInfo.js +0 -3
- package/dist/src/model/exp/StringInfo.d.ts +0 -5
- package/dist/src/model/exp/StringInfo.js +0 -3
- package/dist/src/model/exp/VariableChainInfo.d.ts +0 -6
- package/dist/src/model/exp/VariableChainInfo.js +0 -3
- package/dist/src/model/exp-args-group/ExpArgsGroup.d.ts +0 -9
- package/dist/src/model/exp-args-group/ExpArgsGroup.js +0 -3
- package/dist/src/model/exp-boolean/BooleanInfo.d.ts +0 -5
- package/dist/src/model/exp-boolean/BooleanInfo.js +0 -3
- package/dist/src/model/exp-boolean/ExpBoolean.d.ts +0 -3
- package/dist/src/model/exp-boolean/ExpBoolean.js +0 -3
- package/dist/src/model/exp-boolean/ExpBooleanAtom.d.ts +0 -3
- package/dist/src/model/exp-boolean/ExpBooleanAtom.js +0 -3
- package/dist/src/model/exp-boolean/ExpBooleanOpCollection.d.ts +0 -7
- package/dist/src/model/exp-boolean/ExpBooleanOpCollection.js +0 -3
- package/dist/src/model/exp-boolean/ExpBooleanOpCompare.d.ts +0 -7
- package/dist/src/model/exp-boolean/ExpBooleanOpCompare.js +0 -3
- package/dist/src/model/exp-boolean/ExpBooleanOpLogic.d.ts +0 -7
- package/dist/src/model/exp-boolean/ExpBooleanOpLogic.js +0 -3
- package/dist/src/model/exp-boolean/ExpBooleanParen.d.ts +0 -5
- package/dist/src/model/exp-boolean/ExpBooleanParen.js +0 -3
- package/dist/src/model/exp-collection/ExpCollection.d.ts +0 -9
- package/dist/src/model/exp-collection/ExpCollection.js +0 -3
- package/dist/src/model/exp-condition/ExpCondition.d.ts +0 -11
- package/dist/src/model/exp-condition/ExpCondition.js +0 -3
- package/dist/src/model/policy/ActionInfo.d.ts +0 -20
- package/dist/src/model/policy/ActionInfo.js +0 -3
- package/dist/src/model/policy/ContractDeclarationInfo.d.ts +0 -7
- package/dist/src/model/policy/ContractDeclarationInfo.js +0 -7
- package/dist/src/model/policy/EventInfo.d.ts +0 -27
- package/dist/src/model/policy/EventInfo.js +0 -3
- package/dist/src/model/policy/PolicyInfo.d.ts +0 -32
- package/dist/src/model/policy/PolicyInfo.js +0 -3
- package/dist/src/model/policy/VarDeclarationInfo.d.ts +0 -10
- package/dist/src/model/policy/VarDeclarationInfo.js +0 -3
- package/dist/src/service/OutsideApiService.d.ts +0 -58
- package/dist/src/service/OutsideApiService.js +0 -62
- package/dist/src/state-machine/ContractFsmHook.d.ts +0 -17
- package/dist/src/state-machine/ContractFsmHook.js +0 -33
- package/dist/src/state-machine/ContractStateMachine.d.ts +0 -51
- package/dist/src/state-machine/ContractStateMachine.js +0 -190
- package/dist/src/tools/PolicyDecompiler.d.ts +0 -26
- package/dist/src/tools/PolicyDecompiler.js +0 -298
- package/dist/src/tools/PolicyMapper.d.ts +0 -3
- package/dist/src/tools/PolicyMapper.js +0 -83
|
@@ -1,519 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PolicyInfoResult = exports.PolicyHelper = void 0;
|
|
4
|
-
const ExpHelper_1 = require("./ExpHelper");
|
|
5
|
-
const FunctionHelper_1 = require("./FunctionHelper");
|
|
6
|
-
const ContractDeclarationHelper_1 = require("./ContractDeclarationHelper");
|
|
7
|
-
const OutsideApiService_1 = require("../service/OutsideApiService");
|
|
8
|
-
const lodash = require('lodash');
|
|
9
|
-
class PolicyHelper {
|
|
10
|
-
constructor(policyInfo) {
|
|
11
|
-
this.audienceInfo = {};
|
|
12
|
-
this.varContractDeclarationMap = new Map();
|
|
13
|
-
// 合约声明变量
|
|
14
|
-
this.varContractDeclarationList = [];
|
|
15
|
-
this.varGlobalMap = new Map();
|
|
16
|
-
// 全局变量
|
|
17
|
-
this.varGlobalList = [];
|
|
18
|
-
// 宏
|
|
19
|
-
this.varMacroList = [];
|
|
20
|
-
/*
|
|
21
|
-
* 当前状态下的信息
|
|
22
|
-
*/
|
|
23
|
-
this.currentStateInfo = {
|
|
24
|
-
currentState: PolicyHelper.noneState,
|
|
25
|
-
currentServiceState: "",
|
|
26
|
-
varLocalAtStateList: [],
|
|
27
|
-
varLocalCurrentStateList: [],
|
|
28
|
-
currentEventInfos: []
|
|
29
|
-
};
|
|
30
|
-
this.currentStateInfoTransient = {
|
|
31
|
-
varLocalCurrentEventList: [],
|
|
32
|
-
varToStateList: []
|
|
33
|
-
};
|
|
34
|
-
this.policyInfo = policyInfo;
|
|
35
|
-
this.outsideApiService = new OutsideApiService_1.OutsideApiService();
|
|
36
|
-
this.contractDeclarationHelper = new ContractDeclarationHelper_1.ContractDeclarationHelper();
|
|
37
|
-
this.contractDeclarationHelper.setOutsideApiService(this.outsideApiService);
|
|
38
|
-
this.expHelper = new ExpHelper_1.ExpHelper();
|
|
39
|
-
this.functionHelper = new FunctionHelper_1.FunctionHelper();
|
|
40
|
-
this.expHelper.setFunctionHelper(this.functionHelper);
|
|
41
|
-
this.functionHelper.setExpHelper(this.expHelper);
|
|
42
|
-
this.functionHelper.setOutsideApiService(this.outsideApiService);
|
|
43
|
-
this.functionHelper.setVarContextProxy(this);
|
|
44
|
-
}
|
|
45
|
-
// 在合约签约的时候,可签约条件和全局申明的变量是已经计算完毕的,在这里做这件事
|
|
46
|
-
async init(varContextCapable, options) {
|
|
47
|
-
this.audienceInfo["audiences"] = this.policyInfo.audienceSection.audiences;
|
|
48
|
-
await this.buildSymbolTable();
|
|
49
|
-
await this.checkConditions(varContextCapable, options);
|
|
50
|
-
await this.doInit(varContextCapable);
|
|
51
|
-
}
|
|
52
|
-
/*
|
|
53
|
-
* 建立符号表
|
|
54
|
-
*/
|
|
55
|
-
async buildSymbolTable() {
|
|
56
|
-
let contractDeclarations = this.policyInfo["contractDeclarationSection"]["contractDeclarations"];
|
|
57
|
-
for (let contractDeclaration of contractDeclarations) {
|
|
58
|
-
if (contractDeclaration["varValueObj"] != null && contractDeclaration["varValueObj"]["expType"] == "varContractDeclaration") {
|
|
59
|
-
this.varContractDeclarationMap.set(contractDeclaration["varValueObj"]["varName"], contractDeclaration["varValueObj"]);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
let varDeclarationList = this.policyInfo.varDeclarationList;
|
|
63
|
-
for (let varDeclaration of varDeclarationList) {
|
|
64
|
-
if (varDeclaration.type == "varGlobal") {
|
|
65
|
-
this.varGlobalMap.set(varDeclaration.varName, varDeclaration);
|
|
66
|
-
}
|
|
67
|
-
if (varDeclaration.type == "varMacro") {
|
|
68
|
-
this.varMacroList.push({ varName: varDeclaration.varName, varValueObj: varDeclaration.varValueObj });
|
|
69
|
-
}
|
|
70
|
-
if (varDeclaration.type == "expCustom") {
|
|
71
|
-
this.functionHelper.setExpCustom({
|
|
72
|
-
varName: varDeclaration.varName,
|
|
73
|
-
paramList: varDeclaration.paramList,
|
|
74
|
-
varValueObj: varDeclaration.varValueObj
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/*
|
|
80
|
-
* 签约条件验证,这里可能有部分初始化动作
|
|
81
|
-
* this.audienceInfo["condition"]
|
|
82
|
-
*/
|
|
83
|
-
async checkConditions(varContextCapable, options) {
|
|
84
|
-
this.audienceInfo["condition"] = {};
|
|
85
|
-
// 格式校验
|
|
86
|
-
for (let c of this.policyInfo.audienceSection.conditions) {
|
|
87
|
-
let ev = await this.getExpValue(c.paramValueObj, varContextCapable);
|
|
88
|
-
// ${echoSubject} => entity
|
|
89
|
-
if (c.paramName == "echoSubject" && ev["expType"] != "entity") {
|
|
90
|
-
throw new Error(`【echoSubject】类型错误!`);
|
|
91
|
-
}
|
|
92
|
-
// ${echoPolicyId} => string
|
|
93
|
-
if (c.paramName == "echoPolicyId" && typeof ev != "string") {
|
|
94
|
-
throw new Error(`【echoPolicyId】类型错误!`);
|
|
95
|
-
}
|
|
96
|
-
// ${labels} => string[]
|
|
97
|
-
if (c.paramName == "labels") {
|
|
98
|
-
if (!Array.isArray(ev)) {
|
|
99
|
-
throw new Error(`【labels】类型错误!`);
|
|
100
|
-
}
|
|
101
|
-
if (ev.find(elem => typeof elem != "string") != null) {
|
|
102
|
-
throw new Error(`【labels】元素错误!`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// ${exps} => boolean[]
|
|
106
|
-
if (c.paramName == "exps") {
|
|
107
|
-
if (!Array.isArray(ev)) {
|
|
108
|
-
throw new Error(`【exps】类型错误!`);
|
|
109
|
-
}
|
|
110
|
-
if (ev.find(elem => [true, false].indexOf(elem) == -1) != null) {
|
|
111
|
-
throw new Error(`【exps】元素错误!`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
this.audienceInfo["condition"][c.paramName] = ev;
|
|
115
|
-
}
|
|
116
|
-
if (options.isCheckConditions) {
|
|
117
|
-
// 值校验
|
|
118
|
-
if (this.audienceInfo["condition"]["exps"] != null) {
|
|
119
|
-
if (this.audienceInfo["condition"]["exps"].indexOf(false) != -1) {
|
|
120
|
-
throw new Error(`【exps】验证失败!`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (this.audienceInfo["condition"]["echoSubject"] != null && this.audienceInfo["condition"]["labels"] != null) {
|
|
124
|
-
let echoSubject = this.audienceInfo["condition"]["echoSubject"];
|
|
125
|
-
let contractLicensee = await this.getVarContext("contract.licensee");
|
|
126
|
-
let labels = await this.invoke("Query.EchoService.Labels", [{
|
|
127
|
-
subject: echoSubject,
|
|
128
|
-
licensee: contractLicensee
|
|
129
|
-
}]);
|
|
130
|
-
if (labels.filter(label => this.audienceInfo["condition"]["labels"].indexOf(label) != -1).length != this.audienceInfo["condition"]["labels"].length) {
|
|
131
|
-
throw new Error(`【echoSubject】【labels】验证失败!`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/*
|
|
137
|
-
* 真正的初始化
|
|
138
|
-
*/
|
|
139
|
-
async doInit(varContextCapable) {
|
|
140
|
-
let contractDeclarations = this.policyInfo["contractDeclarationSection"]["contractDeclarations"];
|
|
141
|
-
for (let contractDeclaration of contractDeclarations) {
|
|
142
|
-
if (contractDeclaration["varValueObj"] != null && contractDeclaration["varValueObj"]["expType"] == "varContractDeclaration") {
|
|
143
|
-
if (contractDeclaration["varValueObj"]["keyword"] == "USE") {
|
|
144
|
-
let value = await this.getVarObjValue(contractDeclaration["varValueObj"], varContextCapable);
|
|
145
|
-
this.setVarContractDeclaration(contractDeclaration["varValueObj"]["varName"], value);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
let varDeclarationList = this.policyInfo.varDeclarationList;
|
|
150
|
-
for (let varDeclaration of varDeclarationList) {
|
|
151
|
-
if (varDeclaration.type == "varGlobal") {
|
|
152
|
-
if (this.getVarGlobal(varDeclaration.varName) == null) {
|
|
153
|
-
let value = await this.getExpValue(varDeclaration.varValueObj, varContextCapable);
|
|
154
|
-
this.setVarGlobal(varDeclaration.varName, value);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
async snapshotRollback(policyInfoResult) {
|
|
160
|
-
this.audienceInfo = policyInfoResult.audienceInfo;
|
|
161
|
-
this.varContractDeclarationList = policyInfoResult.varContractDeclarationList;
|
|
162
|
-
this.setVarGlobalList(policyInfoResult.varGlobalList);
|
|
163
|
-
this.audienceInfo = policyInfoResult.audienceInfo;
|
|
164
|
-
this.currentStateInfo = policyInfoResult.currentStateInfo;
|
|
165
|
-
}
|
|
166
|
-
async enterState(stateName, varContextCapable) {
|
|
167
|
-
console.log('PolicyHelper - enterState..');
|
|
168
|
-
this.currentStateInfo.currentState = PolicyHelper.noneState;
|
|
169
|
-
this.currentStateInfo.currentServiceState = "";
|
|
170
|
-
this.clearVarLocalAtStateList();
|
|
171
|
-
this.clearVarLocalCurrentStateList();
|
|
172
|
-
this.currentStateInfo.currentEventInfos.length = 0;
|
|
173
|
-
let stateMachine = this.policyInfo["stateMachine"];
|
|
174
|
-
let stateInfo = stateMachine.find(sm => sm.stateName == stateName);
|
|
175
|
-
if (stateInfo == null) {
|
|
176
|
-
throw new Error(`enterState fail [PolicyHelper]... stateName = ${stateName}`);
|
|
177
|
-
}
|
|
178
|
-
this.currentStateInfo.currentState = stateName;
|
|
179
|
-
let serviceStateSection = stateInfo["serviceStateSection"];
|
|
180
|
-
this.currentStateInfo.currentServiceState = serviceStateSection["serviceState"];
|
|
181
|
-
for (let stateContextArg of stateInfo["stateContextArgs"]) {
|
|
182
|
-
let stateContextArgInfo = this.currentStateInfoTransient.varToStateList.find(v => v.varName == stateContextArg);
|
|
183
|
-
if (stateContextArgInfo == null) {
|
|
184
|
-
throw new Error(`传递参数 ${stateContextArg} 不存在`);
|
|
185
|
-
}
|
|
186
|
-
this.setVarLocalAtState(stateContextArg, stateContextArgInfo.varValue);
|
|
187
|
-
}
|
|
188
|
-
for (let assignmentInfo of stateInfo["assignments"]) {
|
|
189
|
-
let varValue = await this.getVarObjValue(assignmentInfo.varValueObj, varContextCapable);
|
|
190
|
-
this.setVarLocalCurrentState(assignmentInfo.varName, varValue);
|
|
191
|
-
}
|
|
192
|
-
for (let eventInfo of stateInfo["events"]) {
|
|
193
|
-
let varLocalAtEventList = [];
|
|
194
|
-
if (eventInfo["type"] == "normal") {
|
|
195
|
-
for (let i = 0; i < eventInfo.eventParamList.length; i++) {
|
|
196
|
-
let eventParam = eventInfo.eventParamList[i];
|
|
197
|
-
let eventParamConfig = eventInfo["config_params"][i];
|
|
198
|
-
let varName = eventParamConfig["name"];
|
|
199
|
-
let varValue = await this.getVarObjValue(eventParam.paramValueObj, varContextCapable);
|
|
200
|
-
varLocalAtEventList.push({ varName: varName, varValue: varValue });
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
this.currentStateInfo.currentEventInfos.push({
|
|
204
|
-
eventType: eventInfo.type,
|
|
205
|
-
eventCode: eventInfo.eventCode,
|
|
206
|
-
eventPath: eventInfo.eventPath,
|
|
207
|
-
eventName: eventInfo.eventName,
|
|
208
|
-
eventId: eventInfo.eventId,
|
|
209
|
-
toState: eventInfo.toState,
|
|
210
|
-
varLocalAtEventList: varLocalAtEventList
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
// 参数传递清理
|
|
214
|
-
this.currentStateInfoTransient.varToStateList.length = 0;
|
|
215
|
-
}
|
|
216
|
-
async getServiceStateCollection() {
|
|
217
|
-
let stateMachine = this.policyInfo["stateMachine"];
|
|
218
|
-
let stateInfo = stateMachine.find(sm => sm.stateName == this.currentStateInfo.currentState);
|
|
219
|
-
if (stateInfo == null) {
|
|
220
|
-
throw new Error(`enterState fail [PolicyHelper]... stateName = ${this.currentStateInfo.currentState}`);
|
|
221
|
-
}
|
|
222
|
-
let serviceStateCollection = [];
|
|
223
|
-
let serviceStateSection = stateInfo["serviceStateSection"];
|
|
224
|
-
if (serviceStateSection["serviceStateCollection"] != null) {
|
|
225
|
-
for (let ss of serviceStateSection["serviceStateCollection"]) {
|
|
226
|
-
let varValue = ss;
|
|
227
|
-
try {
|
|
228
|
-
varValue = await this.getVarContext(ss);
|
|
229
|
-
}
|
|
230
|
-
catch (e) {
|
|
231
|
-
}
|
|
232
|
-
serviceStateCollection.push({ varName: ss, varValue: varValue });
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return serviceStateCollection;
|
|
236
|
-
}
|
|
237
|
-
async execEventTail(eventId, varContextCapable) {
|
|
238
|
-
if (this.currentStateInfo.currentState == PolicyHelper.noneState) {
|
|
239
|
-
throw new Error(`不在状态机内,不能执行该事件 eventId = ${eventId}`);
|
|
240
|
-
}
|
|
241
|
-
let stateMachine = this.policyInfo["stateMachine"];
|
|
242
|
-
let stateInfo = stateMachine.find(sm => sm.stateName == this.currentStateInfo.currentState);
|
|
243
|
-
let eventInfo = stateInfo["events"].find(event => event["eventId"] == eventId);
|
|
244
|
-
if (eventInfo == null) {
|
|
245
|
-
throw new Error(`该事件 eventId = ${eventId} 在当前状态内不存在 currentState = ${this.currentStateInfo.currentState}`);
|
|
246
|
-
}
|
|
247
|
-
// 事件参数处理
|
|
248
|
-
for (let i = 0; i < eventInfo.eventParamList.length; i++) {
|
|
249
|
-
let eventParam = eventInfo.eventParamList[i];
|
|
250
|
-
let eventParamConfig = eventInfo["config_params"][i];
|
|
251
|
-
let varName = eventParamConfig["name"];
|
|
252
|
-
let varValue = await this.getVarObjValue(eventParam.paramValueObj, varContextCapable);
|
|
253
|
-
this.setVarLocalCurrentEvent(`$event.${varName}`, varValue);
|
|
254
|
-
if (eventParam.paramValueObj.expType == "expArgsGroup") {
|
|
255
|
-
for (let k in varValue) {
|
|
256
|
-
this.setVarLocalCurrentEvent(`$event.${varName}.${k}`, varValue[k]);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
// action
|
|
261
|
-
for (let actionInfo of eventInfo["actions"]) {
|
|
262
|
-
if (actionInfo["type"] == "varAssignment") {
|
|
263
|
-
let varName = actionInfo["actionObj"]["varName"];
|
|
264
|
-
let varValue = await this.getVarObjValue(actionInfo["actionObj"]["varValueObj"], varContextCapable);
|
|
265
|
-
await this.setVarContext(varName, varValue);
|
|
266
|
-
}
|
|
267
|
-
else if (actionInfo["type"] == "functionCall") {
|
|
268
|
-
await this.getExpValue(actionInfo["actionObj"], varContextCapable);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// 参数传递
|
|
272
|
-
for (let stateContextArgInfo of eventInfo["stateContextArgs"]) {
|
|
273
|
-
let varValue = await this.getVarObjValue(stateContextArgInfo.paramValueObj, varContextCapable);
|
|
274
|
-
this.currentStateInfoTransient.varToStateList.push({
|
|
275
|
-
varName: stateContextArgInfo.paramName,
|
|
276
|
-
varValue: varValue
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
// 事件参数清理
|
|
280
|
-
this.clearVarLocalCurrentEventList();
|
|
281
|
-
}
|
|
282
|
-
/*
|
|
283
|
-
* 合约声明变量
|
|
284
|
-
*/
|
|
285
|
-
setVarContractDeclaration(varName, varValue) {
|
|
286
|
-
this.getVarContractDeclarationList().push({ varName, varValue });
|
|
287
|
-
}
|
|
288
|
-
getVarContractDeclarationList() {
|
|
289
|
-
return this.varContractDeclarationList;
|
|
290
|
-
}
|
|
291
|
-
getVarContractDeclaration(varName) {
|
|
292
|
-
let varContractDeclarationListTmp = [...this.getVarContractDeclarationList()].reverse();
|
|
293
|
-
return varContractDeclarationListTmp.find((elem) => {
|
|
294
|
-
return elem.varName == varName;
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
/*
|
|
298
|
-
* 签约条件变量
|
|
299
|
-
*/
|
|
300
|
-
getVarAudienceConditionList() {
|
|
301
|
-
let varAudienceConditionList = [];
|
|
302
|
-
for (let varName in this.audienceInfo["condition"]) {
|
|
303
|
-
varAudienceConditionList.push({
|
|
304
|
-
varName: `policy.audienceCondition.${varName}`,
|
|
305
|
-
varValue: this.audienceInfo["condition"][varName]
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
return varAudienceConditionList;
|
|
309
|
-
}
|
|
310
|
-
getVarAudienceCondition(varName) {
|
|
311
|
-
let varAudienceConditionListTmp = [...this.getVarAudienceConditionList()].reverse();
|
|
312
|
-
return varAudienceConditionListTmp.find((elem) => {
|
|
313
|
-
return elem.varName == varName;
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
/*
|
|
317
|
-
* 全局变量
|
|
318
|
-
*/
|
|
319
|
-
setVarGlobal(varName, varValue) {
|
|
320
|
-
lodash.remove(this.getVarGlobalList(), v => v.varName == varName);
|
|
321
|
-
this.getVarGlobalList().push({ varName, varValue });
|
|
322
|
-
}
|
|
323
|
-
setVarGlobalList(varGlobalList) {
|
|
324
|
-
this.varGlobalList = varGlobalList;
|
|
325
|
-
}
|
|
326
|
-
getVarGlobal(varName) {
|
|
327
|
-
let varGlobalListTmp = [...this.getVarGlobalList()].reverse();
|
|
328
|
-
return varGlobalListTmp.find((elem) => {
|
|
329
|
-
return elem.varName == varName;
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
getVarGlobalList() {
|
|
333
|
-
return this.varGlobalList;
|
|
334
|
-
}
|
|
335
|
-
/*
|
|
336
|
-
* 宏
|
|
337
|
-
*/
|
|
338
|
-
getVarMacro(varName) {
|
|
339
|
-
let varMacroListTmp = [...this.varMacroList].reverse();
|
|
340
|
-
return varMacroListTmp.find((elem) => {
|
|
341
|
-
return elem.varName == varName;
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
// 状态机当前状态传递的参数
|
|
345
|
-
setVarLocalAtState(varName, varValue) {
|
|
346
|
-
lodash.remove(this.getVarLocalAtStateList(), v => v.varName == varName);
|
|
347
|
-
this.getVarLocalAtStateList().push({ varName, varValue });
|
|
348
|
-
}
|
|
349
|
-
getVarLocalAtState(varName) {
|
|
350
|
-
let varLocalAtStateListTmp = [...this.getVarLocalAtStateList()].reverse();
|
|
351
|
-
return varLocalAtStateListTmp.find((elem) => {
|
|
352
|
-
return elem.varName == varName;
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
getVarLocalAtStateList() {
|
|
356
|
-
return this.currentStateInfo.varLocalAtStateList;
|
|
357
|
-
}
|
|
358
|
-
clearVarLocalAtStateList() {
|
|
359
|
-
this.getVarLocalAtStateList().length = 0;
|
|
360
|
-
}
|
|
361
|
-
// 状态机当前状态内的局部变量
|
|
362
|
-
setVarLocalCurrentState(varName, varValue) {
|
|
363
|
-
lodash.remove(this.getVarLocalCurrentStateList(), v => v.varName == varName);
|
|
364
|
-
this.getVarLocalCurrentStateList().push({ varName, varValue });
|
|
365
|
-
}
|
|
366
|
-
getVarLocalCurrentState(varName) {
|
|
367
|
-
let varLocalCurrentStateListTmp = [...this.getVarLocalCurrentStateList()].reverse();
|
|
368
|
-
return varLocalCurrentStateListTmp.find((elem) => {
|
|
369
|
-
return elem.varName == varName;
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
getVarLocalCurrentStateList() {
|
|
373
|
-
return this.currentStateInfo.varLocalCurrentStateList;
|
|
374
|
-
}
|
|
375
|
-
clearVarLocalCurrentStateList() {
|
|
376
|
-
this.getVarLocalCurrentStateList().length = 0;
|
|
377
|
-
}
|
|
378
|
-
// 状态机当前事件内的局部变量(事件参数)
|
|
379
|
-
setVarLocalCurrentEvent(varName, varValue) {
|
|
380
|
-
lodash.remove(this.getVarLocalCurrentEventList(), v => v.varName == varName);
|
|
381
|
-
this.getVarLocalCurrentEventList().push({ varName, varValue });
|
|
382
|
-
}
|
|
383
|
-
getVarLocalCurrentEvent(varName) {
|
|
384
|
-
let varLocalCurrentEventListTmp = [...this.getVarLocalCurrentEventList()].reverse();
|
|
385
|
-
return varLocalCurrentEventListTmp.find((elem) => {
|
|
386
|
-
return elem.varName == varName;
|
|
387
|
-
});
|
|
388
|
-
}
|
|
389
|
-
getVarLocalCurrentEventList() {
|
|
390
|
-
return this.currentStateInfoTransient.varLocalCurrentEventList;
|
|
391
|
-
}
|
|
392
|
-
clearVarLocalCurrentEventList() {
|
|
393
|
-
this.getVarLocalCurrentEventList().length = 0;
|
|
394
|
-
}
|
|
395
|
-
async getPolicyInfoResult() {
|
|
396
|
-
return {
|
|
397
|
-
audienceInfo: this.audienceInfo,
|
|
398
|
-
varContractDeclarationList: this.varContractDeclarationList,
|
|
399
|
-
varGlobalList: this.varGlobalList,
|
|
400
|
-
currentStateInfo: {
|
|
401
|
-
currentState: this.currentStateInfo.currentState,
|
|
402
|
-
currentServiceState: this.currentStateInfo.currentServiceState,
|
|
403
|
-
serviceStateCollection: await this.getServiceStateCollection(),
|
|
404
|
-
varLocalAtStateList: this.currentStateInfo.varLocalAtStateList,
|
|
405
|
-
varLocalCurrentStateList: this.currentStateInfo.varLocalCurrentStateList,
|
|
406
|
-
currentEventInfos: this.currentStateInfo.currentEventInfos
|
|
407
|
-
}
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
async setVarContext(varName, varValue) {
|
|
411
|
-
let result = null;
|
|
412
|
-
result = this.getVarGlobal(varName);
|
|
413
|
-
if (result != null) {
|
|
414
|
-
this.setVarGlobal(varName, varValue);
|
|
415
|
-
return true;
|
|
416
|
-
}
|
|
417
|
-
result = this.getVarLocalCurrentState(varName);
|
|
418
|
-
if (result != null) {
|
|
419
|
-
this.setVarLocalCurrentState(varName, varValue);
|
|
420
|
-
return true;
|
|
421
|
-
}
|
|
422
|
-
return false;
|
|
423
|
-
}
|
|
424
|
-
async getVarContext(varName) {
|
|
425
|
-
let result = null;
|
|
426
|
-
result = await this.getVarContractDeclaration(varName);
|
|
427
|
-
if (result != null) {
|
|
428
|
-
return result["varValue"];
|
|
429
|
-
}
|
|
430
|
-
if (this.varContractDeclarationMap.has(varName)) {
|
|
431
|
-
let varValueObj = this.varContractDeclarationMap.get(varName);
|
|
432
|
-
if (varValueObj["keyword"] == "USE") {
|
|
433
|
-
let value = await this.getVarObjValue(varValueObj, this);
|
|
434
|
-
this.setVarContractDeclaration(varValueObj["varName"], value);
|
|
435
|
-
return value;
|
|
436
|
-
}
|
|
437
|
-
if (varValueObj["keyword"] == "DEMAND") {
|
|
438
|
-
return this.getVarObjValue(varValueObj, this);
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
result = this.getVarAudienceCondition(varName);
|
|
442
|
-
if (result != null) {
|
|
443
|
-
return result["varValue"];
|
|
444
|
-
}
|
|
445
|
-
result = this.getVarGlobal(varName);
|
|
446
|
-
if (result != null) {
|
|
447
|
-
return result["varValue"];
|
|
448
|
-
}
|
|
449
|
-
if (this.varGlobalMap.has(varName)) {
|
|
450
|
-
let varDeclaration = this.varGlobalMap.get(varName);
|
|
451
|
-
let value = await this.getExpValue(varDeclaration.varValueObj, this);
|
|
452
|
-
this.setVarGlobal(varDeclaration.varName, value);
|
|
453
|
-
return value;
|
|
454
|
-
}
|
|
455
|
-
let resultObj = this.getVarMacro(varName);
|
|
456
|
-
if (resultObj != null) {
|
|
457
|
-
return this.getExpValue(resultObj.varValueObj, this);
|
|
458
|
-
}
|
|
459
|
-
result = this.getVarLocalAtState(varName);
|
|
460
|
-
if (result != null) {
|
|
461
|
-
return result["varValue"];
|
|
462
|
-
}
|
|
463
|
-
result = this.getVarLocalCurrentState(varName);
|
|
464
|
-
if (result != null) {
|
|
465
|
-
return result["varValue"];
|
|
466
|
-
}
|
|
467
|
-
result = this.getVarLocalCurrentEvent(varName);
|
|
468
|
-
if (result != null) {
|
|
469
|
-
return result["varValue"];
|
|
470
|
-
}
|
|
471
|
-
throw new Error(`getVarContext fail [PolicyHelper]... varName = ${varName}`);
|
|
472
|
-
}
|
|
473
|
-
async getVarObjValue(varObj, varContextCapable) {
|
|
474
|
-
if (varObj["expType"] == "varContractDeclaration") {
|
|
475
|
-
return this.getContractDeclarationValue(varObj, varContextCapable);
|
|
476
|
-
}
|
|
477
|
-
else {
|
|
478
|
-
return this.getExpValue(varObj, varContextCapable);
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
async getContractDeclarationValue(varObj, varContextCapable) {
|
|
482
|
-
if (varObj["keyword"] == "USE" || varObj["keyword"] == "DEMAND") {
|
|
483
|
-
for (let condition of varObj["conditions"]) {
|
|
484
|
-
condition["paramValueData"] = await this.getExpValue(condition["paramValueObj"], varContextCapable);
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
return this.contractDeclarationHelper.execute(varObj["keyword"], varObj);
|
|
488
|
-
}
|
|
489
|
-
async getExpValue(varObj, varContextCapable) {
|
|
490
|
-
return this.expHelper.getExpValue(varObj, varContextCapable);
|
|
491
|
-
}
|
|
492
|
-
invokeEnable(functionName) {
|
|
493
|
-
throw new Error("这是个空实现,不能被调用!");
|
|
494
|
-
}
|
|
495
|
-
async invoke(functionName, args) {
|
|
496
|
-
return this.functionHelper.invoke(functionName, args);
|
|
497
|
-
}
|
|
498
|
-
addContractDeclarationExecutor(keyword, executor) {
|
|
499
|
-
this.contractDeclarationHelper.addExecutor(keyword, executor);
|
|
500
|
-
}
|
|
501
|
-
addExecutor(executorName, functionName, executor) {
|
|
502
|
-
this.functionHelper.addExecutor(executorName, functionName, executor);
|
|
503
|
-
}
|
|
504
|
-
setGetPostInvoke(getPostInvoke) {
|
|
505
|
-
this.outsideApiService.setGetPostInvoke(getPostInvoke);
|
|
506
|
-
}
|
|
507
|
-
setApiAddress(api, url) {
|
|
508
|
-
this.outsideApiService.setApiAddress(api, url);
|
|
509
|
-
}
|
|
510
|
-
setApiAddressMulti(tuples) {
|
|
511
|
-
this.outsideApiService.setApiAddressMulti(tuples);
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
exports.PolicyHelper = PolicyHelper;
|
|
515
|
-
PolicyHelper.noneState = "_none_";
|
|
516
|
-
class PolicyInfoResult {
|
|
517
|
-
}
|
|
518
|
-
exports.PolicyInfoResult = PolicyInfoResult;
|
|
519
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5SGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hlbHBlci9Qb2xpY3lIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQXNDO0FBRXRDLHFEQUFnRDtBQUtoRCwyRUFBc0U7QUFHdEUsb0VBQStEO0FBRy9ELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVqQyxNQUFhLFlBQVk7SUE2Q3JCLFlBQVksVUFBc0I7UUF6Q3hCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLDhCQUF5QixHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO1FBRXBGLFNBQVM7UUFDQywrQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFFaEMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUUvRCxPQUFPO1FBQ0csa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSTtRQUNNLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBSTVCOztXQUVHO1FBQ08scUJBQWdCLEdBQUc7WUFDekIsWUFBWSxFQUFFLFlBQVksQ0FBQyxTQUFTO1lBQ3BDLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2Qix3QkFBd0IsRUFBRSxFQUFFO1lBQzVCLGlCQUFpQixFQUFFLEVBQUU7U0FDeEIsQ0FBQztRQUVLLDhCQUF5QixHQUFHO1lBQy9CLHdCQUF3QixFQUFFLEVBQUU7WUFDNUIsY0FBYyxFQUFFLEVBQUU7U0FDckIsQ0FBQztRQVdFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHFDQUFpQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUkscURBQXlCLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGlC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
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcmZhY2UvQ2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class ConstantForApi {
|
|
2
|
-
static ResourceCountOfUpdates: string;
|
|
3
|
-
static EchoLabels: string;
|
|
4
|
-
static EchoLabelInfos: string;
|
|
5
|
-
static ContractSignCount: string;
|
|
6
|
-
static ContractInfos: string;
|
|
7
|
-
static TransactionRecordsCount: string;
|
|
8
|
-
static TransactionAmountsSum: string;
|
|
9
|
-
static FunAppendTTL: string;
|
|
10
|
-
static FunSendEvent: string;
|
|
11
|
-
static FunSetLabel: string;
|
|
12
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConstantForApi = void 0;
|
|
4
|
-
class ConstantForApi {
|
|
5
|
-
}
|
|
6
|
-
exports.ConstantForApi = ConstantForApi;
|
|
7
|
-
ConstantForApi.ResourceCountOfUpdates = "resourceCountOfUpdates";
|
|
8
|
-
ConstantForApi.EchoLabels = "echoLabels";
|
|
9
|
-
ConstantForApi.EchoLabelInfos = "echoLabelInfos";
|
|
10
|
-
ConstantForApi.ContractSignCount = "contractSignCount";
|
|
11
|
-
ConstantForApi.ContractInfos = "contractInfos";
|
|
12
|
-
ConstantForApi.TransactionRecordsCount = "transactionRecordsCount";
|
|
13
|
-
ConstantForApi.TransactionAmountsSum = "transactionAmountsSum";
|
|
14
|
-
ConstantForApi.FunAppendTTL = "funAppendTTL";
|
|
15
|
-
ConstantForApi.FunSendEvent = "funSendEvent";
|
|
16
|
-
ConstantForApi.FunSetLabel = "funSetLabel";
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRGb3JBcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlL0NvbnN0YW50Rm9yQXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsY0FBYzs7QUFBM0Isd0NBZUM7QUFkaUIscUNBQXNCLEdBQUcsd0JBQXdCLENBQUM7QUFFbEQseUJBQVUsR0FBRyxZQUFZLENBQUM7QUFDMUIsNkJBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUVsQyxnQ0FBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN4Qyw0QkFBYSxHQUFHLGVBQWUsQ0FBQztBQUVoQyxzQ0FBdUIsR0FBRyx5QkFBeUIsQ0FBQztBQUNwRCxvQ0FBcUIsR0FBRyx1QkFBdUIsQ0FBQztBQUVoRCwyQkFBWSxHQUFHLGNBQWMsQ0FBQztBQUM5QiwyQkFBWSxHQUFHLGNBQWMsQ0FBQztBQUM5QiwwQkFBVyxHQUFHLGFBQWEsQ0FBQyJ9
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3REZWNsYXJhdGlvbkV4ZWN1dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlL0NvbnRyYWN0RGVjbGFyYXRpb25FeGVjdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwSGVscGVyQXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlL0V4cEhlbHBlckF3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25IZWxwZXJBd2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlcmZhY2UvRnVuY3Rpb25IZWxwZXJBd2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25JbnZva2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlL0Z1bmN0aW9uSW52b2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|