npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

rxeta

v1.1.2

Published

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

Readme

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