@zedux/machines
Version:
Simple native state machine implementation for Zedux atoms
25 lines (24 loc) • 1.44 kB
TypeScript
import { RecursivePartial, Settable, Store } from '@zedux/atoms';
import { MachineStateShape } from './types.js';
/**
* An extremely low-level Store class that represents a state machine. Don't
* create this class yourself, use a helper such as @zedux/machine's
* `injectMachineStore()`
*/
export declare class MachineStore<StateNames extends string = string, EventNames extends string = string, Context extends Record<string, any> | undefined = undefined> extends Store<MachineStateShape<StateNames, Context>> {
readonly states: Record<StateNames, Record<EventNames, {
name: StateNames;
guard?: (context: Context) => boolean;
}>>;
private readonly guard?;
constructor(initialState: StateNames, states: Record<StateNames, Record<EventNames, {
name: StateNames;
guard?: (context: Context) => boolean;
}>>, initialContext?: Context, guard?: ((currentState: MachineStateShape<StateNames, Context>, nextValue: StateNames) => boolean) | undefined);
getContext: () => Context;
getValue: () => StateNames;
is: (stateName: StateNames) => boolean;
send: (eventName: EventNames, meta?: any) => MachineStateShape<StateNames, Context>;
setContext: (context: Settable<Context>, meta?: any) => MachineStateShape<StateNames, Context>;
setContextDeep: (partialContext: Settable<RecursivePartial<Context>, Context>, meta?: any) => MachineStateShape<StateNames, Context>;
}