Skip to content

emit-js/store

Repository files navigation

@emit-js/store

emit immutable store

that's us

Install

npm install @emit-js/emit @emit-js/store

Setup

const emit = require("@emit-js/emit")()
require("@emit-js/store")(emit)

Usage

emit.set("prop", "prop2", "some value")
emit.get("prop", "prop2") // "some value"
emit.merge("prop", { prop3: "another value" })
emit.get("prop") // { prop2: "some value", prop3: "another value" }
emit.delete("prop")
emit.get() // {}

Listen to store changes

Use emit.on or emit.any on the store event id:

emit.on("store", "prop", () => {})

Queued update

Pass a function to emit.set for atomic operations:

emit.set("counter", value => (value || 0) + 1)

Raw state

The raw state object is available at emit.state.store.

Credit

Some of the immutability features were borrowed from debitoor/dot-prop-immutable.