fix localstorage

This commit is contained in:
Toshit Chawda 2024-07-13 11:49:45 -07:00
parent 29bbda0700
commit 80abf239b4
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D

View file

@ -1,56 +1,56 @@
import IDBMapSync from "@webreflection/idb-map/sync"; import IDBMapSync from "@webreflection/idb-map/sync";
const store = new IDBMapSync(window.__location.host, {
prefix: "Storage",
durability: "relaxed"
});
await store.sync();
function storageProxy(scope: Storage): Storage { function storageProxy(scope: Storage): Storage {
const store = new IDBMapSync(window.__location.host);
return new Proxy(scope, { return new Proxy(scope, {
get(target, prop) { get(target, prop) {
switch (prop) { switch (prop) {
case "getItem": case "getItem":
return (key: string) => { return (key: string) => {
return store.get(key); return store.get(key);
} }
case "setItem": case "setItem":
return (key: string, value: string) => { return (key: string, value: string) => {
store.set(key, value); store.set(key, value);
} store.sync();
}
case "removeItem": case "removeItem":
return (key: string) => { return (key: string) => {
store.delete(key); store.delete(key);
} store.sync();
}
case "clear": case "clear":
return () => { return () => {
store.clear(); store.clear();
} store.sync();
}
case "key": case "key":
return (index: number) => { return (index: number) => {
store.keys()[index]; store.keys()[index];
} }
case "length":
return store.size;
default:
return store.get(prop);
}
},
case "length": set(target, prop, value) {
return store.size; store.set(prop, value);
store.sync();
default: },
return store.get(prop);
}
},
defineProperty(target, property, attributes) { defineProperty(target, property, attributes) {
store.set(property as string, attributes.value); target.setItem(property as string, attributes.value);
return true; return true;
}, },
}) })
} }
const localStorageProxy = storageProxy(window.localStorage); const localStorageProxy = storageProxy(window.localStorage);
@ -60,4 +60,4 @@ delete window.localStorage;
delete window.sessionStorage; delete window.sessionStorage;
window.localStorage = localStorageProxy; window.localStorage = localStorageProxy;
window.sessionStorage = sessionStorageProxy; window.sessionStorage = sessionStorageProxy;