import { StateMachineBuilder } from "../fsm.ts"; const [locked, unlocked] = ["locked", "unlocked"] as const; const smbTurnstile = new StateMachineBuilder() .withStates([locked, unlocked]) .withTransitions([ [locked, { coin: unlocked }], [unlocked, { push: locked }], ]); async function main() { const sm = smbTurnstile.build(locked); function logCurrentState() { console.log("current state", JSON.stringify(sm.currentState.name)); } logCurrentState(); await sm.trigger("coin", {}); logCurrentState(); await sm.trigger("push", {}); logCurrentState(); await sm.trigger("push", {}); logCurrentState(); } if (import.meta.main) { main(); }