state-switch
Version:
State Switch is a Change Monitor/Guarder for Async Actions.
24 lines (21 loc) • 575 B
text/typescript
import type {
EventObject,
Interpreter,
StateSchema,
} from 'xstate'
const guardMachineEvent = <TServiceCtlState extends StateSchema, TServiceCtlEvent extends EventObject> (
interpreter: Interpreter<
any,
TServiceCtlState,
TServiceCtlEvent
>,
event: TServiceCtlEvent['type'],
): void => {
if (!interpreter.state.can(event)) {
throw new Error([
`StateMachine "${interpreter.id}" can not accept event "${event}"`,
` with current state "${interpreter.state.value}"`,
].join(''))
}
}
export { guardMachineEvent }