A datastore to easily and consistently store unique objects in an array.
You can also specify placeholders for displaying shimmers while awaiting data from an API call.
Install
npm install --save array-datastore
Usage
🖲️ constructor.instance(configObject)
Create a new instance of the store with an optional configuration object.
🖲️ addUniqueObject()
Add an unique object to the store. Objects are unique by their id
field, so ensure your objects have that.
🖲️ addUniqueObjects()
Add an array unique objects to the store.
🖲️ prependUniqueObject()
Add an unique object to front of the store.
🖲️ prependUniqueObjects()
Add an array unique objects to front of the store.
🖲️ setBeforeAddProcessor(callbackFunction)
Set a function that will be called before any time an object is added to the store.
🖲️ hasObjectById()
Check if the store has an object by its id.
🖲️ replaceObject()
Replace an existing object or add to the store.
🖲️ deleteObjectById()
Delete an object from the store by its id.
🖲️ reset()
Delete all objects from the store.
🖲️ getObjects()
Get all the objects in the store.
🖲️ getObjectIds()
Get all the object ids in the store.
🖲️ getObjectById()
Get an object from the store by its id.
🖲️ getObjectAtIndex()
Get an object from the store at a specific index.
🖲️ getObjectByPredicate()
Get the first object matching the provided filter predicate.
🖲️ getObjectIndexById()
Get the index of an object by its id.
🖲️ hasPlaceholders()
Checks if the store has placeholder objects.
🖲️ clearPlaceholders()
Remove the placeholder objects from the store.
See the tests (tests/dataStore_test.js
) to see how these methods are used.
config object
When creating the store, you can specify an optional configuration object.
placeholders: number|Array<Object>
You can specify a number of placeholders or an array of placeholder objects that will populate the store until you add your first actual object or you call the #clearPlaceholders() method.
Example
Tests
We use mocha and chai. Run npm test
to test the generators.
Contributing
Feel free to open a pull request!