@test-runner/web
Version:
99 lines (71 loc) • 3.66 kB
Markdown
[](https://www.npmjs.org/package/fsm-base)
[](https://www.npmjs.org/package/fsm-base)
[](https://github.com/75lb/fsm-base/network/dependents?dependent_type=REPOSITORY)
[](https://github.com/75lb/fsm-base/network/dependents?dependent_type=PACKAGE)
[](https://github.com/75lb/fsm-base/actions/workflows/node.js.yml)
[](https://github.com/feross/standard)
# fsm-base
```js
const StateMachine = require('fsm-base')
class Stateful extends StateMachine {
constructor () {
super([
{ from: undefined, to: 'one' },
{ from: 'one', to: 'two' },
{ from: 'two', to: 'three' },
{ from: [ 'one', 'three' ], to: 'four'}
])
}
}
const instance = new Stateful()
instance.state = 'one' // valid state change
instance.state = 'two' // valid state change
instance.state = 'four' // throws - invalid state change
```
<a name="module_fsm-base"></a>
## fsm-base
* [fsm-base](#module_fsm-base)
* [StateMachine](#exp_module_fsm-base--StateMachine) ⇐ <code>Emitter</code> ⏏
* [new StateMachine(initialState, validMoves)](#new_module_fsm-base--StateMachine_new)
* [.state](#module_fsm-base--StateMachine+state) : <code>string</code>
* [.setState(state)](#module_fsm-base--StateMachine+setState)
* [.resetState()](#module_fsm-base--StateMachine+resetState)
* ["state" (state, prev)](#module_fsm-base--StateMachine+event_state)
<a name="exp_module_fsm-base--StateMachine"></a>
### StateMachine ⇐ <code>Emitter</code> ⏏
**Kind**: Exported class
**Extends**: <code>Emitter</code>
<a name="new_module_fsm-base--StateMachine_new"></a>
#### new StateMachine(initialState, validMoves)
| Param | Type | Description |
| --- | --- | --- |
| initialState | <code>string</code> | Initial state, e.g. 'pending'. |
| validMoves | <code>Array.<object></code> | Array of valid move rules. |
<a name="module_fsm-base--StateMachine+state"></a>
#### stateMachine.state : <code>string</code>
The current state
**Kind**: instance property of [<code>StateMachine</code>](#exp_module_fsm-base--StateMachine)
**Throws**:
- `INVALID_MOVE` if an invalid move made
<a name="module_fsm-base--StateMachine+setState"></a>
#### stateMachine.setState(state)
Set the current state. The second arg onward will be sent as event args.
**Kind**: instance method of [<code>StateMachine</code>](#exp_module_fsm-base--StateMachine)
| Param | Type |
| --- | --- |
| state | <code>string</code> |
<a name="module_fsm-base--StateMachine+resetState"></a>
#### stateMachine.resetState()
Reset to initial state.
**Kind**: instance method of [<code>StateMachine</code>](#exp_module_fsm-base--StateMachine)
**Emits**: <code>event:"reset"</code>
<a name="module_fsm-base--StateMachine+event_state"></a>
#### "state" (state, prev)
fired on every state change
**Kind**: event emitted by [<code>StateMachine</code>](#exp_module_fsm-base--StateMachine)
| Param | Type | Description |
| --- | --- | --- |
| state | <code>string</code> | the new state |
| prev | <code>string</code> | the previous state |
* * *
© 2015-21 Lloyd Brookes \<75pound@gmail.com\>. Documented by [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown).