@flourish/store
v2.0.0
Published
Store values and query changes to them
Downloads
254
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/store
Usage
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 mode
s
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.