@exromany/lido-csm-sdk
Version:
[](https://github.com/lidofinance/lido-csm-sdk/blob/main/LICENSE.txt) [](h
73 lines • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.cleanExpiredKeys = exports.isKeyExpired = exports.getFromLocalStorage = exports.saveToLocalStorage = void 0;
const constants_js_1 = require("./constants.js");
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,
};
}
};
const saveToLocalStorage = (key, value) => {
const result = trySerializeToLocalStorage(key, value);
if (!result.success) {
console.error('[keys cache localStorage] save error:', result.error);
}
};
exports.saveToLocalStorage = saveToLocalStorage;
const getFromLocalStorage = (key) => {
const result = tryDeserializeFromLocalStorage(key);
if (result.success) {
return result.value;
}
else {
if (!localStorage.getItem(key)) {
return null;
}
console.error('[keys cache localStorage] get error:', result.error);
return null;
}
};
exports.getFromLocalStorage = getFromLocalStorage;
const isKeyExpired = (timestamp) => {
const now = Date.now();
const age = now - timestamp;
return age >= constants_js_1.KEY_TTL_DURATION;
};
exports.isKeyExpired = isKeyExpired;
const cleanExpiredKeys = (keys) => {
return Object.entries(keys).reduce((cleanedKeys, [pubKey, timestamp]) => {
if (!(0, exports.isKeyExpired)(timestamp)) {
cleanedKeys[pubKey] = timestamp;
}
return cleanedKeys;
}, {});
};
exports.cleanExpiredKeys = cleanExpiredKeys;
//# sourceMappingURL=storage.js.map