70 lines
1.3 KiB
TypeScript
70 lines
1.3 KiB
TypeScript
import {
|
|
clear,
|
|
createStore,
|
|
del,
|
|
delMany,
|
|
entries as getEntries,
|
|
get,
|
|
getMany,
|
|
keys as getKeys,
|
|
set,
|
|
setMany,
|
|
update,
|
|
values as getValues,
|
|
} from 'idb-keyval';
|
|
|
|
class IdbStore {
|
|
public store: ReturnType<typeof createStore>;
|
|
|
|
constructor(name: string) {
|
|
this.store = createStore(name, 'store');
|
|
}
|
|
|
|
public set(key: string, value: any) {
|
|
return set(key, value, this.store);
|
|
}
|
|
|
|
public setMany(entries: [string, any][]) {
|
|
return setMany(entries, this.store);
|
|
}
|
|
|
|
public get<T = unknown>(key: string) {
|
|
return get<T>(key, this.store);
|
|
}
|
|
|
|
public getMany<T = unknown>(keys: string[]) {
|
|
return getMany<T>(keys, this.store);
|
|
}
|
|
|
|
public clear() {
|
|
return clear(this.store);
|
|
}
|
|
|
|
public del(key: string) {
|
|
return del(key, this.store);
|
|
}
|
|
|
|
public delMany(keys: string[]) {
|
|
return delMany(keys, this.store);
|
|
}
|
|
|
|
public entries() {
|
|
return getEntries(this.store);
|
|
}
|
|
|
|
public keys() {
|
|
return getKeys(this.store);
|
|
}
|
|
|
|
public values<T = unknown>() {
|
|
return getValues<T>(this.store);
|
|
}
|
|
|
|
public update<T = unknown>(key: string, updater: (oldValue: T | undefined) => T) {
|
|
return update(key, updater, this.store);
|
|
}
|
|
}
|
|
|
|
export const MAIN_IDB_STORE = new IdbStore('tt-data');
|
|
export const PASSCODE_IDB_STORE = new IdbStore('tt-passcode');
|