//@ts-check import JadefinIntegrity from "./JadefinIntegrity.js"; class JadefinStorage { getKey; cache = []; /** * @param {(name: string) => string} getKey */ constructor(getKey) { this.getKey = getKey; } /** * @param {string} name * @param {any} [fallback] */ get(name, fallback) { let value = this.cache[name]; if (value != null && value != undefined) { return value; } value = localStorage.getItem(this.getKey(name)); if (value != null && value != undefined) { try { return this.cache[name] = JSON.parse(value); } catch { } } return this.cache[name] = fallback; } /** * @param {string} name * @param {any} value */ set(name, value) { localStorage.setItem(this.getKey(name), JSON.stringify(this.cache[name] = value)); } } // @ts-ignore JadefinStorage = JadefinIntegrity("JadefinStorage", import.meta.url, () => JadefinStorage); export default JadefinStorage;