grimoire-store
v1.2.1
Published
Simple state store with zero dependencies — skips notifying listeners when you set a value that's already the same.
Maintainers
Readme
grimoire-store
A tiny, zero-dependency state store for JavaScript and TypeScript.
Skips notifying listeners when the value you set is already the same — no unnecessary re-renders.
Install
npm install grimoire-storeUsage
import { createGrimoire } from 'grimoire-store'
const store = createGrimoire({ count: 0, name: 'guest' })
// Read state
store.getState() // { count: 0, name: 'guest' }
// Merge a partial update
store.setState({ count: 1 })
// Update from previous state
store.setState((prev) => ({ count: prev.count + 1 }))
// Subscribe to changes
const unsubscribe = store.subscribe((state, prev) => {
console.log('changed', state, prev)
})
// Stop listening
unsubscribe()API
createGrimoire(initialState)
Creates a new store. Returns a StoreApi<T> object.
| Method | Signature | Description |
| ----------- | ---------------------------------------------------------- | ---------------------------------------------------------------- |
| getState | () => T | Returns the current state |
| setState | (partial: Partial<T> \| (prev: T) => Partial<T>) => void | Merges a patch into state. Skips notification if nothing changed |
| subscribe | (listener: (state: T, prev: T) => void) => () => void | Registers a listener. Returns an unsubscribe function |
License
ISC © SAHRI Yahya Abdelkadouss
