Typed LocalStorage-like wrapper for IndexedDB (by AyaExpTech)
IndexedDBのObjectStoreをLocalStorageのように扱うための、薄いラッパーライブラリです。
copyright (c) 2026- Ayasaka-Koto(AyaExpTech).
Released under the MIT License.
このライブラリはJSRパッケージとして公開されています。
- Web (esm.sh CDN)
import { OriginStorage } from "https://esm.sh/jsr/@ayaexptech/originstorage";
- npm
npx jsr add @ayaexptech/originstorage
import { OriginStorage } from "@ayaexptech/originstorage";
- pnpm
pnpm add jsr:@ayaexptech/originstorage
import { OriginStorage } from "@ayaexptech/originstorage";
- Deno (Add Package)
deno add jsr:@ayaexptech/originstorage
import { OriginStorage } from "@ayaexptech/originstorage";
- Deno (Adhoc Import)
import { OriginStorage } from "jsr:@ayaexptech/originstorage";
- Bun
bunx jsr add @ayaexptech/originstorage
import { OriginStorage } from "@ayaexptech/originstorage";
基本的にはWeb Storage API(sessionStorageやlocalStorage)と同じように使えます。
ただし、IndexedDBを扱う都合上、各メソッドはPromiseを返します。適宜awaitなどを使用してください。
import { OriginStorage } from "@ayaexptech/originstorage";
const exampleOriginStorage = new OriginStorage("example");
await exampleOriginStorage.setItem("hoge", "fuga");
await exampleOriginStorage.getItem("hoge"); // => "fuga"
await exampleOriginStorage.removeItem("hoge");
await exampleOriginStorage.clear();
await exampleOriginStorage.getSize(); // => 0 (lengthやsizeではないので注意)- keyは
stringである必要があります。 - valueは構造化複製可能であればなんでもよいです。
new OriginStorage()は型引数として保存するKey-Valueペアの型をもらうことができます。
type StorageSchema = {
count: number;
kind: 1 | 2;
};
const storage = new OriginStorage<StorageSchema>("with_schema");
await storage.getItem("invalid");
// ^^^^^^^^^ ... Error
await storage.setItem("kind", 99);
// ^^ ... Error
await storage.getItem("count") // @type {number | undefined} (undefinedの可能性がある点に注意!)また、has()やentries()など、ECMAScript Mapに似たメソッドもいくつか用意されています。
引数やメソッドなどの詳細はJSRのドキュメントページ及びJSDocコメントを参照してください。
- バグ報告: GitHub Issues
- Pull Request: Issueを立てたうえで、メンテナーの指示を待ってください。メンテナーの指示のないPRは却下されます。
- Format:
pnpm run fmt(pnpm run fmt:check) - Lint:
pnpm run lint:fix(pnpm run lint) - Test:
pnpm run test- Check slow-types:
pnpm run test:jsr
- Check slow-types: