@simmo/store v0.0.1
Store
JavaScript utility that provides a simple data store.
Install
NPM
npm install @simmo/store
Yarn
yarn add @simmo/store
Create a new store
import Store from '@simmo/store'
const store = new Store()Returns a new store.
Config
You can optionally pass a set of options when creating a store.
beforeSet
Expects a function that returns a value. This value will be used instead of the value passed to set(). The function is provided a data object containing the following properties;
currentValue- Current value in the store, defaults toundefinedisNew- Boolean representing if the key is newkey- the key passed toset()newValue- the value passed toset()
The example below would append the new value to the old.
const store = new Store({
beforeSet: ({ currentValue, isNew, newValue }) => {
return isNew ? [newValue] : [...currentValue, newValue]
},
})
store.set('Names', 'Mike')
store.get('Names')
// => ['Mike']
store.set('Names', 'Bob')
store.get('Names')
// => ['Mike', 'Bob']Methods
set(key, value)
Returns the value saved to the store.
store.set('Name', 'Mike')
// => 'Mike'has(key)
Returns true if the key exists, false if not.
store.set('Name', 'Mike')
store.has('Name')
// => true
store.has(1234)
// => falseget(key)
Returns the key's value.
store.set('Name', 'Mike')
store.get('Name')
// => 'Mike'delete(key)
If the key exists, the key/value pair is removed and true is returned. If the key does not exist, it returns false.
store.set('Name', 'Mike')
store.delete('Name')
// => true
store.delete('Something else')
// => falseclear()
Empties the store.
store.set('Name', 'Mike')
store.size
// => 1
store.clear()
store.size
// => 0values()
Returns an array of values from the store.
store.set('Name', 'Mike')
store.set('Github', '@simmo')
store.values()
// => ['Mike', '@simmo']keys()
Returns an array of the keys used in the store.
store.set('Name', 'Mike')
store.set('Github', '@simmo')
store.values()
// => ['Name', 'Github']Properties
size
Returns the number of key/value pairs in the store.
store.set('Name', 'Mike')
store.size
// => 1License
MIT © Mike Simmonds
7 years ago