Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including keya with all npm packages installed. Try it out:

var keya = require("keya")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

keya v2.0.0

A simple, universal document store


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

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


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


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"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


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"calls");

// Custom conversion functions stores a map by it's entry list
store.stringify = map => JSON.stringify([]);
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


Get all values

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


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free