UNPKG

@wormhole-foundation/sdk-connect

Version:

The core package for the Connect SDK, used in conjunction with 1 or more of the chain packages

65 lines 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchIbcXfer = exports.isTokenBridgeVaaRedeemed = exports.retry = void 0; const sdk_definitions_1 = require("@wormhole-foundation/sdk-definitions"); const config_js_1 = require("./config.js"); async function retry(task, interval, timeout = config_js_1.DEFAULT_TASK_TIMEOUT, title) { const maxRetries = Math.floor(timeout / interval); let retries = 0; return new Promise((resolve, reject) => { task().then((result) => { if (result !== null) { resolve(result); return; } let intervalId = setInterval(async () => { if (retries >= maxRetries) { clearInterval(intervalId); resolve(null); return; } const result = await task(); if (result !== null) { clearInterval(intervalId); resolve(result); } else if (title) { console.log(`Retrying ${title}, attempt ${retries}/${maxRetries} `); } retries++; }, interval); }); }); } exports.retry = retry; async function isTokenBridgeVaaRedeemed(tb, vaa) { try { const isRedeemed = await tb.isTransferCompleted(vaa); // Only return a real value if its true, otherwise return null // signaling that we should retry return isRedeemed ? isRedeemed : null; } catch (e) { console.error(`Caught an error checking if VAA is redeemed: ${e}\n`); return null; } } exports.isTokenBridgeVaaRedeemed = isTokenBridgeVaaRedeemed; async function fetchIbcXfer(wcIbc, msg) { try { if ((0, sdk_definitions_1.isIbcMessageId)(msg)) return await wcIbc.lookupTransferFromIbcMsgId(msg); else if ((0, sdk_definitions_1.isTransactionIdentifier)(msg)) return await wcIbc.lookupTransferFromTx(msg.txid); else if ((0, sdk_definitions_1.isGatewayTransferMsg)(msg) || (0, sdk_definitions_1.isGatewayTransferWithPayloadMsg)(msg)) return await wcIbc.lookupTransferFromMsg(msg); else throw new Error("Invalid message type:" + JSON.stringify(msg)); } catch (e) { console.error("Caught an error looking for ibc transfer: ", e); } return null; } exports.fetchIbcXfer = fetchIbcXfer; //# sourceMappingURL=tasks.js.map