@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
33 lines (28 loc) • 1.35 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var providers = require('@ethersproject/providers');
var staticJsonRpcBatchProvider = require('./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(providers.JsonRpcProvider);
const getRpcBatchProvider = createProviderGetter(providers.JsonRpcBatchProvider);
const getStaticRpcProvider = createProviderGetter(providers.StaticJsonRpcProvider);
const getStaticRpcBatchProvider = createProviderGetter(staticJsonRpcBatchProvider.StaticJsonRpcBatchProvider);
exports.getRpcBatchProvider = getRpcBatchProvider;
exports.getRpcProvider = getRpcProvider;
exports.getStaticRpcBatchProvider = getStaticRpcBatchProvider;
exports.getStaticRpcProvider = getStaticRpcProvider;