Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/will123195/state-eventer
Read and write values to a state object and listen for changes at any given path
https://github.com/will123195/state-eventer
Last synced: 2 months ago
JSON representation
Read and write values to a state object and listen for changes at any given path
- Host: GitHub
- URL: https://github.com/will123195/state-eventer
- Owner: will123195
- Created: 2019-11-09T04:44:20.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-06-15T14:57:31.000Z (over 4 years ago)
- Last Synced: 2024-04-26T04:03:12.410Z (9 months ago)
- Language: JavaScript
- Homepage:
- Size: 41 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# state-eventer
Read and write values to a state object and listen for changes at any given path
[![Build Status](https://travis-ci.org/will123195/state-eventer.svg?branch=master)](https://travis-ci.org/will123195/state-eventer)
## Install
```
npm i state-eventer
```## Example
```js
// initialize an empty state
const state = new StateEventer()
state.get() // {}// listen for state changes at specific paths
const listeners = [
state.on('books', console.log),
state.on('books.1', console.log)
]// remove listener
listeners[0].off()// add/modify value and notify listeners
state.set('books.1.title', 'War and Peace')// retrieve values from the state
state.get() // { books: { 1: { title: 'War and Peace' } } }
state.get('books') // { 1: { title: 'War and Peace' } }
state.get('books.1') // { title: 'War and Peace' }
state.get('books.1.title') // 'War and Peace'// remove values from the state and notify listeners
state.unset('books.1.title')
state.get('books.1.title') // undefined// reset the entire state and notify listeners
state.set({})
state.get() // {}// transform
state.update('counter', n => n + 1, 0) // 1
```## Methods
### StateEventer
#### `on( path, listenerFn )`
- `path` (String|Array) the path to listen for changes
- `listenerFn` (Function) the function to call when the value changesReturns `Listener` (see below)
#### `get( path, [defaultValue] )`
- `path` (String|Array) the path of the desired value
- `defaultValue` (*) optional default value to return if the value at the specified path is undefined#### `set( path, value )`
- `path` (String|Array) the path at which to set the value
- `value` the value to set#### `set( value )`
- `value` (Object) resets the root state to this value#### `unset( path )`
- `path` (String|Array) removes this path from the state#### `update( path, transformFn, [defaultValue] )`
- `path` (String|Array) the path at which to set the value
- `transformFn` (Function) transform the current value to a new value
- `defaultValue` (*) optional default value to pass into the transform function if the value at the given path is undefined
```js
update('counter', n => n + 1, 0)
```### Listener
#### `off()` removes the listener
## License
MIT