@lido-sdk/fetch
v2.2.1
Published
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
Downloads
424
Readme
⚠️DEPRECATION WARNING⚠️
This project is being slowly deprecated and may not receive further updates. Check out modern Lido SDK to access latest functionality. It is actively maintained and is built for interacting with Lido Protocol.
Fetchers
Fetchers for Lido Finance projects. Part of Lido JS SDK
Install
yarn add @lido-sdk/fetch
Fetch
node-fetch package NPM, Github
import { fetch } from '@lido-sdk/fetch';
const response = await fetch('https://example.com');
const result = await response.json();
Fetch With Fallbacks
A wrapper over fetch
which takes an array of URLs instead of a single URL. If a request throws an exception, it takes the following URL from the array and repeats the request to it.
import { fetchWithFallbacks } from '@lido-sdk/fetch';
const urls = ['https://example.com', 'https://fallback.com'];
const response = await fetchWithFallbacks(urls);
const result = await response.json();
Fetch RPC
A wrapper over fetchWithFallbacks
, which is useful as a backend part of proxying RPC requests from frontend to API provider.
import { fetchRPC } from '@lido-sdk/fetch';
const options = {
urls: [
'http://your_rpc_server.url',
(chainId) => `http://your_rpc_server.url/?chainId=${chainId}`,
],
providers: {
infura: 'INFURA_API_KEY',
alchemy: 'ALCHEMY_API_KEY',
},
};
const rpc = async (req, res) => {
// chainId and body from request
const chainId = Number(req.query.chainId);
const body = JSON.stringify(req.body);
const response = await fetchRPC(chainId, { body, ...options });
const result = await response.json();
res.json(result);
};
Options
Options extend RequestInit
interface with the urls
and providers
. urls
have priority over providers
.
import { CHAINS } from '@lido-sdk/constants';
import { RequestInit } from 'node-fetch';
interface FetchRPCOptions extends RequestInit {
providers?: {
infura?: string;
alchemy?: string;
};
urls?: Array<string, (chainId: CHAINS) => string>;
}
Helpers
getInfuraRPCUrl
Returns infura endpoint for API key and chainId
import { getInfuraRPCUrl } from '@lido-sdk/fetch';
import { CHAINS } from '@lido-sdk/constants';
const url = getInfuraRPCUrl(CHAINS.Mainnet, 'YOUR_API_KEY');
console.log(url); // https://mainnet.infura.io/v3/YOUR_API_KEY
getAlchemyRPCUrl
Returns alchemy endpoint for API key and chainId
import { getAlchemyRPCUrl } from '@lido-sdk/fetch';
import { CHAINS } from '@lido-sdk/constants';
const url = getAlchemyRPCUrl(CHAINS.Mainnet, 'YOUR_API_KEY');
console.log(url); // https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY