@ts-ddd/state-machine
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

State Machine Utility


A minimal state machine class

Installation

npm i @ts-ddd/state-machine
yarn add @ts-ddd/state-machine
pnpm install @ts-ddd/state-machine
bun add @ts-ddd/state-machine

Usage

import { StateMachine } from '@ts-ddd/state-machine';

enum LightTransitions {
  RED = "red",
  GREEN = "green",
  PULSING_GREEN = "pulsing_green",
  AMBER = "amber",
}

const transitions = {
  [LightTransitions.RED]: [LightTransitions.GREEN],
  [LightTransitions.GREEN]: [LightTransitions.PULSING_GREEN],
  [LightTransitions.PULSING_GREEN]: [LightTransitions.AMBER],
  [LightTransitions.AMBER]: [LightTransitions.RED],
}

const light = StateMachine.instance({
  transitions,
  currentState: LightTransitions.RED,
});

light.setState(LightTransitions.GREEN);
light.canTransitionTo(LightTransitions.PULSING_GREEN) // true

StateMachine.validateTransition(transitions, LightTransitions.RED, LightTransitions.GREEN) // true
StateMachine.validateTransition(transitions, LightTransitions.PULSING_GREEN, LightTransitions.GREEN) // false

light.getState() // 'green'

light.is(LightTransitions.AMBER) // false





Package Sidebar

Install

npm i @ts-ddd/state-machine

Weekly Downloads

2

Version

1.0.5

License

MIT

Unpacked Size

7.83 kB

Total Files

15

Last publish

Collaborators

  • fdorantesm