UNPKG

@neuroequality/neuroadapt-core

Version:

Core sensory, cognitive, and preference management for NeuroAdapt SDK

100 lines (99 loc) 2.54 kB
class LocalStoragePreferenceStorage { constructor(prefix = "neuroadapt:preferences:") { this.prefix = prefix; } async get(key) { try { const data = localStorage.getItem(this.getStorageKey(key)); if (!data) { return null; } return JSON.parse(data); } catch (error) { console.warn(`Failed to get preferences for key "${key}":`, error); return null; } } async set(key, preferences) { try { const serialized = JSON.stringify(preferences, null, 2); localStorage.setItem(this.getStorageKey(key), serialized); } catch (error) { throw new Error(`Failed to save preferences for key "${key}": ${error instanceof Error ? error.message : "Unknown error"}`); } } async remove(key) { try { localStorage.removeItem(this.getStorageKey(key)); } catch (error) { console.warn(`Failed to remove preferences for key "${key}":`, error); } } async list() { try { const keys = []; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key == null ? void 0 : key.startsWith(this.prefix)) { keys.push(key.substring(this.prefix.length)); } } return keys; } catch (error) { console.warn("Failed to list preference keys:", error); return []; } } async exists(key) { try { return localStorage.getItem(this.getStorageKey(key)) !== null; } catch (error) { console.warn(`Failed to check existence for key "${key}":`, error); return false; } } getStorageKey(key) { return `${this.prefix}${key}`; } /** * Clear all preferences from storage (for testing/reset) */ async clear() { try { const keys = await this.list(); for (const key of keys) { await this.remove(key); } } catch (error) { console.warn("Failed to clear preferences storage:", error); } } } class MemoryPreferenceStorage { constructor() { this.storage = /* @__PURE__ */ new Map(); } async get(key) { return this.storage.get(key) ?? null; } async set(key, preferences) { this.storage.set(key, preferences); } async remove(key) { this.storage.delete(key); } async list() { return Array.from(this.storage.keys()); } async exists(key) { return this.storage.has(key); } async clear() { this.storage.clear(); } } export { LocalStoragePreferenceStorage, MemoryPreferenceStorage }; //# sourceMappingURL=storage.js.map