Skip to main content
Home

This package is Powerful, Full Typesafe utility for storage (such as localstorage, cookie, ext.) with safe JSON serialization and more

This package works with Node.js, Deno, Bun, Browsers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
100%
Published
a year ago (1.0.2)

@pipisasa/storage - Typesafe Storage with event listeners.

Such as LocalStorage, SessionStorage, Cookie ext.

Example

// example.ts
import { EventHandler, Storage } from "./mod";
import { LocalStorageProvider } from "./src/providers/localStorage";
import { defaultJSONSerializer } from "./src/serializers/defaultJSONSerializer";

type Product = {
  id: number;
  name: string;
};

type MyStorage = {
  accessToken: string;
  refreshToken: string;
  products: Product[];
};

const storage = new Storage<MyStorage>({
  prefix: "some-prefix:",
  provider: new LocalStorageProvider(),
  jsonSerializer: defaultJSONSerializer,
});

// const storageWithSuperJson = new Storage<MyStorage>({
//   prefix: "some-prefix:",
//   provider: new LocalStorageProvider(),
//   jsonSerializer: {
//     stringify(value) {
//       return superjson.stringify(value);
//     },
//     parse(value) {
//       return superjson.parse(value);
//     }
//   }
// });

const a = storage.get("products"); // a: Product[]

storage.set("products", [{ id: 123, name: "adsfasdf" }]);

const handleProductsSet: EventHandler<MyStorage, "products", "set"> = (e) => {
  console.log(e.type, e.key, e.value);
};

storage.addEventListener("products:set", handleProductsSet);

storage.removeEventListener("products:set", handleProductsSet);

const unsubscribe = storage.addEventListener("products:*", (e) => {
  console.log(e.type, e.key, e.value);
});

unsubscribe();

storage.clear();

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@pipisasa/storage

Import symbol

import * as storage from "@pipisasa/storage";
or

Import directly with a jsr specifier

import * as storage from "jsr:@pipisasa/storage";

Add Package

pnpm i jsr:@pipisasa/storage
or (using pnpm 10.8 or older)
pnpm dlx jsr add @pipisasa/storage

Import symbol

import * as storage from "@pipisasa/storage";

Add Package

yarn add jsr:@pipisasa/storage
or (using Yarn 4.8 or older)
yarn dlx jsr add @pipisasa/storage

Import symbol

import * as storage from "@pipisasa/storage";

Add Package

vlt install jsr:@pipisasa/storage

Import symbol

import * as storage from "@pipisasa/storage";

Add Package

npx jsr add @pipisasa/storage

Import symbol

import * as storage from "@pipisasa/storage";

Add Package

bunx jsr add @pipisasa/storage

Import symbol

import * as storage from "@pipisasa/storage";