okiba-gang/okiba

View on GitHub
packages/store/README.md

Summary

Maintainability
Test Coverage


# Okiba / Store
A store module to implement state management.
It allows registering to prop updates, as well as any update trough the catch-all callback.

__



```javascript
import Store from '@okiba/store'

const store = new Store({ level: 1, lives: 3 })

const onLevelChange = level => {
 console.log(level)
}

store.subscribe('*', state => console.log(`Store: ${state}`))
store.subscribe('level', onLevelChange)

store.set('level', 2)
// Logs: 2
// Logs: the whole state ({level: 1, lives: 3})
```



### Installation

```bash
npm i --save @okiba/store
```

Or import it directly in the browser
```html
<script type="module" src="https://unpkg.com/@okiba/store/index.js"></script>
```

## Usage

```javascript
import Store from '@okiba/store'
```

#### Untranspiled code 🛑
Okiba Core packages are not transpiled, so _don't forget to transpile them with your favourite bundler_.
For example, using Babel with Webpack, you should prevent imports from okiba to be excluded from transpilation, like follows:

```javascript
{
  test: /\.js$/,
  exclude: /node_modules\/(?!(@okiba)\/).*/,
  use: {
    loader: 'babel-loader',
    options: {
      presets: ['@babel/preset-env']
    }
  }
}
```







## constructor(initialState)









#### Arguments


##### + `initialState`: `Object`

The initial store's state





## set(key, value)


Single state property setter







#### Arguments


##### + `key`: `String`

The property key


##### + `value`: `any`

The property value





## get(key)


Single state property getter







#### Arguments


##### + `key`: `String`

The property key





## getState()


State getter







#### Returns

`Object` The current state
## setState(state)


State setter







#### Arguments


##### + `state`: `Object`

The new state object





## reset()


State resetter







## clear()


Clears the current state, that is, the store is going to be empty.
No callbacks are fired.







## subscribe(key, callback)


State update subscription handler







#### Arguments


##### + `key`: `String`

The property to be observed


##### + `callback`: `function`

The function to be called on property update





## unsubscribe(key, callback)


State update unsubscription handler







#### Arguments


##### + `key`: `String`

The property to be unobserved


##### + `callback`: `function`

The handler to be dismissed