@lifi/sdk
Version:
LI.FI Any-to-Any Cross-Chain-Swap SDK
38 lines • 1.22 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSuiClients = exports.ensureClients = void 0;
exports.callSuiWithRetry = callSuiWithRetry;
const types_1 = require("@lifi/types");
const client_1 = require("@mysten/sui/client");
const rpc_js_1 = require("../rpc.js");
const clients = new Map();
const ensureClients = async () => {
const rpcUrls = await (0, rpc_js_1.getRpcUrls)(types_1.ChainId.SUI);
for (const rpcUrl of rpcUrls) {
if (!clients.get(rpcUrl)) {
const client = new client_1.SuiClient({ url: rpcUrl });
clients.set(rpcUrl, client);
}
}
};
exports.ensureClients = ensureClients;
const getSuiClients = async () => {
await (0, exports.ensureClients)();
return Array.from(clients.values());
};
exports.getSuiClients = getSuiClients;
async function callSuiWithRetry(fn) {
await (0, exports.ensureClients)();
let lastError = null;
for (const client of clients.values()) {
try {
const result = await fn(client);
return result;
}
catch (error) {
lastError = error;
}
}
throw lastError;
}
//# sourceMappingURL=suiClient.js.map
;