@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
JavaScript
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
;