antiflux v0.1.24
Antiflux
A lightweight (<20kb bundled), zero-dependency, in-memory store and observable state manager, exclusively for Node.js, for when reactive state managers and their attendant boilerplate are overkill.
Installation
npm install antiflux || yarn add antifluxUsage
// js
import Antiflux from 'antiflux'
// ts
import Antiflux from 'antiflux/src/main
const store = new Antiflux([initialState], [options], [getters])Set key
Add or update a key. Value can be of any type.
store.set('myKey', 'myValue')Has key
Check if a key exists. Responds with a boolean.
store.has('myKey')Get key
Get a key's value.
const myValue = store.get('myKey')Deep operations
Supports dot notation.
store.set('deep.deeper.deepest', 'deeperest')
if (store.has('deep.deeper.deepest')) {
return store.get('deep.deeper.deepest')
}Watch for changes
Watch a key for changes. Available targets are set, delete, and clear.
store.watch.on('set', e => {
const { key, value, prior } = e
console.log(`The key ${key} changed from ${prior} to ${value}`).
})Delete key
Delete a key from the state.
store.delete('myKey')Dump data
Dump all state data.
store.dump()Clear all
Clear all entries from the state.
store.clear()Options
Initialize state
Initialize the store with a predefined state.
const initialState = {
foo: 'bar',
baz: 'qux'
}
const store = new Antiflux(initialState)Persist data
Use the persist option to specify a path at which to write data. Data will
be reloaded from disk at runtime.
const options = {
persist: '/tmp/antiflux.db'
}
const store = new Antiflux({}, options)Encrypt data
Encrypt persisted data at rest with AES-256-GCM encryption. Use the encryptKey option to specify a 32-character encryption key.
const options = {
encryptKey: 'bWDlfrMxr1cnl4F4sdOvoKEOO9WY628a'
}
const store = new Antiflux({}, options)Debug mode
Use the debug option to print state changes to the console, e.g.: (Store) foo: bar ➟ baz.
const options = {
debug: true
}
const store = new Antiflux({}, options)Custom getters
Create custom getters to return modified data.
const getters = {
getLower(state) {
return state.get('foo.bar.baz').toLowerCase()
},
getUpper(state) {
return state.get('foo.bar.baz').toUpperCase()
}
}
const store = new Antiflux({}, {}, getters)4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago