@knine-sdk/fetch
Version:
Fetchers for Knine projects.
32 lines (29 loc) • 1.07 kB
JavaScript
import { CHAINS } from '@knine-sdk/constants';
import invariant from 'tiny-invariant';
const getInfuraRPCUrl = (chainId, apiKey) => {
invariant(apiKey && typeof apiKey === 'string', 'API key should be a string');
switch (chainId) {
case CHAINS.Mainnet:
return `https://mainnet.infura.io/v3/${apiKey}`;
default:
invariant(false, 'Chain is not supported');
}
};
const getAlchemyRPCUrl = (chainId, apiKey) => {
invariant(apiKey && typeof apiKey === 'string', 'API key should be a string');
switch (chainId) {
case CHAINS.Mainnet:
return `https://eth-mainnet.alchemyapi.io/v2/${apiKey}`;
default:
invariant(false, 'Chain is not supported');
}
};
const getRPCUrls = (chainId, keys) => {
const urls = [];
if (keys.alchemy)
urls.push(getAlchemyRPCUrl(chainId, keys.alchemy));
if (keys.infura)
urls.push(getInfuraRPCUrl(chainId, keys.infura));
return urls;
};
export { getAlchemyRPCUrl, getInfuraRPCUrl, getRPCUrls };