UNPKG

@wizecorp/stratusjs

Version:
175 lines 4.68 kB
/** * Storage service for client-side data persistence */ export class LocalStorageService { constructor(prefix = 'stratus_') { Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: 'LocalStorageService' }); Object.defineProperty(this, "prefix", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.prefix = prefix; } get(key) { if (typeof window === 'undefined') { return null; // SSR safety } try { const item = localStorage.getItem(this.getKey(key)); return item ? JSON.parse(item) : null; } catch { return null; } } set(key, value) { if (typeof window === 'undefined') { return; // SSR safety } try { localStorage.setItem(this.getKey(key), JSON.stringify(value)); } catch (error) { console.warn('Failed to save to localStorage:', error); } } remove(key) { if (typeof window === 'undefined') { return; // SSR safety } localStorage.removeItem(this.getKey(key)); } clear() { if (typeof window === 'undefined') { return; // SSR safety } // Only clear items with our prefix const keys = Object.keys(localStorage); keys.forEach(key => { if (key.startsWith(this.prefix)) { localStorage.removeItem(key); } }); } has(key) { if (typeof window === 'undefined') { return false; // SSR safety } return localStorage.getItem(this.getKey(key)) !== null; } getKey(key) { return `${this.prefix}${key}`; } } /** * Session storage service */ export class SessionStorageService { constructor(prefix = 'stratus_') { Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: 'SessionStorageService' }); Object.defineProperty(this, "prefix", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.prefix = prefix; } get(key) { if (typeof window === 'undefined') { return null; // SSR safety } try { const item = sessionStorage.getItem(this.getKey(key)); return item ? JSON.parse(item) : null; } catch { return null; } } set(key, value) { if (typeof window === 'undefined') { return; // SSR safety } try { sessionStorage.setItem(this.getKey(key), JSON.stringify(value)); } catch (error) { console.warn('Failed to save to sessionStorage:', error); } } remove(key) { if (typeof window === 'undefined') { return; // SSR safety } sessionStorage.removeItem(this.getKey(key)); } clear() { if (typeof window === 'undefined') { return; // SSR safety } // Only clear items with our prefix const keys = Object.keys(sessionStorage); keys.forEach(key => { if (key.startsWith(this.prefix)) { sessionStorage.removeItem(key); } }); } has(key) { if (typeof window === 'undefined') { return false; // SSR safety } return sessionStorage.getItem(this.getKey(key)) !== null; } getKey(key) { return `${this.prefix}${key}`; } } /** * In-memory storage service (for SSR or when storage is not available) */ export class MemoryStorageService { constructor() { Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: 'MemoryStorageService' }); Object.defineProperty(this, "storage", { enumerable: true, configurable: true, writable: true, value: new Map() }); } get(key) { return this.storage.get(key) || null; } set(key, value) { this.storage.set(key, value); } remove(key) { this.storage.delete(key); } clear() { this.storage.clear(); } has(key) { return this.storage.has(key); } } //# sourceMappingURL=StorageService.js.map