export interface IRendererStorage { getItem (key: string, fallbackValue: T): Promise setItem (key: string, value: T): Promise removeItem (key: string): Promise } const localRendererStorage: IRendererStorage = { async getItem (key: string, fallbackValue: T): Promise { try { const raw = localStorage.getItem(key) if (raw === null) { return fallbackValue } return JSON.parse(raw) as T } catch (error) { console.error(error) return fallbackValue } }, async setItem (key: string, value: T): Promise { try { localStorage.setItem(key, JSON.stringify(value)) } catch (error) { console.error(error) } }, async removeItem (key: string): Promise { try { localStorage.removeItem(key) } catch (error) { console.error(error) } } } export const rendererStorage = localRendererStorage