@flourish/store
v2.0.0
Published
Store values and query changes to them
Downloads
1,244
Maintainers
Keywords
Readme
Flourish store
Flourish module for storing and updating values and querying when they've changed.
Install
To install the module, type:
npm install @flourish/storeUsage
The module exports a single (default) function that can be used to create a store function by calling it with an array that specifies the names to assign to properties stored in the state.
import createStore from "@flourish/store";
var store = createStore(["state", "a", "b"]);Call the store function to check whether anything has changed (true) with the new (set of) value(s). You can pass in...
1) A name and value pair
var result = store("a", 7);In the above case result will be true unless the property a was already set to 7.
2) An array
var result = store([state, a, my_var]);In the above case result will be true unless state matches (see below) the saved value of property state in the store, a matches the saved value of a in the store and my_var matches the saved value of b (following the order defined in the initialisation step).
3) An object
var result = store({ state: state, a: a, b: 62 });In the above case result will be true unless state matches the saved value of property state in the store, a matches the saved value of a in the store and the saved value of b is 62. Extraneous properties are ignored.
Matching modes
By default, comparison is done using the triple equals (===) operator. This can be changed for each property by using mode method on the store function (which returns the store function):
.mode(property, "strict-equality")
The default === comparison.
.mode(property, "equality")
Like "strict_equality" but using == instead of ===.
.mode(property, "array-contents")
For comparing the contents of two arrays by their elements (using ===) rather than checking whether the arrays themseleves are the same.
.mode(property, some_array)
For comparing a subset of properties of an object. As an example:
var store = createStore(["state", "data", "xScale"])
.mode("state", ["bin_count", "mode"]);When store is called, only the bin_count and mode properties of the state object will be compared (using ===).
Retrieving (a copy of) the contents of store
This can be done with the .stored method:
.stored(key)
This returns the value of the stored property key.
.stored()
This returns a clone of the entire stored object.
