state-manager-reaktif-micro
v0.2.3
Published
Micro reactive state manager (tiny, zero-deps)
Maintainers
Readme
state-manager-reaktif-micro
A tiny, zero-dependency reactive state manager for JavaScript — minimal API to create a store, subscribe to changes, patch state, and select slices.
Features
- Small and dependency-free
- get / set / replace state
- subscribe to full-state updates
- select and subscribe to derived slices
- Works in Node and browser bundlers (ES modules)
Installation
Using npm (when published):
npm install state-manager-reaktif-microOr copy src/ into your project and import directly.
Quick usage
import { createStore } from 'state-manager-reaktif-micro';
// or local file:
// import { createStore } from './src/index.js';
const store = createStore({ count: 0 });
// subscribe to full state changes
const unsubscribe = store.subscribe((state, prev) => {
console.log('state changed', state, prev);
});
store.setState({ count: 1 }); // shallow merge partial
store.setState(s => ({ count: s.count + 1 })); // updater function
// select a slice and subscribe
const counter = store.select(s => s.count);
const unsubSlice = counter.subscribe(value => console.log('count:', value));
// stop listening
unsubSlice();
unsubscribe();API
- createStore(initialState = {})
- Returns a store with the methods below.
Store methods:
- getState() -> current state (reference)
- setState(patchOrUpdater)
- Accepts a plain object (shallow merge partial) or an updater function (state) => partial|full
- If updater returns a plain object, it is merged; otherwise the return value replaces state
- replaceState(newState)
- Replace the entire state object
- subscribe(listener)
- listener receives (state, prevState)
- returns unsubscribe function
- select(selector)
- selector(state) -> slice
- returns an object: { subscribe, unsubscribe, current }
- subscribe receives slice values; simple deep change detection is used (stringify-based)
Build & publish
Repository includes a simple build script. Typical commands:
- Build:
npm run build - Run tests:
npm test - Publish:
npm publish --access public(ensure build step succeeds ifprepublishOnlyis configured)
If build fails because build/build.js is missing, either create the build script or remove the prepublishOnly hook in package.json.
Contributing
- Open issues or PRs for bugs or enhancements.
- Keep changes minimal and backward-compatible.
License
MIT
# state-manager-reaktif-micro
A tiny, zero-dependency reactive state manager for JavaScript — minimal API to create a store, subscribe to changes, patch state, and select slices.
## Features
- Small and dependency-free
- get / set / replace state
- subscribe to full-state updates
- select and subscribe to derived slices
- Works in Node and browser bundlers (ES modules)
## Installation
Using npm (when published):npm install state-manager-reaktif-micro
Or copy `src/` into your project and import directly.
## Quick usage
```js
import { createStore } from 'state-manager-reaktif-micro';
// or local file:
// import { createStore } from './src/index.js';
const store = createStore({ count: 0 });
// subscribe to full state changes
const unsubscribe = store.subscribe((state, prev) => {
console.log('state changed', state, prev);
});
store.setState({ count: 1 }); // shallow merge partial
store.setState(s => ({ count: s.count + 1 })); // updater function
// select a slice and subscribe
const counter = store.select(s => s.count);
const unsubSlice = counter.subscribe(value => console.log('count:', value));
// stop listening
unsubSlice();
unsubscribe();API
- createStore(initialState = {})
- Returns a store with the methods below.
Store methods:
- getState() -> current state (reference)
- setState(patchOrUpdater)
- Accepts a plain object (shallow merge partial) or an updater function (state) => partial|full
- If updater returns a plain object, it is merged; otherwise the return value replaces state
- replaceState(newState)
- Replace the entire state object
- subscribe(listener)
- listener receives (state, prevState)
- returns unsubscribe function
- select(selector)
- selector(state) -> slice
- returns an object: { subscribe, unsubscribe, current }
- subscribe receives slice values; simple deep change detection is used (stringify-based)
Build & publish
Repository includes a simple build script. Typical commands:
- Build:
npm run build - Run tests:
npm test - Publish:
npm publish --access public(ensure build step succeeds ifprepublishOnlyis configured)
If build fails because build/build.js is missing, either create the build script or remove the prepublishOnly hook in package.json.
Contributing
- Open issues or PRs for bugs or enhancements.
- Keep changes minimal and backward-compatible.
License
MIT
