Neverending Perpetual Motion

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

    2.0.0 • Public • Published

    Keya

    A simple, universal document store. Keya supports the following storage mediums:

    • SQLite (Nodejs)
    • IndexedDB (Browser)
    • LocalStorage (Browser, backup)

    API

    In general keya stores can be thought of as a Map that acts asynchronously.

    Import

    import * as keya from "keya";
    // Or, if not using modules:
    const keya = require("keya");

    Access a store

    If the store does not exist when you call this, it will be created automatically for you

    const store = await keya.store("records");

    Note: Store names need to follow SQLite Table name rules/should generally only be alphanumeric characters without spaces. Beyond that can lead to unexpected issues and undocumented behavior

    Hydration

    keya supports an optional Hydration Function to be passed to .store when initalizing. This defaults to JSON.parse. The hydration function will be passed the stored string and should return the appropriate value. An example is shown below that allows keya to store Maps long-term.

     
    // Add a custom hydration function
    const store = await keya.store("calls");
     
    // Custom conversion functions stores a map by it's entry list
    store.stringify = map => JSON.stringify([...map.entries()]);
    store.hydrate = string => new Map(JSON.parse(string));
     
    // Construct the Map to be stored
    const map = new Map([
      [32, "a"],
      [45, "b"]
    ])
     
    store.set("map", map);
     
    // In another session
     
    const map = store.get("map");

    Set a value

    await store.set("document", { value: 345 });

    Get a value

    const record = await store.get("document");

    Find values

    const records = store.find(
      (value, name) => name.includes("e") && value.v == 12
    );

    Clear the store

    store.clear();

    Get all values

    store.all(); // [ {key: "hello", value: 43 }, { key: "world", value: 12 } ]

    Keywords

    none

    Install

    npm i keya

    DownloadsWeekly Downloads

    3

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    124 kB

    Total Files

    27

    Last publish

    Collaborators

    • mayormonty