UNPKG

@exromany/lido-csm-sdk

Version:

[![GitHub license](https://img.shields.io/github/license/lidofinance/lido-csm-sdk?color=limegreen)](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [![Version npm](https://img.shields.io/npm/v/@lidofinance/lido-csm-sdk?label=version)](h

68 lines 1.99 kB
import { KEY_TTL_DURATION } from './constants.js'; // Low-level storage functions const trySerializeToLocalStorage = (key, value) => { try { const item = JSON.stringify(value); localStorage.setItem(key, item); return { success: true }; } catch (error) { return { success: false, error: error, }; } }; const tryDeserializeFromLocalStorage = (key) => { try { const item = localStorage.getItem(key); if (item === null) { return { success: false, error: new Error(`Item with key "${key}" does not exist`), }; } const value = JSON.parse(item); return { success: true, value }; } catch (error) { return { success: false, error: error, }; } }; // Error-swallowing wrappers for localStorage operations export const saveToLocalStorage = (key, value) => { const result = trySerializeToLocalStorage(key, value); if (!result.success) { console.error('[keys cache localStorage] save error:', result.error); } }; export const getFromLocalStorage = (key) => { const result = tryDeserializeFromLocalStorage(key); if (result.success) { return result.value; } else { if (!localStorage.getItem(key)) { return null; // Item doesn't exist, don't log error } console.error('[keys cache localStorage] get error:', result.error); return null; } }; export const isKeyExpired = (timestamp) => { const now = Date.now(); const age = now - timestamp; return age >= KEY_TTL_DURATION; }; export const cleanExpiredKeys = (keys) => { return Object.entries(keys).reduce((cleanedKeys, [pubKey, timestamp]) => { if (!isKeyExpired(timestamp)) { cleanedKeys[pubKey] = timestamp; } return cleanedKeys; }, {}); }; //# sourceMappingURL=storage.js.map