API Docs
    Preparing search index...

    Module @ak2021/store - v1.0.2-beta.6

    @ak2021/store

    A tiny event-based store utility for lightweight state and message flow.

    pnpm add @ak2021/store
    
    import Store from "@ak2021/store";

    const store = new Store({ id: "app-store" });

    store.on("user:login", (payload) => {
    console.log("login event", payload);
    });

    store.emit("user:login", { id: 1, name: "Alice" });
    interface StoreOptions {
    id?: string;
    }
    type EventListener<T = any> = (data: T) => void;
    

    Creates a new store instance.

    const store = new Store({ id: "my-store" });
    

    Subscribe to an event.

    store.on("count:change", (value: number) => {
    console.log(value);
    });

    Subscribe to an event for a single trigger.

    store.once("ready", () => {
    console.log("ready only once");
    });

    Unsubscribe listener(s).

    const onChange = (value: number) => console.log(value);

    store.on("count:change", onChange);
    store.off("count:change", onChange); // remove one listener
    store.off("count:change"); // remove all listeners of this event type

    Emit an event with optional payload.

    store.emit("count:change", 10);
    

    All event methods return the current store instance, so chaining is supported.

    store
    .on("start", () => {})
    .once("finish", () => {})
    .emit("start")
    .emit("finish");
    type User = { id: number; name: string };

    const store = new Store();

    store.on<User>("user:update", (user) => {
    console.log(user.name);
    });

    store.emit<User>("user:update", { id: 1, name: "Bob" });
    pnpm --filter @ak2021/store dev
    
    pnpm --filter @ak2021/store build
    

    Classes

    Store

    Interfaces

    StoreOptions

    Type Aliases

    EventListener