antiflux
TypeScript icon, indicating that this package has built-in type declarations

0.1.24 • Public • Published

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.

Codacy Badge codecov Known Vulnerabilities

Installation

npm install antiflux || yarn add antiflux

Usage

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

Package Sidebar

Install

npm i antiflux

Weekly Downloads

0

Version

0.1.24

License

MIT

Unpacked Size

30.2 kB

Total Files

11

Last publish

Collaborators

  • dsieradski