@statewalker/fsm 0.15.2 → 0.20.0
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/CHANGELOG.md +59 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.js +337 -260
- package/package.json +24 -21
- package/src/FsmBaseClass.ts +52 -0
- package/src/FsmProcess.ts +184 -0
- package/src/FsmState.ts +87 -0
- package/src/FsmStateConfig.ts +13 -0
- package/src/FsmStateDescriptor.ts +47 -0
- package/src/context/handlers.ts +30 -0
- package/src/context/index.ts +3 -0
- package/src/context/printer.ts +48 -0
- package/src/context/tracer.ts +19 -0
- package/src/index.ts +5 -0
- package/src/utils/bindMethods.ts +7 -0
- package/dist/index-umd.js +0 -311
- package/dist/index-umd.min.js +0 -2
- package/dist/index.min.js +0 -2
- package/index.js +0 -1
- package/src/KEYS.js +0 -7
- package/src/buildStateDescriptor.js +0 -34
- package/src/checkProcessDescriptor.js +0 -54
- package/src/getAllStateKeys.js +0 -27
- package/src/getAllTransitions.js +0 -33
- package/src/getStateDescriptor.js +0 -8
- package/src/getTargetStateKey.js +0 -19
- package/src/index.js +0 -10
- package/src/newAsyncProcess.js +0 -47
- package/src/newProcessInstance.js +0 -44
- package/src/newSyncProcess.js +0 -27
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# @statewalker/fsm
|
|
2
|
+
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Fix logical bug in transitions loading
|
|
8
|
+
|
|
9
|
+
## 0.15.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Update rollup and dependencies
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
- @statewalker/tree@0.10.2
|
|
16
|
+
|
|
17
|
+
## 0.15.1
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Normalize package.json files
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
- @statewalker/tree@0.10.1
|
|
24
|
+
|
|
25
|
+
## 0.15.0
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- Migrage the "initAsyncProcess" method from the @statewalker/fsm to @statewalker/fsm-process package and add process utility methods
|
|
30
|
+
|
|
31
|
+
## 0.14.0
|
|
32
|
+
|
|
33
|
+
### Minor Changes
|
|
34
|
+
|
|
35
|
+
- Update exports
|
|
36
|
+
|
|
37
|
+
## 0.13.0
|
|
38
|
+
|
|
39
|
+
### Minor Changes
|
|
40
|
+
|
|
41
|
+
- Fix exports
|
|
42
|
+
|
|
43
|
+
## 0.12.0
|
|
44
|
+
|
|
45
|
+
### Minor Changes
|
|
46
|
+
|
|
47
|
+
- Update version
|
|
48
|
+
|
|
49
|
+
## 0.11.0
|
|
50
|
+
|
|
51
|
+
### Minor Changes
|
|
52
|
+
|
|
53
|
+
- Add initialization function for async processes
|
|
54
|
+
|
|
55
|
+
## 0.10.1
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- Migrate the @statewalker/fsm project from the @statewalker/statewalker monorepo
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
declare class FsmBaseClass {
|
|
2
|
+
handlers: Record<string, Function[]>;
|
|
3
|
+
data: Record<string, unknown>;
|
|
4
|
+
constructor();
|
|
5
|
+
setData<T>(key: string, value: T): this;
|
|
6
|
+
getData<T>(key: string): T | undefined;
|
|
7
|
+
_addHandler(type: string, handler: Function, direct?: boolean): () => void;
|
|
8
|
+
_removeHandler(type: string, handler: Function): void;
|
|
9
|
+
_runHandlerSync(type: string, ...args: unknown[]): any[];
|
|
10
|
+
_runHandler(type: string, ...args: unknown[]): Promise<void>;
|
|
11
|
+
_handleError(error: Error | unknown): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare const STATE_ANY = "*";
|
|
15
|
+
declare const STATE_INITIAL = "";
|
|
16
|
+
declare const STATE_FINAL = "";
|
|
17
|
+
declare const EVENT_ANY = "*";
|
|
18
|
+
declare const EVENT_EMPTY = "";
|
|
19
|
+
type FsmStateConfig = {
|
|
20
|
+
key: string;
|
|
21
|
+
transitions: [string, string, string][];
|
|
22
|
+
states?: FsmStateConfig[];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
declare class FsmStateDescriptor {
|
|
26
|
+
transitions: Record<string, Record<string, string>>;
|
|
27
|
+
states: Record<string, FsmStateDescriptor>;
|
|
28
|
+
static build(config: FsmStateConfig): FsmStateDescriptor;
|
|
29
|
+
getTargetStateKey(stateKey: string, eventKey: string): string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type FsmStateDump = Record<string, any> & {
|
|
33
|
+
key: string;
|
|
34
|
+
data: Record<string, unknown>;
|
|
35
|
+
};
|
|
36
|
+
type FsmStateHandler = (state: FsmState, ...args: unknown[]) => void | Promise<void>;
|
|
37
|
+
type FsmStateSyncHandler = (state: FsmState, ...args: unknown[]) => void;
|
|
38
|
+
type FsmStateDumpHandler = (state: FsmState, dump: FsmStateDump) => void | Promise<void>;
|
|
39
|
+
type FsmStateErrorHandler = (state: FsmState, error: any) => void | Promise<void>;
|
|
40
|
+
declare class FsmState extends FsmBaseClass {
|
|
41
|
+
process: FsmProcess;
|
|
42
|
+
key: string;
|
|
43
|
+
parent?: FsmState;
|
|
44
|
+
descriptor?: FsmStateDescriptor;
|
|
45
|
+
constructor(process: FsmProcess, parent: FsmState | undefined, key: string, descriptor?: FsmStateDescriptor);
|
|
46
|
+
onEnter(handler: FsmStateHandler): () => void;
|
|
47
|
+
onExit(handler: FsmStateHandler): () => void;
|
|
48
|
+
onStateError(handler: FsmStateErrorHandler): () => void;
|
|
49
|
+
dump(handler: FsmStateDumpHandler): () => void;
|
|
50
|
+
restore(handler: FsmStateDumpHandler): () => void;
|
|
51
|
+
getData<T>(key: string, recursive?: boolean): T | undefined;
|
|
52
|
+
useData<T>(key: string): (((recursive?: boolean) => T | undefined) | ((value: T) => this))[];
|
|
53
|
+
_handleError(error: Error | unknown): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
declare const STATUS_NONE = 0;
|
|
57
|
+
declare const STATUS_FIRST = 1;
|
|
58
|
+
declare const STATUS_NEXT = 2;
|
|
59
|
+
declare const STATUS_LEAF = 4;
|
|
60
|
+
declare const STATUS_LAST = 8;
|
|
61
|
+
declare const STATUS_FINISHED = 16;
|
|
62
|
+
declare const STATUS_ENTER: number;
|
|
63
|
+
declare const STATUS_EXIT: number;
|
|
64
|
+
type FsmProcessHandler = (process: FsmProcess, ...args: any[]) => void | Promise<void>;
|
|
65
|
+
type FsmProcessDump = Record<string, any> & {
|
|
66
|
+
status: number;
|
|
67
|
+
event?: string;
|
|
68
|
+
stack: FsmStateDump[];
|
|
69
|
+
};
|
|
70
|
+
type FsmProcessDumpHandler = (process: FsmProcess, dump: FsmProcessDump) => void | Promise<void>;
|
|
71
|
+
declare class FsmProcess extends FsmBaseClass {
|
|
72
|
+
state?: FsmState;
|
|
73
|
+
event?: string;
|
|
74
|
+
status: number;
|
|
75
|
+
config: FsmStateConfig;
|
|
76
|
+
rootDescriptor: FsmStateDescriptor;
|
|
77
|
+
constructor(config: FsmStateConfig);
|
|
78
|
+
dispatch(event: string, mask?: number): Promise<boolean>;
|
|
79
|
+
dump(...args: unknown[]): Promise<FsmProcessDump>;
|
|
80
|
+
restore(dump: FsmProcessDump, ...args: unknown[]): Promise<this>;
|
|
81
|
+
onStateCreate(handler: FsmStateSyncHandler): () => void;
|
|
82
|
+
onStateError(handler: (state: FsmState, error: any) => void | Promise<void>): () => void;
|
|
83
|
+
_handleStateError(state: FsmState, error: Error | unknown): Promise<void>;
|
|
84
|
+
_newState(parent: FsmState | undefined, key: string, descriptor: FsmStateDescriptor | undefined): FsmState;
|
|
85
|
+
_getSubstate(parent: FsmState | undefined, prevStateKey: string | undefined): FsmState | undefined;
|
|
86
|
+
_newSubstate(parent: FsmState | undefined, toState: string): FsmState;
|
|
87
|
+
_update(): boolean;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare const KEY_HANDLERS = "handlers";
|
|
91
|
+
declare function callStateHandlers(state: FsmState): void;
|
|
92
|
+
declare function addSubstateHandlers(state: FsmState, handlers: Record<string, FsmStateHandler>): void;
|
|
93
|
+
|
|
94
|
+
type Printer = (...args: any[]) => void;
|
|
95
|
+
type PrinterConfig = {
|
|
96
|
+
prefix?: string;
|
|
97
|
+
print?: (...args: any[]) => void;
|
|
98
|
+
lineNumbers?: boolean;
|
|
99
|
+
};
|
|
100
|
+
declare const KEY_PRINTER = "printer";
|
|
101
|
+
declare function preparePrinter(process: FsmProcess, { prefix, print, lineNumbers }: PrinterConfig): Printer;
|
|
102
|
+
declare function setPrinter(state: FsmState, config?: PrinterConfig): void;
|
|
103
|
+
declare function setProcessPrinter(process: FsmProcess, config?: PrinterConfig): void;
|
|
104
|
+
declare function getPrinter(state: FsmState): Printer;
|
|
105
|
+
|
|
106
|
+
declare function setProcessTracer(process: FsmProcess, print?: Printer): () => void;
|
|
107
|
+
declare function setStateTracer(state: FsmState, print?: Printer): void;
|
|
108
|
+
|
|
109
|
+
export { EVENT_ANY, EVENT_EMPTY, FsmProcess, type FsmProcessDump, type FsmProcessDumpHandler, type FsmProcessHandler, FsmState, type FsmStateConfig, FsmStateDescriptor, type FsmStateDump, type FsmStateDumpHandler, type FsmStateErrorHandler, type FsmStateHandler, type FsmStateSyncHandler, KEY_HANDLERS, KEY_PRINTER, type Printer, type PrinterConfig, STATE_ANY, STATE_FINAL, STATE_INITIAL, STATUS_ENTER, STATUS_EXIT, STATUS_FINISHED, STATUS_FIRST, STATUS_LAST, STATUS_LEAF, STATUS_NEXT, STATUS_NONE, addSubstateHandlers, callStateHandlers, getPrinter, preparePrinter, setPrinter, setProcessPrinter, setProcessTracer, setStateTracer };
|