2.1.0 • Published 2 years ago
@xstate/fsm v2.1.0
@xstate/fsm
This package contains a minimal, 1kb implementation of XState for finite state machines.
Features
| @xstate/fsm | XState | |
|---|---|---|
| Finite states | ✅ | ✅ |
| Initial state | ✅ | ✅ |
| Transitions (object) | ✅ | ✅ |
| Transitions (string target) | ✅ | ✅ |
| Delayed transitions | ❌ | ✅ |
| Eventless transitions | ❌ | ✅ |
| Nested states | ❌ | ✅ |
| Parallel states | ❌ | ✅ |
| History states | ❌ | ✅ |
| Final states | ❌ | ✅ |
| Context | ✅ | ✅ |
| Entry actions | ✅ | ✅ |
| Exit actions | ✅ | ✅ |
| Transition actions | ✅ | ✅ |
| Parameterized actions | ❌ | ✅ |
| Transition guards | ✅ | ✅ |
| Parameterized guards | ❌ | ✅ |
| Spawned actors | ❌ | ✅ |
| Invoked actors | ❌ | ✅ |
- Finite states (non-nested)
- Initial state
- Transitions (object or strings)
- Context
- Entry actions
- Exit actions
- Transition actions
state.changed
If you want to use statechart features such as nested states, parallel states, history states, activities, invoked services, delayed transitions, transient transitions, etc. please use XState.
Quick start
Installation
npm i @xstate/fsmUsage (machine)
import { createMachine } from '@xstate/fsm';
const toggleMachine = createMachine({
id: 'toggle',
initial: 'inactive',
states: {
inactive: { on: { TOGGLE: 'active' } },
active: { on: { TOGGLE: 'inactive' } }
}
});
const { initialState } = toggleMachine;
const toggledState = toggleMachine.transition(initialState, { type: 'TOGGLE' });
toggledState.value;
const untoggledState = toggleMachine.transition(toggledState, {
type: 'TOGGLE'
});
untoggledState.value;
// => 'inactive'Usage (service)
import { createMachine, interpret } from '@xstate/fsm';
const toggleMachine = createMachine({});
const toggleService = interpret(toggleMachine).start();
toggleService.subscribe((state) => {
console.log(state.value);
});
toggleService.send({ type: 'TOGGLE' });
toggleService.send({ type: 'TOGGLE' });
toggleService.stop();3.0.0-beta.3
2 years ago
2.1.0
2 years ago
2.0.1
2 years ago
3.0.0-beta.2
3 years ago
3.0.0-alpha.1
3 years ago
3.0.0-alpha.0
3 years ago
2.0.0
4 years ago
1.6.4
4 years ago
1.6.3
4 years ago
1.6.5
4 years ago
1.6.2
4 years ago
1.6.1
4 years ago
1.6.0
5 years ago
1.5.2
5 years ago
1.5.1
5 years ago
1.5.0
5 years ago
1.4.0
6 years ago
1.3.0
6 years ago
1.2.0
6 years ago
1.1.0
6 years ago
1.0.3
6 years ago
1.0.1
6 years ago
1.0.0
6 years ago
0.3.0
6 years ago
0.2.1
6 years ago
0.2.0
6 years ago
0.1.1
6 years ago
0.1.0
6 years ago