add Interpreter().start() for convenient start-upon-creation

main
Avraham Sakal 2 years ago
parent da37d53eb0
commit 91a628eeb3

@ -45,6 +45,7 @@ export interface Interpreter_T {
subscriptions: Record<string, SubscriptionCallbackFunction_T>; subscriptions: Record<string, SubscriptionCallbackFunction_T>;
isTransitioning: boolean; isTransitioning: boolean;
isPaused: boolean; isPaused: boolean;
start: ()=>Interpreter_T;
} }
/** /**
@ -58,7 +59,9 @@ export interface Interpreter_T {
*/ */
export function Interpreter(machine:Machine_T, initialContext:any, initialStateName?:string) : Interpreter_T{ export function Interpreter(machine:Machine_T, initialContext:any, initialStateName?:string) : Interpreter_T{
if(typeof initialStateName === 'undefined'){ initialStateName = machine.states[0].name; } if(typeof initialStateName === 'undefined'){ initialStateName = machine.states[0].name; }
const interpreter = {machine, state: initialStateName, context:initialContext, eventQueue:[], isTransitioning:false, subscriptions: {}, isPaused: true} //@ts-expect-error
const interpreter : Interpreter_T = {machine, state: initialStateName, context:initialContext, eventQueue:[], isTransitioning:false, subscriptions: {}, isPaused: true};
interpreter.start = ()=>{ start(interpreter); return interpreter; }
send(interpreter, ['entry', null] ); send(interpreter, ['entry', null] );
return interpreter; return interpreter;
} }

Loading…
Cancel
Save