statewave
Version:
Another Finite State Machine
26 lines (21 loc) • 468 B
text/typescript
export type Immediate<S> = () => {
__immediate: boolean;
state: S;
};
export type Transition<S, E> = () => {
__transition: boolean;
event: E;
state: S;
};
export type State<S, E> = () => {
__state: boolean;
transitions: Transition<S, E>[];
immediates: Immediate<S>[];
};
export type MachineState<S extends string | number | symbol, E> = {
[K in S]?: State<S, E>;
};
export type MachineConfig<S> = {
initial?: S;
type?: "parallel" | "map";
};