UNPKG

butterjs-sdk

Version:
65 lines (64 loc) 2.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.batchGetToChainToken = exports.batchGetRelayChainToken = void 0; const web3_1 = __importDefault(require("web3")); const bn_js_1 = __importDefault(require("bn.js")); /** * get relaychain token in batch to improve speed * @param contract * @param fromChainId * @param tokenAddressArr * @param mapRpcUrl */ async function batchGetRelayChainToken(contract, fromChainId, tokenAddressArr, mapRpcUrl) { let calls = []; for (let i = 0; i < tokenAddressArr.length; i++) { const fromTokenAddress = tokenAddressArr[i]; calls.push(contract.methods.getRelayChainToken(fromChainId, fromTokenAddress).call); } return await _makeBatchRequest(calls, mapRpcUrl); } exports.batchGetRelayChainToken = batchGetRelayChainToken; /** * get tochain token in batch to improve speed * @param contract * @param tokenAddressArr * @param toChain * @param mapRpcUrl */ async function batchGetToChainToken(contract, tokenAddressArr, toChain, mapRpcUrl) { let calls = []; for (let i = 0; i < tokenAddressArr.length; i++) { const tokenAddress = tokenAddressArr[i]; calls.push(contract.methods.getToChainToken(tokenAddress, new bn_js_1.default(toChain, 10)).call); } return await _makeBatchRequest(calls, mapRpcUrl); } exports.batchGetToChainToken = batchGetToChainToken; /** * make actual batch request using web3.js's batch request * @param calls * @param mapRpcUrl */ function _makeBatchRequest(calls, mapRpcUrl) { const web3 = new web3_1.default(mapRpcUrl); const batch = new web3.BatchRequest(); const promises = calls.map((call) => { return new Promise((resolve, reject) => { // @ts-ignore const req = call.request({}, (err, data) => { if (err) reject(err); else resolve(data); }); batch.add(req); }); }); batch.execute(); // @ts-ignore return Promise.all(promises); }