You can replace localStorage with any other storage mechanism using setPersistentEngine.
Your engine must provide:
- A
storage object implementing set, get, and deleteProperty. - An
events object implementing addEventListener and removeEventListener.
The events.perKey flag determines if PersistentMap should add individual listeners for each key or use a single global listener.
import { setPersistentEngine, PersistentListener, PersistentEvent } from '@nanostores/persistent'
// 1. Implement storage
const storage = new Proxy({}, {
set(target, name, value) { target[name] = value; return true },
get(target, name) { return target[name] },
deleteProperty(target, name) { delete target[name]; return true }
})
// 2. Implement events
const events = {
addEventListener(key: string, callback: PersistentListener) { /* ... */ },
removeEventListener(key: string, callback: PersistentListener) { /* ... */ },
perKey: false
}
setPersistentEngine(storage, events)