@daflan/keyward-platform-web
v0.0.9
Published
Web storage backend for Keyward (IndexedDB + WebCrypto)
Readme
@daflan/keyward-platform-web
Web storage backend for Keyward. Uses IndexedDB for persistent key-value storage with user-scoped key isolation.
Install
yarn add @daflan/keyward-platform-webUsage
import { Keyward, IndexedDBBackend } from '@daflan/keyward-platform-web';
const keyward = new Keyward(new IndexedDBBackend());
// Set active user
keyward.setUserId('user_507f1f');
// Read/write
await keyward.set({ key: 'auth_token', scope: 'user' }, token);
const token = await keyward.get({ key: 'auth_token', scope: 'user' });
// Wipe all data for a user
await keyward.wipeUser('user_507f1f');With Codegen (recommended)
yarn add -D @daflan/keyward-codegen
npx keyward-codegen --config keyward.keys.jsonimport { Keyward, IndexedDBBackend } from '@daflan/keyward-platform-web';
import { KeywardKeys } from './generated/KeywardKeys';
const keyward = new Keyward(new IndexedDBBackend());
keyward.setUserId(user._id);
await keyward.set(KeywardKeys.AUTH_TOKEN, token);Custom Backend
Implement the KeywardBackend interface to use a different storage engine:
import { Keyward, type KeywardBackend } from '@daflan/keyward-platform-web';
const memoryBackend: KeywardBackend = {
store: new Map<string, string>(),
async get(key) { return this.store.get(key) ?? null; },
async set(key, value) { this.store.set(key, value); },
async remove(key) { this.store.delete(key); },
async keys() { return [...this.store.keys()]; },
async clear() { this.store.clear(); },
};
const keyward = new Keyward(memoryBackend);