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

51 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkKeys = exports.removeKeys = exports.saveKeys = void 0; const index_js_1 = require("../local-storage/index.js"); const KEY_TTL_IN_BLOCKS = 93_000; const getStorageKey = (chainId) => `lido-csm-keys-${chainId}`; const setKeys = (chainId, keys) => (0, index_js_1.saveToLocalStorage)(getStorageKey(chainId), keys); const getKeys = (chainId) => (0, index_js_1.getFromLocalStorage)(getStorageKey(chainId)) || {}; const getIsKeyToKeep = (keyBlock, currentBlock) => { if (!keyBlock || !currentBlock) return true; const age = Math.max(currentBlock - keyBlock, 0); const isOld = age >= KEY_TTL_IN_BLOCKS; return !isOld; }; const cleanKeys = (keys, blockNumber) => { return Object.entries(keys).reduce((updatedKeys, [pubKey, keyBlockNumber]) => { const keepKey = getIsKeyToKeep(keyBlockNumber, blockNumber); if (keepKey) { updatedKeys[pubKey] = keyBlockNumber; } return updatedKeys; }, {}); }; const saveKeys = (pubKeys, chainId, blockNumber) => { const storedKeys = getKeys(chainId); const updatedKeys = pubKeys.reduce((mergedKeys, pubKey) => { mergedKeys[pubKey] = blockNumber; return mergedKeys; }, cleanKeys(storedKeys, blockNumber)); setKeys(chainId, updatedKeys); }; exports.saveKeys = saveKeys; const removeKeys = (pubKeys, chainId, blockNumber) => { const storedKeys = getKeys(chainId); const updatedKeys = pubKeys.reduce((mergedKeys, pubKey) => { delete mergedKeys[pubKey]; return mergedKeys; }, cleanKeys(storedKeys, blockNumber)); setKeys(chainId, updatedKeys); }; exports.removeKeys = removeKeys; const checkKeys = (pubKeys, chainId, blockNumber) => { const storedKeys = getKeys(chainId); return pubKeys.filter((pubKey) => { const keyBlockNumber = storedKeys[pubKey]; return keyBlockNumber ? getIsKeyToKeep(keyBlockNumber, blockNumber) : false; }); }; exports.checkKeys = checkKeys; //# sourceMappingURL=cached-keys.js.map