@simmo/store

0.0.1 • Public • Published

Store

Travis npm downloads License

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 to undefined
  • isNew - Boolean representing if the key is new
  • key - the key passed to set()
  • newValue - the value passed to set()

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)
// => false

get(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')
// => false

clear()

Empties the store.

store.set('Name', 'Mike')

store.size
// => 1

store.clear()

store.size
// => 0

values()

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
// => 1

License

MIT © Mike Simmonds

Readme

Keywords

Package Sidebar

Install

npm i @simmo/store

Weekly Downloads

1

Version

0.0.1

License

MIT

Unpacked Size

13 kB

Total Files

8

Last publish

Collaborators

  • simmo