UNPKG

@lifi/sdk

Version:

LI.FI Any-to-Any Cross-Chain-Swap SDK

45 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getJitoConnections = exports.getSolanaConnections = void 0; exports.callSolanaWithRetry = callSolanaWithRetry; const types_1 = require("@lifi/types"); const web3_js_1 = require("@solana/web3.js"); const rpc_js_1 = require("../rpc.js"); const JitoConnection_js_1 = require("./jito/JitoConnection.js"); const connections = new Map(); const ensureConnections = async () => { const rpcUrls = await (0, rpc_js_1.getRpcUrls)(types_1.ChainId.SOL); for (const rpcUrl of rpcUrls) { if (!connections.get(rpcUrl)) { const connection = (await JitoConnection_js_1.JitoConnection.isJitoRpc(rpcUrl)) ? new JitoConnection_js_1.JitoConnection(rpcUrl) : new web3_js_1.Connection(rpcUrl); connections.set(rpcUrl, connection); } } }; const getSolanaConnections = async () => { await ensureConnections(); return Array.from(connections.values()).filter((conn) => conn instanceof web3_js_1.Connection && !(conn instanceof JitoConnection_js_1.JitoConnection)); }; exports.getSolanaConnections = getSolanaConnections; const getJitoConnections = async () => { await ensureConnections(); return Array.from(connections.values()).filter((conn) => conn instanceof JitoConnection_js_1.JitoConnection); }; exports.getJitoConnections = getJitoConnections; async function callSolanaWithRetry(fn) { await ensureConnections(); let lastError = null; for (const connection of connections.values()) { try { const result = await fn(connection); return result; } catch (error) { lastError = error; } } throw lastError || new Error('No Solana RPC connections available'); } //# sourceMappingURL=connection.js.map