@eight04/store
v0.4.0
Published
Reactive store aims to work with collection
Downloads
10
Maintainers
Readme
@eight04/store
A reactive store library designed to work with large collection. Inspired by svelte/store.
When some items in the collection are changed, a delta event will be broadcasted, so derived stores can be updated accordingly.
Installation
npm
npm install @eight04/store
Usage
Primitive store
import {Store, derived} from "@eight04/store";
const $a = new Store(0);
const $b = derived($a, v => v * 2);
const $c = derived([$a, $b], (a, b) => a + b);
$c.get() // 0
$a.set(5)
$c.get() // 15
Collection
import {Store, ArrayStore, filter} from "@eight04/store";
const $a = new ArrayStore(i => i.name, (a, b) => a.createdDate - b.createdDate);
const $q = new Store("");
const $b = filter($a, $q, (i, q) => !q || i.name.includes(q));
$a.set({
added: [
{
name: "apple",
createdDate: 83247238
},
{
name: "banana",
createdDate: 12231247
},
{
name: "orange",
createdDate: 23085720
}
]
});
$c.get() // [{name: "banana", ...}, {name: "orange", ...}, {name: "apple", ...}]
$q.set("or");
$c.get() // [{name: "orange", ...}]
API
Changelog
0.4.0 (Mar 30, 2023)
- Change:
filter
function has a different signature. Now you have to specify incremental query manually. - Add:
reindex
function.
- Change:
0.3.0 (Feb 10, 2023)
- Change:
slice
now accepts a single$range
store.
- Change:
0.2.1 (Feb 9, 2023)
- Fix:
map
error when key is changed.
- Fix:
0.2.0 (Feb 9, 2023)
- Add:
map
,sort
. - Drop
Counter
.
- Add:
0.1.0 (Feb 7, 2023)
- First release.