1.1.2 • Published 2 years ago

rxeta v1.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

RxEta

Reactive state management written in TypeScript with a minimal API and full power of RxJS!

Description

This is a simple store that can be used to manage state. After instantiating the store, you can either set, update or get states values, with a subscribtion system to keep track of the store changes.

Getting Started

Requirements

Installing

npm install rxeta

or

yarn add rxeta

Features

  • 🌐 Centralized state management
  • 🛡 Protected state (can't be mutated directly)
  • ♻ State mutation using setters or updaters
  • 💌 Subscribe method to watch and react to desired state changes
  • 💙 Fully typed thanks to Typescript

Usage

  1. Create the state interface and the initial state
import { Store } from 'rxeta'

interface State {
    counter: number
}

const initialState: State {
    counter: 0
}
  1. Create the store instance
const store = new Store(initialState)
  1. Subscribe to the whole store or to a single key to react to changes
// subscribe to any state change
store.subscribe((state) => console.log('state change', state))

// subscribe to a specific key change
store
  .select('counter')
  .subscribe((value) => console.log('counter value change', value))
  1. Update or set a given state in the store
// set to a new value
store.set('foo', 100)

// update the value using an updater function that takes the current value as parameter and returns the new value
store.update('foo', (value) => value + 1)

Contributing

Pull requests are welcome.

Building for production

To run the production build use the npm build script:

npm run build

Before the build is actually made the tests will be executed, the dist folder will be removed and then the build will be made.

Running tests

This library contains all tests in the ./src/Store.test.ts.

The tests are writen using mocha and chai.

To run the tests just use the npm test script:

npm run test

Please make sure to update tests as appropriate.

License

ISC License

Copyright (c) barthofu