@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
JavaScript
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 };