UNPKG

@lido-sdk/providers

Version:

This project is being slowly deprecated and may not receive further updates. Check out [modern Lido SDK](https://github.com/lidofinance/lido-ethereum-sdk/pulls) to access latest functionality. It is actively maintained and is built for interacting with Li

26 lines (23 loc) 1.15 kB
import { JsonRpcProvider, JsonRpcBatchProvider, StaticJsonRpcProvider } from '@ethersproject/providers'; import { StaticJsonRpcBatchProvider } from './staticJsonRpcBatchProvider.js'; // function factory for creating a provider getter const createProviderGetter = (Provider) => { const cache = new Map(); return (chainId, url, cacheSeed = 0, pollingInterval = null) => { const cacheKey = `${chainId}-${cacheSeed}-${url}`; let provider = cache.get(cacheKey); if (!provider) { provider = new Provider(url, chainId); cache.set(cacheKey, provider); } if (pollingInterval) { provider.pollingInterval = pollingInterval; } return provider; }; }; const getRpcProvider = createProviderGetter(JsonRpcProvider); const getRpcBatchProvider = createProviderGetter(JsonRpcBatchProvider); const getStaticRpcProvider = createProviderGetter(StaticJsonRpcProvider); const getStaticRpcBatchProvider = createProviderGetter(StaticJsonRpcBatchProvider); export { getRpcBatchProvider, getRpcProvider, getStaticRpcBatchProvider, getStaticRpcProvider };