@idleberg/local-storage
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

@idleberg/local-storage

A NodeJS ponyfill for the Storage API, utilizing SQLite.

License Version Build

Features

  • zero dependencies
  • fully API compatible to both, localStorage and sessionStorage
  • persists data across sessions
  • supports storage events

[!NOTE] This module depends on the experimental node:sqlite module included in NodeJS v22.5 and later.

Installation

npm install @idleberg/local-storage

Usage

API

createLocalStorage

Usage: createLocalStorage(dbFile: string)
Returns: [Storage, EventEmitter]

Creates an instance of the localStorage API and a corresponding EventEmitter.

Example:

import { createLocalStorage } from "@idleberg/local-storage";

const [localStorage, emitter] = createLocalStorage("./db.sqlite");

// Listen for storage changes
emitter.on("storage", console.log);

createSessionStorage

Usage: createSessionStorage()
Returns: [Storage, EventEmitter]

Creates an instance of the sessionStorage API and a corresponding EventEmitter.

Example:

import { createSessionStorage } from "@idleberg/local-storage";

const [sessionStorage, emitter] = createSessionStorage();

// Listen for storage changes
emitter.on("storage", console.log);

Storage (Advanced Usage)

Usage: new Storage(filePath: string | ':memory:', options: StorageEventOptions)

This class is used internally by both of the above factory functions. However, instantiating the class allows you more control over the EventEmitter, i.e. you could re-use an existing one from your application code.

Example:

import { Storage } from "@idleberg/local-storage";
import EventEmitter from "events";

const myEmitter = new EventEmitter();

const localStorage = new Storage("./db.sqlite", {
    emitter: myEmitter,
});

// Listen for storage changes
myEmitter.on("storage", console.log);

Related

License

This work is licensed under The MIT License.

Package Sidebar

Install

npm i @idleberg/local-storage

Weekly Downloads

6

Version

0.1.1

License

MIT

Unpacked Size

17 kB

Total Files

7

Last publish

Collaborators

  • idleberg