import { SessionConfig, SessionConfigStore } from "./SessionStore.js"; const CLIENT_PREFIX = "wildcard"; const STORE_PREFIX = CLIENT_PREFIX + "-session-store"; export class LocalStorageClientStore implements SessionConfigStore { async storeNewSessionConfig(sessionConfig: SessionConfig): Promise { const sessionUuid = crypto.randomUUID(); const key = STORE_PREFIX + "-" + sessionUuid; const stringifiedConfig = JSON.stringify(sessionConfig); localStorage.setItem(key, stringifiedConfig); return sessionUuid; } async overrideExistingSessionConfig( sessionUuid: string, sessionConfig: SessionConfig, ): Promise { const key = STORE_PREFIX + "-" + sessionUuid; const stringifiedConfig = JSON.stringify(sessionConfig); localStorage.setItem(key, stringifiedConfig); return; } async getSessionConfigByUuid(sessionUuid: string): Promise { const key = STORE_PREFIX + "-" + sessionUuid; const sessionConfigString = localStorage.getItem(key); if (sessionConfigString == null) return null; const sessionConfig = JSON.parse(sessionConfigString); return sessionConfig; } async getSessionConfigs(): Promise | null> { if (localStorage.length == 0) return null; let sessionConfigs = new Map(); for (var i = 1; i < localStorage.length; i++) { let currentItemKey = localStorage.key(i); if (currentItemKey?.startsWith(STORE_PREFIX)) { const key = currentItemKey.replace(STORE_PREFIX + "-", ""); const value = JSON.parse(localStorage.getItem(currentItemKey)!); sessionConfigs.set(key, value); } } return sessionConfigs; } }