swarpc
Version:
Full type-safe RPC library for service worker -- move things off of the UI thread with ease!
40 lines (39 loc) • 889 B
JavaScript
export class FauxLocalStorage {
data;
keysOrder;
constructor(data) {
this.data = data;
this.keysOrder = Object.keys(data);
}
setItem(key, value) {
if (!this.hasItem(key))
this.keysOrder.push(key);
this.data[key] = value;
}
getItem(key) {
return this.data[key];
}
hasItem(key) {
return Object.hasOwn(this.data, key);
}
removeItem(key) {
if (!this.hasItem(key))
return;
delete this.data[key];
this.keysOrder = this.keysOrder.filter((k) => k !== key);
}
clear() {
this.data = {};
this.keysOrder = [];
}
key(index) {
return this.keysOrder[index];
}
get length() {
return this.keysOrder.length;
}
register(subject) {
// @ts-expect-error
subject.localStorage = this;
}
}