Robot

A functional, immutable Finite State Machine library

README

Robot


  <img
    alt="The Robot logo, with green background."
    src="https://github.com/matthewp/robot-logo/raw/master/logo/robot-green.png"
    width="40%"
  />


A small functional and immutable Finite State Machine library. Using state machines for your components brings the declarative programming approach to application state.

See thisrobot.life for the main documentation.

  1. ```js
  2. import { createMachine, interpret, state, transition } from 'robot3';

  3. let machine = createMachine({
  4.   off: state(
  5.     transition('toggle', 'on')
  6.   ),
  7.   on: state(
  8.     transition('toggle', 'off')
  9.   )
  10. });

  11. const service = interpret(machine, () => {
  12.   render();
  13. });
  14. ```


Please star the repository on GitHub.
File an issue if you find a bug. Or better yet...
Submit a pull request to contribute.

Testing


Tests are located in the test/ folder. Load test/test.html in your browser of choice with any HTTP server you like (I use http-server). Tests are written in QUnit and are simple to understand.

Integrations


Robot works with a variety of UI libraries, and includes integrations for React, Preact, Haunted, and more. See the integrations page to learn more.

License


BSD-2-Clause