@freelog/freelog-cg-collection 1.1.7 → 1.1.8

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.
@@ -0,0 +1,8 @@
1
+ export declare abstract class ContractFsmHook {
2
+ doOnBeforeTransition(lifeCycle: any): void;
3
+ doOnLeaveState(lifeCycle: any): void;
4
+ doOnTransition(lifeCycle: any): void;
5
+ doOnEnterState(lifeCycle: any): void;
6
+ doOnAfterTransition(lifeCycle: any): void;
7
+ doOnInvalidTransition(lifeCycle: any): void;
8
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractFsmHook = void 0;
4
+ class ContractFsmHook {
5
+ // 转换前事件
6
+ doOnBeforeTransition(lifeCycle) {
7
+ }
8
+ // 状态离开事件
9
+ doOnLeaveState(lifeCycle) {
10
+ }
11
+ doOnTransition(lifeCycle) {
12
+ }
13
+ // 状态进入事件
14
+ doOnEnterState(lifeCycle) {
15
+ }
16
+ // 转换后事件
17
+ doOnAfterTransition(lifeCycle) {
18
+ }
19
+ doOnInvalidTransition(lifeCycle) {
20
+ }
21
+ }
22
+ exports.ContractFsmHook = ContractFsmHook;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RGc21Ib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlLW1hY2hpbmUvQ29udHJhY3RGc21Ib29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQXNCLGVBQWU7SUFFakMsUUFBUTtJQUNSLG9CQUFvQixDQUFDLFNBQVM7SUFDOUIsQ0FBQztJQUVELFNBQVM7SUFDVCxjQUFjLENBQUMsU0FBUztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQVM7SUFDeEIsQ0FBQztJQUVELFNBQVM7SUFDVCxjQUFjLENBQUMsU0FBUztJQUN4QixDQUFDO0lBRUQsUUFBUTtJQUNSLG1CQUFtQixDQUFDLFNBQVM7SUFDN0IsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQVM7SUFDL0IsQ0FBQztDQUNKO0FBdkJELDBDQXVCQyJ9
@@ -0,0 +1,24 @@
1
+ import * as StateMachine from 'javascript-state-machine';
2
+ import { ContractFsmHook } from "./ContractFsmHook";
3
+ export declare class ContractStateMachine {
4
+ fsm: StateMachine;
5
+ fsmHook: ContractFsmHook;
6
+ build(params: {
7
+ compileResult: any;
8
+ currentState: string;
9
+ isInitial?: boolean;
10
+ fsmHook?: ContractFsmHook;
11
+ }): Promise<void>;
12
+ generateStateMachineTransitions(compileResult: any): Promise<{
13
+ name: string;
14
+ from: string;
15
+ to: string;
16
+ }[]>;
17
+ execEvent(eventName: string): Promise<void>;
18
+ private onBeforeTransition;
19
+ private onLeaveState;
20
+ private onTransition;
21
+ private onEnterState;
22
+ private onAfterTransition;
23
+ private onInvalidTransition;
24
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractStateMachine = void 0;
4
+ const StateMachine = require("javascript-state-machine");
5
+ class ContractStateMachine {
6
+ async build(params) {
7
+ let stateMachineTransitions = await this.generateStateMachineTransitions(params.compileResult);
8
+ let stateMachineOptions = {
9
+ init: params.currentState,
10
+ transitions: stateMachineTransitions,
11
+ methods: {
12
+ onBeforeTransition: this.onBeforeTransition.bind(this),
13
+ onLeaveState: this.onLeaveState.bind(this),
14
+ onTransition: this.onTransition.bind(this),
15
+ onEnterState: this.onEnterState.bind(this),
16
+ onAfterTransition: this.onAfterTransition.bind(this),
17
+ onInvalidTransition: this.onInvalidTransition.bind(this)
18
+ }
19
+ };
20
+ this.fsm = new StateMachine(stateMachineOptions);
21
+ this.fsmHook = params.fsmHook;
22
+ }
23
+ async generateStateMachineTransitions(compileResult) {
24
+ let stateMachineTransitions = [];
25
+ for (let stateInfo of compileResult["stateMachine"]) {
26
+ for (let eventInfo of stateInfo["events"]) {
27
+ stateMachineTransitions.push({
28
+ name: eventInfo["eventId"],
29
+ from: stateInfo["stateName"],
30
+ to: eventInfo["toState"]
31
+ });
32
+ }
33
+ }
34
+ return stateMachineTransitions;
35
+ }
36
+ async execEvent(eventName) {
37
+ await this.fsm[eventName].call(this.fsm);
38
+ }
39
+ // 转换前事件
40
+ onBeforeTransition(lifeCycle) {
41
+ console.log(`ContractStateMachine - onBeforeTransition..`);
42
+ console.log(`state = [${lifeCycle.from}]`);
43
+ console.log(`transition = [${lifeCycle.transition}]`);
44
+ if (this.fsmHook != null) {
45
+ return this.fsmHook.doOnBeforeTransition(lifeCycle);
46
+ }
47
+ return true;
48
+ }
49
+ // 状态离开事件
50
+ onLeaveState(lifeCycle) {
51
+ console.log('ContractStateMachine - onLeaveState..');
52
+ console.log(`state = [${lifeCycle.from}]`);
53
+ console.log(`transition = [${lifeCycle.transition}]`);
54
+ if (this.fsmHook != null) {
55
+ return this.fsmHook.doOnLeaveState(lifeCycle);
56
+ }
57
+ return true;
58
+ }
59
+ onTransition(lifeCycle) {
60
+ console.log('ContractStateMachine - onTransition..');
61
+ console.log(`state = [${lifeCycle.from}]`);
62
+ console.log(`transition = [${lifeCycle.transition}]`);
63
+ if (this.fsmHook != null) {
64
+ return this.fsmHook.doOnTransition(lifeCycle);
65
+ }
66
+ return true;
67
+ }
68
+ // 状态进入事件
69
+ onEnterState(lifeCycle) {
70
+ console.log('ContractStateMachine - onEnterState..');
71
+ console.log(`state = [${lifeCycle.from}]`);
72
+ console.log(`transition = [${lifeCycle.transition}]`);
73
+ if (this.fsmHook != null) {
74
+ this.fsmHook.doOnEnterState(lifeCycle);
75
+ }
76
+ }
77
+ // 转换后事件
78
+ onAfterTransition(lifeCycle) {
79
+ console.log('ContractStateMachine - onAfterTransition..');
80
+ console.log(`state = [${lifeCycle.from}]`);
81
+ console.log(`transition = [${lifeCycle.transition}]`);
82
+ if (this.fsmHook != null) {
83
+ this.fsmHook.doOnAfterTransition(lifeCycle);
84
+ }
85
+ }
86
+ onInvalidTransition(lifeCycle) {
87
+ console.log('ContractStateMachine - onInvalidTransition..');
88
+ console.log(`state = [${lifeCycle.from}]`);
89
+ console.log(`transition = [${lifeCycle.transition}]`);
90
+ if (this.fsmHook != null) {
91
+ this.fsmHook.doOnInvalidTransition(lifeCycle);
92
+ }
93
+ }
94
+ }
95
+ exports.ContractStateMachine = ContractStateMachine;
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJhY3RTdGF0ZU1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGUtbWFjaGluZS9Db250cmFjdFN0YXRlTWFjaGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBeUQ7QUFHekQsTUFBYSxvQkFBb0I7SUFNN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUErRjtRQUN2RyxJQUFJLHVCQUF1QixHQUFHLE1BQU0sSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRixJQUFJLG1CQUFtQixHQUFHO1lBQ3RCLElBQUksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUN6QixXQUFXLEVBQUUsdUJBQXVCO1lBQ3BDLE9BQU8sRUFBRTtnQkFDTCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdEQsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDMUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDMUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDMUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BELG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQzNEO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxhQUFhO1FBQy9D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
package/index.js CHANGED
@@ -17,6 +17,8 @@ const {DefaultFunctionExecutor} = require("./dist/function-executor/DefaultFunct
17
17
  const {CollectionPolicyCustomDataVisitor} = require("./CollectionPolicyCustomDataVisitor");
18
18
  const {OutsideApiService} = require("./dist/service/OutsideApiService");
19
19
  const {GetPostHelper} = require("./dist/helper/GetPostHelper");
20
+ const {ContractStateMachine} = require("./dist/state-machine/ContractStateMachine");
21
+ const {ContractFsmHook} = require("./dist/state-machine/ContractFsmHook");
20
22
 
21
23
  exports.PolicyHelper = PolicyHelper;
22
24
  exports.FunctionHelper = FunctionHelper
@@ -30,6 +32,9 @@ exports.DefaultFunctionExecutor = DefaultFunctionExecutor;
30
32
  exports.OutsideApiService = OutsideApiService;
31
33
  exports.GetPostHelper = GetPostHelper;
32
34
 
35
+ exports.ContractStateMachine = ContractStateMachine;
36
+ exports.ContractFsmHook = ContractFsmHook;
37
+
33
38
  exports.compile = async function (serviceName, policyText) {
34
39
  let chars = new antlr4.InputStream(policyText);
35
40
 
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@freelog/freelog-cg-collection",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "main": "index.js",
5
5
  "dependencies": {
6
6
  "antlr4": "4.8.0",
7
7
  "decimal.js": "^10.2.1",
8
8
  "lodash": "^4.17.21",
9
- "moment": "^2.30.1"
9
+ "moment": "^2.30.1",
10
+ "javascript-state-machine": "^3.1.0"
10
11
  },
11
12
  "devDependencies": {
12
13
  "@types/chai": "^5.0.1",