From 44123e69fc826ec1ae9e338a74b946f2159bb273 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 11:00:49 +0700 Subject: [PATCH 01/13] chore: move evm cli-utils to common --- {evm => common}/cli-utils.js | 0 common/index.js | 3 +++ evm/balances.js | 2 +- evm/broadcast-transactions.js | 2 +- evm/chains.js | 2 +- evm/check-finality.js | 2 +- evm/check-wallet-balance.js | 2 +- evm/contracts-deployment-test.js | 2 +- evm/deploy-amplifier-gateway.js | 2 +- evm/deploy-contract.js | 2 +- evm/deploy-gateway-v6.2.x.js | 2 +- evm/deploy-its.js | 2 +- evm/deploy-test-gateway-token.js | 2 +- evm/deploy-upgradable.js | 2 +- evm/determine-finality-latency.js | 2 +- evm/execute-contract.js | 2 +- evm/gas-service.js | 2 +- evm/gateway.js | 2 +- evm/interchainTokenFactory.js | 2 +- evm/its.js | 2 +- evm/min-deposit-proposal.js | 2 +- evm/multisig.js | 2 +- evm/operators.js | 2 +- evm/ownership.js | 2 +- evm/remove-info.js | 2 +- evm/send-tokens.js | 2 +- evm/sign-message.js | 2 +- evm/update-nonces.js | 2 +- evm/update-static-gas-options.js | 2 +- evm/verify-contract.js | 2 +- 30 files changed, 31 insertions(+), 28 deletions(-) rename {evm => common}/cli-utils.js (100%) create mode 100644 common/index.js diff --git a/evm/cli-utils.js b/common/cli-utils.js similarity index 100% rename from evm/cli-utils.js rename to common/cli-utils.js diff --git a/common/index.js b/common/index.js new file mode 100644 index 00000000..fb9a3366 --- /dev/null +++ b/common/index.js @@ -0,0 +1,3 @@ +module.exports = { + ...require('./cli-utils'), +} diff --git a/evm/balances.js b/evm/balances.js index 23c5563b..f383fb2b 100644 --- a/evm/balances.js +++ b/evm/balances.js @@ -4,7 +4,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider } = ethers; const { Command } = require('commander'); const { mainProcessor, printWalletInfo } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getWallet } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/broadcast-transactions.js b/evm/broadcast-transactions.js index 6b3cbead..da8b5b28 100644 --- a/evm/broadcast-transactions.js +++ b/evm/broadcast-transactions.js @@ -8,7 +8,7 @@ const { } = ethers; const { printError, printInfo, printWarn, getConfigByChainId, prompt, loadConfig } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { sendTransaction, getSignedTx, storeSignedTx } = require('./sign-utils'); async function processCommand(config, _, options, file) { diff --git a/evm/chains.js b/evm/chains.js index 0ebe163a..7771b2cb 100644 --- a/evm/chains.js +++ b/evm/chains.js @@ -2,7 +2,7 @@ const { Command } = require('commander'); const { mainProcessor, printInfo } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function processCommand(_, chain, options) { printInfo('Axelar Chain Name', chain.axelarId); diff --git a/evm/check-finality.js b/evm/check-finality.js index 8174199d..9de2366b 100644 --- a/evm/check-finality.js +++ b/evm/check-finality.js @@ -6,7 +6,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { printInfo, mainProcessor, isKeccak256Hash, sleep } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function processCommand(_config, chain, options) { const txHash = options.txHash; diff --git a/evm/check-wallet-balance.js b/evm/check-wallet-balance.js index 011c5b25..7dfc59b4 100644 --- a/evm/check-wallet-balance.js +++ b/evm/check-wallet-balance.js @@ -5,7 +5,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider, BigNumber } = ethers; const { printError, mainProcessor } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getNonceFileData } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/contracts-deployment-test.js b/evm/contracts-deployment-test.js index cd894685..8e9c8b8a 100644 --- a/evm/contracts-deployment-test.js +++ b/evm/contracts-deployment-test.js @@ -9,7 +9,7 @@ const { const { Command, Option } = require('commander'); const { mainProcessor } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function processCommand(config, chain, options) { const wallet = new Wallet(options.privateKey, new JsonRpcProvider(chain.rpc)); diff --git a/evm/deploy-amplifier-gateway.js b/evm/deploy-amplifier-gateway.js index a0b0bb10..eb10fd6c 100644 --- a/evm/deploy-amplifier-gateway.js +++ b/evm/deploy-amplifier-gateway.js @@ -31,7 +31,7 @@ const { getDeployOptions, } = require('./utils'); const { calculateDomainSeparator, isValidCosmosAddress } = require('../cosmwasm/utils'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js'); const { WEIGHTED_SIGNERS_TYPE, encodeWeightedSigners } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils'); diff --git a/evm/deploy-contract.js b/evm/deploy-contract.js index eaef46ed..7c9033ea 100644 --- a/evm/deploy-contract.js +++ b/evm/deploy-contract.js @@ -27,7 +27,7 @@ const { getContractJSON, getDeployOptions, } = require('./utils'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); async function getConstructorArgs(contractName, config, wallet, options) { const args = options.args ? JSON.parse(options.args) : {}; diff --git a/evm/deploy-gateway-v6.2.x.js b/evm/deploy-gateway-v6.2.x.js index 1bff3f0d..360ef0ac 100644 --- a/evm/deploy-gateway-v6.2.x.js +++ b/evm/deploy-gateway-v6.2.x.js @@ -29,7 +29,7 @@ const { getGasOptions, getDeployOptions, } = require('./utils'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js'); const AxelarGatewayProxy = require('@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGatewayProxy.sol/AxelarGatewayProxy.json'); diff --git a/evm/deploy-its.js b/evm/deploy-its.js index 715fe1a2..34db0821 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -25,7 +25,7 @@ const { getDeployedAddress, wasEventEmitted, } = require('./utils'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); const { Command, Option } = require('commander'); /** diff --git a/evm/deploy-test-gateway-token.js b/evm/deploy-test-gateway-token.js index 7f568376..cf4d7ea4 100644 --- a/evm/deploy-test-gateway-token.js +++ b/evm/deploy-test-gateway-token.js @@ -11,7 +11,7 @@ const { const { Command, Option } = require('commander'); const { mainProcessor, getContractJSON, printInfo } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function getCommandId(gateway) { return hexlify(randomBytes(32)); diff --git a/evm/deploy-upgradable.js b/evm/deploy-upgradable.js index 4ade9fba..d89642a4 100644 --- a/evm/deploy-upgradable.js +++ b/evm/deploy-upgradable.js @@ -22,7 +22,7 @@ const { getDeployOptions, mainProcessor, } = require('./utils'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); function getProxy(wallet, proxyAddress) { return new Contract(proxyAddress, IUpgradable.abi, wallet); diff --git a/evm/determine-finality-latency.js b/evm/determine-finality-latency.js index 8a3bcaad..eaade68c 100644 --- a/evm/determine-finality-latency.js +++ b/evm/determine-finality-latency.js @@ -6,7 +6,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { printInfo, mainProcessor, sleep } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); function updateFinality(finality, chain, update) { if (update) { diff --git a/evm/execute-contract.js b/evm/execute-contract.js index 34fc6234..c0384b0f 100644 --- a/evm/execute-contract.js +++ b/evm/execute-contract.js @@ -11,7 +11,7 @@ const { const readlineSync = require('readline-sync'); const { Command, Option } = require('commander'); const { isNumber, isNonEmptyString, loadConfig, saveConfig, printObj, printLog, printError, getContractJSON } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function getCallData(action, targetContract, inputRecipient, inputAmount) { var recipient, amount; diff --git a/evm/gas-service.js b/evm/gas-service.js index e3103012..fa75bd6a 100644 --- a/evm/gas-service.js +++ b/evm/gas-service.js @@ -23,7 +23,7 @@ const { timeout, relayTransaction, } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getWallet } = require('./sign-utils'); let failedChainUpdates = []; diff --git a/evm/gateway.js b/evm/gateway.js index 58212bf2..44ec1594 100644 --- a/evm/gateway.js +++ b/evm/gateway.js @@ -24,7 +24,7 @@ const { httpGet, getContractJSON, } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getWallet } = require('./sign-utils'); const IGateway = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarGateway.json'); diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index fc54d931..c3aa8f53 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -8,7 +8,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its'); const { getWallet } = require('./sign-utils'); const IInterchainTokenFactory = getContractJSON('IInterchainTokenFactory'); diff --git a/evm/its.js b/evm/its.js index 373a1b18..3293631a 100644 --- a/evm/its.js +++ b/evm/its.js @@ -30,7 +30,7 @@ const InterchainTokenService = getContractJSON('InterchainTokenService'); const InterchainTokenFactory = getContractJSON('InterchainTokenFactory'); const IInterchainTokenDeployer = getContractJSON('IInterchainTokenDeployer'); const IOwnable = getContractJSON('IOwnable'); -const { addExtendedOptions } = require('./cli-utils'); +const { addExtendedOptions } = require('../common'); const { getSaltFromKey } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils'); const tokenManagerImplementations = { INTERCHAIN_TOKEN: 0, diff --git a/evm/min-deposit-proposal.js b/evm/min-deposit-proposal.js index 15529f21..d8e1c60b 100644 --- a/evm/min-deposit-proposal.js +++ b/evm/min-deposit-proposal.js @@ -1,7 +1,7 @@ 'use strict'; const { Command, Option } = require('commander'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../'); const { mainProcessor, printInfo, isValidNumber, isValidAddress } = require('./utils'); const values = []; diff --git a/evm/multisig.js b/evm/multisig.js index e38cdb61..aa762fda 100644 --- a/evm/multisig.js +++ b/evm/multisig.js @@ -23,7 +23,7 @@ const { isBytes32Array, getGasOptions, } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const IMultisig = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IMultisig.json'); const IGateway = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarGateway.json'); const IGovernance = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarServiceGovernance.json'); diff --git a/evm/operators.js b/evm/operators.js index 7ad5f68e..cbbb9ff4 100644 --- a/evm/operators.js +++ b/evm/operators.js @@ -21,7 +21,7 @@ const { getContractJSON, printWarn, } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getGasUpdates, printFailedChainUpdates, addFailedChainUpdate, relayTransaction } = require('./gas-service'); const { getWallet } = require('./sign-utils'); diff --git a/evm/ownership.js b/evm/ownership.js index 98f40f83..f9be8952 100644 --- a/evm/ownership.js +++ b/evm/ownership.js @@ -10,7 +10,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { printInfo, printWalletInfo, mainProcessor, prompt, getGasOptions } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const IOwnable = require('@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/interfaces/IOwnable.sol/IOwnable.json'); diff --git a/evm/remove-info.js b/evm/remove-info.js index d1221df0..7f33a394 100644 --- a/evm/remove-info.js +++ b/evm/remove-info.js @@ -2,7 +2,7 @@ const { Command, Option } = require('commander'); const { mainProcessor } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function processCommand(options, chain, _) { const { contractName } = options; diff --git a/evm/send-tokens.js b/evm/send-tokens.js index 1c032919..1867c7ac 100644 --- a/evm/send-tokens.js +++ b/evm/send-tokens.js @@ -8,7 +8,7 @@ const { utils: { parseEther, parseUnits }, } = ethers; const { printInfo, printError, printWalletInfo, isAddressArray, mainProcessor, isValidDecimal, prompt, getGasOptions } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { storeSignedTx, getWallet, signTransaction } = require('./sign-utils.js'); async function processCommand(_, chain, options) { diff --git a/evm/sign-message.js b/evm/sign-message.js index 035baa01..e0627290 100644 --- a/evm/sign-message.js +++ b/evm/sign-message.js @@ -7,7 +7,7 @@ const { const { Command, Option } = require('commander'); const { getWallet } = require('./sign-utils'); const { printInfo, validateParameters } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); async function processCommand(options) { const { message, privateKey } = options; diff --git a/evm/update-nonces.js b/evm/update-nonces.js index b1a4dca9..51169c2a 100644 --- a/evm/update-nonces.js +++ b/evm/update-nonces.js @@ -6,7 +6,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider } = ethers; const { mainProcessor, printInfo, prompt } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getNonceFromProvider, getNonceFileData, updateNonceFileData } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/update-static-gas-options.js b/evm/update-static-gas-options.js index 12542c67..c35017a7 100644 --- a/evm/update-static-gas-options.js +++ b/evm/update-static-gas-options.js @@ -10,7 +10,7 @@ const { } = ethers; const { printInfo, mainProcessor, prompt } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const defaultGasLimit = 3e6; const gasPriceMultiplier = 5; diff --git a/evm/verify-contract.js b/evm/verify-contract.js index 84cf255f..2053c900 100644 --- a/evm/verify-contract.js +++ b/evm/verify-contract.js @@ -10,7 +10,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { verifyContract, getEVMAddresses, printInfo, printError, mainProcessor, getContractJSON, validateParameters } = require('./utils'); -const { addBaseOptions } = require('./cli-utils'); +const { addBaseOptions } = require('../common'); const { getTrustedChainsAndAddresses } = require('./its'); async function processCommand(config, chain, options) { From a79088ec60101b4b1740b7e667bfa9b1984c9e9d Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 11:06:45 +0700 Subject: [PATCH 02/13] chore: move loadConfig and saveConfig --- common/index.js | 1 + common/utils.js | 24 ++++++++++++++++++++++++ evm/broadcast-transactions.js | 3 ++- evm/check-ownership-request.js | 2 +- evm/execute-contract.js | 3 ++- evm/utils.js | 9 +-------- 6 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 common/utils.js diff --git a/common/index.js b/common/index.js index fb9a3366..9e44eca0 100644 --- a/common/index.js +++ b/common/index.js @@ -1,3 +1,4 @@ module.exports = { ...require('./cli-utils'), + ...require('./utils'), } diff --git a/common/utils.js b/common/utils.js new file mode 100644 index 00000000..38b7dfe9 --- /dev/null +++ b/common/utils.js @@ -0,0 +1,24 @@ +'use strict' + +const { outputJsonSync } = require('fs-extra'); + +function loadConfig(env) { + return require(`${__dirname}/../axelar-chains-config/info/${env}.json`); +} + +function saveConfig(config, env) { + writeJSON(config, `${__dirname}/../axelar-chains-config/info/${env}.json`); +} + +const writeJSON = (data, name) => { + outputJsonSync(name, data, { + spaces: 2, + EOL: '\n', + }); +}; + +module.exports = { + loadConfig, + saveConfig, + writeJSON, +} diff --git a/evm/broadcast-transactions.js b/evm/broadcast-transactions.js index da8b5b28..e53c24ea 100644 --- a/evm/broadcast-transactions.js +++ b/evm/broadcast-transactions.js @@ -7,7 +7,8 @@ const { providers: { getDefaultProvider }, } = ethers; -const { printError, printInfo, printWarn, getConfigByChainId, prompt, loadConfig } = require('./utils'); +const { printError, printInfo, printWarn, getConfigByChainId, prompt } = require('./utils'); +const { loadConfig } = require('../common'); const { addBaseOptions } = require('../common'); const { sendTransaction, getSignedTx, storeSignedTx } = require('./sign-utils'); diff --git a/evm/check-ownership-request.js b/evm/check-ownership-request.js index 69402981..86113938 100644 --- a/evm/check-ownership-request.js +++ b/evm/check-ownership-request.js @@ -5,9 +5,9 @@ require('dotenv').config(); const axios = require('axios'); const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); +const {loadConfig} = require('../common'); const { Contract, getDefaultProvider } = ethers; const { - loadConfig, validateParameters, printError, getContractJSON, diff --git a/evm/execute-contract.js b/evm/execute-contract.js index c0384b0f..b2eb1119 100644 --- a/evm/execute-contract.js +++ b/evm/execute-contract.js @@ -10,7 +10,8 @@ const { const readlineSync = require('readline-sync'); const { Command, Option } = require('commander'); -const { isNumber, isNonEmptyString, loadConfig, saveConfig, printObj, printLog, printError, getContractJSON } = require('./utils'); +const { isNumber, isNonEmptyString, printObj, printLog, printError, getContractJSON } = require('./utils'); +const { loadConfig, saveConfig } = require('../common'); const { addBaseOptions } = require('../common'); async function getCallData(action, targetContract, inputRecipient, inputAmount) { diff --git a/evm/utils.js b/evm/utils.js index e28bcadd..af5bd407 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -16,6 +16,7 @@ const path = require('path'); const { outputJsonSync } = require('fs-extra'); const readlineSync = require('readline-sync'); const chalk = require('chalk'); +const {loadConfig, saveConfig} = require('../common'); const { create3DeployContract, deployContractConstant, @@ -689,18 +690,10 @@ function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } -function loadConfig(env) { - return require(`${__dirname}/../axelar-chains-config/info/${env}.json`); -} - function loadParallelExecutionConfig(env, chain) { return require(`${__dirname}/../chains-info/${env}-${chain}.json`); } -function saveConfig(config, env) { - writeJSON(config, `${__dirname}/../axelar-chains-config/info/${env}.json`); -} - function saveParallelExecutionConfig(config, env, chain) { writeJSON(config, `${__dirname}/../chains-info/${env}-${chain}.json`); } From feef9c33a3b4513cf1480af6e1878168b94474a4 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 15:51:14 +0700 Subject: [PATCH 03/13] chore: move print* functions into common --- common/index.js | 6 ++-- common/utils.js | 55 ++++++++++++++++++++++++------- evm/broadcast-transactions.js | 5 ++- evm/check-finality.js | 4 +-- evm/check-ownership-request.js | 13 ++------ evm/check-wallet-balance.js | 4 +-- evm/decode.js | 3 +- evm/deploy-amplifier-gateway.js | 5 +-- evm/deploy-contract.js | 5 +-- evm/deploy-gateway-v6.2.x.js | 5 +-- evm/deploy-its.js | 5 +-- evm/deploy-upgradable.js | 13 ++------ evm/determine-finality-latency.js | 4 +-- evm/execute-contract.js | 4 +-- evm/gas-service.js | 5 +-- evm/gateway.js | 5 +-- evm/governance.js | 3 +- evm/interchainTokenFactory.js | 4 +-- evm/its.js | 4 +-- evm/min-deposit-proposal.js | 4 +-- evm/multisig.js | 4 +-- evm/operators.js | 5 +-- evm/ownership.js | 4 +-- evm/send-tokens.js | 4 +-- evm/sign-message-defender.js | 3 +- evm/sign-message.js | 4 +-- evm/sign-utils.js | 3 +- evm/update-nonces.js | 4 +-- evm/update-static-gas-options.js | 4 +-- evm/upgradable.js | 13 ++------ evm/utils.js | 8 +---- evm/verify-contract.js | 5 +-- 32 files changed, 97 insertions(+), 120 deletions(-) diff --git a/common/index.js b/common/index.js index 9e44eca0..ceab4806 100644 --- a/common/index.js +++ b/common/index.js @@ -1,4 +1,4 @@ module.exports = { - ...require('./cli-utils'), - ...require('./utils'), -} + ...require('./cli-utils'), + ...require('./utils'), +}; diff --git a/common/utils.js b/common/utils.js index 38b7dfe9..3fbde9f9 100644 --- a/common/utils.js +++ b/common/utils.js @@ -1,24 +1,57 @@ -'use strict' +'use strict'; const { outputJsonSync } = require('fs-extra'); +const chalk = require('chalk'); function loadConfig(env) { - return require(`${__dirname}/../axelar-chains-config/info/${env}.json`); + return require(`${__dirname}/../axelar-chains-config/info/${env}.json`); } function saveConfig(config, env) { - writeJSON(config, `${__dirname}/../axelar-chains-config/info/${env}.json`); + writeJSON(config, `${__dirname}/../axelar-chains-config/info/${env}.json`); } const writeJSON = (data, name) => { - outputJsonSync(name, data, { - spaces: 2, - EOL: '\n', - }); + outputJsonSync(name, data, { + spaces: 2, + EOL: '\n', + }); }; -module.exports = { - loadConfig, - saveConfig, - writeJSON, +const printInfo = (msg, info = '', colour = chalk.green) => { + if (info) { + console.log(`${msg}: ${colour(info)}\n`); + } else { + console.log(`${msg}\n`); + } +}; + +const printWarn = (msg, info = '') => { + if (info) { + msg = `${msg}: ${info}`; + } + + console.log(`${chalk.italic.yellow(msg)}\n`); +}; + +const printError = (msg, info = '') => { + if (info) { + msg = `${msg}: ${info}`; + } + + console.log(`${chalk.bold.red(msg)}\n`); +}; + +function printLog(log) { + console.log(JSON.stringify({ log }, null, 2)); } + +module.exports = { + loadConfig, + saveConfig, + writeJSON, + printInfo, + printWarn, + printError, + printLog, +}; diff --git a/evm/broadcast-transactions.js b/evm/broadcast-transactions.js index e53c24ea..8373231a 100644 --- a/evm/broadcast-transactions.js +++ b/evm/broadcast-transactions.js @@ -7,9 +7,8 @@ const { providers: { getDefaultProvider }, } = ethers; -const { printError, printInfo, printWarn, getConfigByChainId, prompt } = require('./utils'); -const { loadConfig } = require('../common'); -const { addBaseOptions } = require('../common'); +const { getConfigByChainId, prompt } = require('./utils'); +const { printError, printInfo, printWarn, addBaseOptions, loadConfig } = require('../common'); const { sendTransaction, getSignedTx, storeSignedTx } = require('./sign-utils'); async function processCommand(config, _, options, file) { diff --git a/evm/check-finality.js b/evm/check-finality.js index 9de2366b..b05af6d4 100644 --- a/evm/check-finality.js +++ b/evm/check-finality.js @@ -5,8 +5,8 @@ const { providers: { JsonRpcProvider }, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, mainProcessor, isKeccak256Hash, sleep } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { mainProcessor, isKeccak256Hash, sleep } = require('./utils'); +const { printInfo, addBaseOptions } = require('../common'); async function processCommand(_config, chain, options) { const txHash = options.txHash; diff --git a/evm/check-ownership-request.js b/evm/check-ownership-request.js index 86113938..5667fc4e 100644 --- a/evm/check-ownership-request.js +++ b/evm/check-ownership-request.js @@ -5,18 +5,9 @@ require('dotenv').config(); const axios = require('axios'); const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); -const {loadConfig} = require('../common'); +const { loadConfig, printError, printInfo, printWarn } = require('../common'); const { Contract, getDefaultProvider } = ethers; -const { - validateParameters, - printError, - getContractJSON, - printInfo, - printWarn, - printObj, - isValidAddress, - isStringArray, -} = require('./utils'); +const { validateParameters, getContractJSON, printObj, isValidAddress, isStringArray } = require('./utils'); const interchainTokenFactoryABI = getContractJSON('InterchainTokenFactory').abi; const interchainTokenABI = getContractJSON('InterchainToken').abi; diff --git a/evm/check-wallet-balance.js b/evm/check-wallet-balance.js index 7dfc59b4..1b60b525 100644 --- a/evm/check-wallet-balance.js +++ b/evm/check-wallet-balance.js @@ -4,8 +4,8 @@ const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); const { getDefaultProvider, BigNumber } = ethers; -const { printError, mainProcessor } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { mainProcessor } = require('./utils'); +const { printError, addBaseOptions } = require('../common'); const { getNonceFileData } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/decode.js b/evm/decode.js index 006923d9..82d830da 100644 --- a/evm/decode.js +++ b/evm/decode.js @@ -6,7 +6,8 @@ const { utils: { Interface }, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, printError, validateParameters, getContractJSON } = require('./utils'); +const { validateParameters, getContractJSON } = require('./utils'); +const { printInfo, printError } = require('../common'); const decode = (calldata, iface) => { try { diff --git a/evm/deploy-amplifier-gateway.js b/evm/deploy-amplifier-gateway.js index eb10fd6c..1a57ccd6 100644 --- a/evm/deploy-amplifier-gateway.js +++ b/evm/deploy-amplifier-gateway.js @@ -14,10 +14,7 @@ const { const { saveConfig, getBytecodeHash, - printInfo, - printError, printWalletInfo, - printWarn, prompt, mainProcessor, deployContract, @@ -31,7 +28,7 @@ const { getDeployOptions, } = require('./utils'); const { calculateDomainSeparator, isValidCosmosAddress } = require('../cosmwasm/utils'); -const { addExtendedOptions } = require('../common'); +const { addExtendedOptions, printInfo, printError, printWarn } = require('../common'); const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js'); const { WEIGHTED_SIGNERS_TYPE, encodeWeightedSigners } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils'); diff --git a/evm/deploy-contract.js b/evm/deploy-contract.js index 7c9033ea..ed531e1b 100644 --- a/evm/deploy-contract.js +++ b/evm/deploy-contract.js @@ -9,9 +9,6 @@ const { } = ethers; const { Command, Option } = require('commander'); const { - printInfo, - printWarn, - printError, getGasOptions, isNonEmptyString, isNumber, @@ -27,7 +24,7 @@ const { getContractJSON, getDeployOptions, } = require('./utils'); -const { addExtendedOptions } = require('../common'); +const { addExtendedOptions, printInfo, printWarn, printError } = require('../common'); async function getConstructorArgs(contractName, config, wallet, options) { const args = options.args ? JSON.parse(options.args) : {}; diff --git a/evm/deploy-gateway-v6.2.x.js b/evm/deploy-gateway-v6.2.x.js index 360ef0ac..f5e312e2 100644 --- a/evm/deploy-gateway-v6.2.x.js +++ b/evm/deploy-gateway-v6.2.x.js @@ -15,13 +15,10 @@ const { saveConfig, getBytecodeHash, verifyContract, - printInfo, getProxy, getEVMAddresses, httpGet, - printError, printWalletInfo, - printWarn, prompt, mainProcessor, isContract, @@ -29,7 +26,7 @@ const { getGasOptions, getDeployOptions, } = require('./utils'); -const { addExtendedOptions } = require('../common'); +const { printInfo, printError, printWarn, addExtendedOptions } = require('../common'); const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js'); const AxelarGatewayProxy = require('@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGatewayProxy.sol/AxelarGatewayProxy.json'); diff --git a/evm/deploy-its.js b/evm/deploy-its.js index 34db0821..d52e0542 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -10,9 +10,6 @@ const { deployContract, printWalletInfo, saveConfig, - printInfo, - printWarn, - printError, getContractJSON, mainProcessor, prompt, @@ -25,7 +22,7 @@ const { getDeployedAddress, wasEventEmitted, } = require('./utils'); -const { addExtendedOptions } = require('../common'); +const { addExtendedOptions, printInfo, printWarn, printError } = require('../common'); const { Command, Option } = require('commander'); /** diff --git a/evm/deploy-upgradable.js b/evm/deploy-upgradable.js index d89642a4..05ee521c 100644 --- a/evm/deploy-upgradable.js +++ b/evm/deploy-upgradable.js @@ -12,17 +12,8 @@ const IUpgradable = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/ const { Command, Option } = require('commander'); const { deployUpgradable, deployCreate2Upgradable, deployCreate3Upgradable, upgradeUpgradable } = require('./upgradable'); -const { - printInfo, - printError, - printWalletInfo, - getDeployedAddress, - prompt, - getGasOptions, - getDeployOptions, - mainProcessor, -} = require('./utils'); -const { addExtendedOptions } = require('../common'); +const { printWalletInfo, getDeployedAddress, prompt, getGasOptions, getDeployOptions, mainProcessor } = require('./utils'); +const { addExtendedOptions, printInfo, printError } = require('../common'); function getProxy(wallet, proxyAddress) { return new Contract(proxyAddress, IUpgradable.abi, wallet); diff --git a/evm/determine-finality-latency.js b/evm/determine-finality-latency.js index eaade68c..93112173 100644 --- a/evm/determine-finality-latency.js +++ b/evm/determine-finality-latency.js @@ -5,8 +5,8 @@ const { providers: { JsonRpcProvider }, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, mainProcessor, sleep } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { mainProcessor, sleep } = require('./utils'); +const { printInfo, addBaseOptions } = require('../common'); function updateFinality(finality, chain, update) { if (update) { diff --git a/evm/execute-contract.js b/evm/execute-contract.js index b2eb1119..ef8fcfb3 100644 --- a/evm/execute-contract.js +++ b/evm/execute-contract.js @@ -10,8 +10,8 @@ const { const readlineSync = require('readline-sync'); const { Command, Option } = require('commander'); -const { isNumber, isNonEmptyString, printObj, printLog, printError, getContractJSON } = require('./utils'); -const { loadConfig, saveConfig } = require('../common'); +const { isNumber, isNonEmptyString, printObj, getContractJSON } = require('./utils'); +const { printLog, printError, loadConfig, saveConfig } = require('../common'); const { addBaseOptions } = require('../common'); async function getCallData(action, targetContract, inputRecipient, inputAmount) { diff --git a/evm/gas-service.js b/evm/gas-service.js index fa75bd6a..82541aa3 100644 --- a/evm/gas-service.js +++ b/evm/gas-service.js @@ -8,10 +8,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { - printInfo, printWalletInfo, - printWarn, - printError, mainProcessor, prompt, getContractJSON, @@ -23,7 +20,7 @@ const { timeout, relayTransaction, } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions, printInfo, printWarn, printError } = require('../common'); const { getWallet } = require('./sign-utils'); let failedChainUpdates = []; diff --git a/evm/gateway.js b/evm/gateway.js index 44ec1594..e00e6934 100644 --- a/evm/gateway.js +++ b/evm/gateway.js @@ -10,21 +10,18 @@ const { } = ethers; const { Command, Option } = require('commander'); const { - printInfo, prompt, - printWarn, printWalletInfo, getEVMBatch, getEVMAddresses, isValidAddress, wasEventEmitted, mainProcessor, - printError, getGasOptions, httpGet, getContractJSON, } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { printInfo, printWarn, printError, addBaseOptions } = require('../common'); const { getWallet } = require('./sign-utils'); const IGateway = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarGateway.json'); diff --git a/evm/governance.js b/evm/governance.js index 33a372a1..69a8f83e 100644 --- a/evm/governance.js +++ b/evm/governance.js @@ -10,7 +10,6 @@ const { } = ethers; const { Command, Option } = require('commander'); const { - printInfo, getGasOptions, printWalletInfo, isValidTimeFormat, @@ -18,7 +17,6 @@ const { etaToDate, getCurrentTimeInSeconds, wasEventEmitted, - printWarn, getBytecodeHash, isValidAddress, mainProcessor, @@ -28,6 +26,7 @@ const { writeJSON, isKeccak256Hash, } = require('./utils.js'); +const { printInfo, printWarn } = require('../common.js'); const { addBaseOptions } = require('./cli-utils.js'); const { getWallet } = require('./sign-utils.js'); const IAxelarServiceGovernance = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarServiceGovernance.json'); diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index c3aa8f53..803043e5 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -7,8 +7,8 @@ const { constants: { AddressZero }, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); -const { addExtendedOptions } = require('../common'); +const { prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); +const { addExtendedOptions, printInfo } = require('../common'); const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its'); const { getWallet } = require('./sign-utils'); const IInterchainTokenFactory = getContractJSON('IInterchainTokenFactory'); diff --git a/evm/its.js b/evm/its.js index 3293631a..1031d3f7 100644 --- a/evm/its.js +++ b/evm/its.js @@ -9,11 +9,9 @@ const { Contract, } = ethers; const { Command, Option } = require('commander'); +const { printInfo, printWarn, printError } = require('../common'); const { - printInfo, prompt, - printWarn, - printError, printWalletInfo, wasEventEmitted, mainProcessor, diff --git a/evm/min-deposit-proposal.js b/evm/min-deposit-proposal.js index d8e1c60b..9efe88c8 100644 --- a/evm/min-deposit-proposal.js +++ b/evm/min-deposit-proposal.js @@ -1,8 +1,8 @@ 'use strict'; const { Command, Option } = require('commander'); -const { addBaseOptions } = require('../'); -const { mainProcessor, printInfo, isValidNumber, isValidAddress } = require('./utils'); +const { addBaseOptions, printInfo } = require('../common'); +const { mainProcessor, isValidNumber, isValidAddress } = require('./utils'); const values = []; diff --git a/evm/multisig.js b/evm/multisig.js index aa762fda..2ac300f7 100644 --- a/evm/multisig.js +++ b/evm/multisig.js @@ -9,11 +9,9 @@ const { } = ethers; const { Command, Option } = require('commander'); const { - printInfo, printWalletInfo, isNumber, isValidCalldata, - printWarn, isNonEmptyStringArray, isNumberArray, isValidAddress, @@ -23,7 +21,7 @@ const { isBytes32Array, getGasOptions, } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions, printInfo, printWarn } = require('../common'); const IMultisig = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IMultisig.json'); const IGateway = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarGateway.json'); const IGovernance = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarServiceGovernance.json'); diff --git a/evm/operators.js b/evm/operators.js index cbbb9ff4..d94ca173 100644 --- a/evm/operators.js +++ b/evm/operators.js @@ -8,8 +8,6 @@ const { } = ethers; const { Command, Option } = require('commander'); const { - printInfo, - printError, printWalletInfo, isAddressArray, isNumberArray, @@ -19,9 +17,8 @@ const { mainProcessor, validateParameters, getContractJSON, - printWarn, } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions, printInfo, printError, printWarn } = require('../common'); const { getGasUpdates, printFailedChainUpdates, addFailedChainUpdate, relayTransaction } = require('./gas-service'); const { getWallet } = require('./sign-utils'); diff --git a/evm/ownership.js b/evm/ownership.js index f9be8952..1384f96a 100644 --- a/evm/ownership.js +++ b/evm/ownership.js @@ -9,8 +9,8 @@ const { Contract, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, printWalletInfo, mainProcessor, prompt, getGasOptions } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { printWalletInfo, mainProcessor, prompt, getGasOptions } = require('./utils'); +const { printInfo, addBaseOptions } = require('../common'); const IOwnable = require('@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/interfaces/IOwnable.sol/IOwnable.json'); diff --git a/evm/send-tokens.js b/evm/send-tokens.js index 1867c7ac..d4a3f012 100644 --- a/evm/send-tokens.js +++ b/evm/send-tokens.js @@ -7,8 +7,8 @@ const { getDefaultProvider, utils: { parseEther, parseUnits }, } = ethers; -const { printInfo, printError, printWalletInfo, isAddressArray, mainProcessor, isValidDecimal, prompt, getGasOptions } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { printWalletInfo, isAddressArray, mainProcessor, isValidDecimal, prompt, getGasOptions } = require('./utils'); +const { printInfo, printError, addBaseOptions } = require('../common'); const { storeSignedTx, getWallet, signTransaction } = require('./sign-utils.js'); async function processCommand(_, chain, options) { diff --git a/evm/sign-message-defender.js b/evm/sign-message-defender.js index 42e89391..2978fa31 100644 --- a/evm/sign-message-defender.js +++ b/evm/sign-message-defender.js @@ -7,7 +7,8 @@ const { utils: { hexlify, joinSignature, toUtf8Bytes }, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, validateParameters, printError } = require('./utils'); +const { validateParameters, printError } = require('./utils'); +const { printInfo } = require('../common'); async function main(options) { const { apiKey, secret, message } = options; diff --git a/evm/sign-message.js b/evm/sign-message.js index e0627290..e4e816e1 100644 --- a/evm/sign-message.js +++ b/evm/sign-message.js @@ -6,8 +6,8 @@ const { } = ethers; const { Command, Option } = require('commander'); const { getWallet } = require('./sign-utils'); -const { printInfo, validateParameters } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { validateParameters } = require('./utils'); +const { printInfo, addBaseOptions } = require('../common'); async function processCommand(options) { const { message, privateKey } = options; diff --git a/evm/sign-utils.js b/evm/sign-utils.js index b1991cb5..11699a2a 100644 --- a/evm/sign-utils.js +++ b/evm/sign-utils.js @@ -10,7 +10,8 @@ const { const path = require('path'); const { LedgerSigner } = require('./LedgerSigner'); -const { printError, printInfo, printObj, isValidPrivateKey, isNumber, isValidNumber } = require('./utils'); +const { printObj, isValidPrivateKey, isNumber, isValidNumber } = require('./utils'); +const { printInfo, printError } = require('../common'); /** * Get a wallet object from a private key or a ledger device diff --git a/evm/update-nonces.js b/evm/update-nonces.js index 51169c2a..2e92ac89 100644 --- a/evm/update-nonces.js +++ b/evm/update-nonces.js @@ -5,8 +5,8 @@ const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); const { getDefaultProvider } = ethers; -const { mainProcessor, printInfo, prompt } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { mainProcessor, prompt } = require('./utils'); +const { printInfo, addBaseOptions } = require('../common'); const { getNonceFromProvider, getNonceFileData, updateNonceFileData } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/update-static-gas-options.js b/evm/update-static-gas-options.js index c35017a7..f6e28308 100644 --- a/evm/update-static-gas-options.js +++ b/evm/update-static-gas-options.js @@ -9,8 +9,8 @@ const { BigNumber, } = ethers; -const { printInfo, mainProcessor, prompt } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { mainProcessor, prompt } = require('./utils'); +const { printInfo, addBaseOptions } = require('../common'); const defaultGasLimit = 3e6; const gasPriceMultiplier = 5; diff --git a/evm/upgradable.js b/evm/upgradable.js index e68def97..659212bc 100644 --- a/evm/upgradable.js +++ b/evm/upgradable.js @@ -5,17 +5,8 @@ const { Contract, ContractFactory } = ethers; const { deployAndInitContractConstant, create3DeployAndInitContract } = require('@axelar-network/axelar-gmp-sdk-solidity'); const IUpgradable = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IUpgradable.json'); -const { - verifyContract, - deployCreate, - getBytecodeHash, - deployContract, - printInfo, - getDeployedAddress, - isContract, - prompt, - printWarn, -} = require('./utils'); +const { printInfo, printWarn } = require('../common'); +const { verifyContract, deployCreate, getBytecodeHash, deployContract, getDeployedAddress, isContract, prompt } = require('./utils'); async function deployUpgradable( wallet, diff --git a/evm/utils.js b/evm/utils.js index af5bd407..b092f62f 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -16,7 +16,7 @@ const path = require('path'); const { outputJsonSync } = require('fs-extra'); const readlineSync = require('readline-sync'); const chalk = require('chalk'); -const {loadConfig, saveConfig} = require('../common'); +const { loadConfig, saveConfig } = require('../common'); const { create3DeployContract, deployContractConstant, @@ -1272,10 +1272,6 @@ module.exports = { httpGet, httpPost, printObj, - printLog, - printInfo, - printWarn, - printError, getBytecodeHash, predictAddressCreate, getDeployedAddress, @@ -1298,8 +1294,6 @@ module.exports = { getEVMAddresses, getConfigByChainId, sleep, - loadConfig, - saveConfig, printWalletInfo, isValidTimeFormat, dateToEta, diff --git a/evm/verify-contract.js b/evm/verify-contract.js index 2053c900..3ed43b3c 100644 --- a/evm/verify-contract.js +++ b/evm/verify-contract.js @@ -9,8 +9,9 @@ const { Contract, } = ethers; const { Command, Option } = require('commander'); -const { verifyContract, getEVMAddresses, printInfo, printError, mainProcessor, getContractJSON, validateParameters } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { verifyContract, getEVMAddresses, mainProcessor, getContractJSON, validateParameters } = require('./utils'); + +const { printInfo, printError, addBaseOptions } = require('../common'); const { getTrustedChainsAndAddresses } = require('./its'); async function processCommand(config, chain, options) { From ed0c18b030ecda5900865f9ca822b9bc53a27eae Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 16:00:03 +0700 Subject: [PATCH 04/13] chore: require common utils in evm utils --- evm/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/evm/utils.js b/evm/utils.js index b092f62f..c247a394 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -1263,6 +1263,7 @@ async function getWeightedSigners(config, chain, options) { } module.exports = { + ...require('../common'), deployCreate, deployCreate2, deployCreate3, From f5ddf1bd781be8dad5e3a344008ebad0a8041015 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 16:04:55 +0700 Subject: [PATCH 05/13] chore: revert import fixing --- evm/balances.js | 2 +- evm/broadcast-transactions.js | 4 ++-- evm/chains.js | 2 +- evm/check-finality.js | 4 ++-- evm/check-ownership-request.js | 13 +++++++++++-- evm/check-wallet-balance.js | 4 ++-- evm/cli-utils.js | 3 +++ evm/contracts-deployment-test.js | 2 +- evm/decode.js | 3 +-- evm/deploy-amplifier-gateway.js | 5 ++++- evm/deploy-contract.js | 5 ++++- evm/deploy-gateway-v6.2.x.js | 5 ++++- evm/deploy-its.js | 5 ++++- evm/deploy-test-gateway-token.js | 2 +- evm/deploy-upgradable.js | 13 +++++++++++-- evm/determine-finality-latency.js | 4 ++-- evm/execute-contract.js | 5 ++--- evm/gas-service.js | 5 ++++- evm/gateway.js | 5 ++++- evm/governance.js | 3 ++- evm/interchainTokenFactory.js | 4 ++-- evm/its.js | 6 ++++-- evm/min-deposit-proposal.js | 4 ++-- evm/multisig.js | 4 +++- evm/operators.js | 5 ++++- evm/ownership.js | 4 ++-- evm/remove-info.js | 2 +- evm/send-tokens.js | 4 ++-- evm/sign-message-defender.js | 3 +-- evm/sign-message.js | 4 ++-- evm/sign-utils.js | 3 +-- evm/update-nonces.js | 4 ++-- evm/update-static-gas-options.js | 4 ++-- evm/upgradable.js | 13 +++++++++++-- evm/utils.js | 2 +- evm/verify-contract.js | 5 ++--- 36 files changed, 108 insertions(+), 57 deletions(-) create mode 100644 evm/cli-utils.js diff --git a/evm/balances.js b/evm/balances.js index f383fb2b..23c5563b 100644 --- a/evm/balances.js +++ b/evm/balances.js @@ -4,7 +4,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider } = ethers; const { Command } = require('commander'); const { mainProcessor, printWalletInfo } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); const { getWallet } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/broadcast-transactions.js b/evm/broadcast-transactions.js index 8373231a..6b3cbead 100644 --- a/evm/broadcast-transactions.js +++ b/evm/broadcast-transactions.js @@ -7,8 +7,8 @@ const { providers: { getDefaultProvider }, } = ethers; -const { getConfigByChainId, prompt } = require('./utils'); -const { printError, printInfo, printWarn, addBaseOptions, loadConfig } = require('../common'); +const { printError, printInfo, printWarn, getConfigByChainId, prompt, loadConfig } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const { sendTransaction, getSignedTx, storeSignedTx } = require('./sign-utils'); async function processCommand(config, _, options, file) { diff --git a/evm/chains.js b/evm/chains.js index 7771b2cb..0ebe163a 100644 --- a/evm/chains.js +++ b/evm/chains.js @@ -2,7 +2,7 @@ const { Command } = require('commander'); const { mainProcessor, printInfo } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); async function processCommand(_, chain, options) { printInfo('Axelar Chain Name', chain.axelarId); diff --git a/evm/check-finality.js b/evm/check-finality.js index b05af6d4..8174199d 100644 --- a/evm/check-finality.js +++ b/evm/check-finality.js @@ -5,8 +5,8 @@ const { providers: { JsonRpcProvider }, } = ethers; const { Command, Option } = require('commander'); -const { mainProcessor, isKeccak256Hash, sleep } = require('./utils'); -const { printInfo, addBaseOptions } = require('../common'); +const { printInfo, mainProcessor, isKeccak256Hash, sleep } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); async function processCommand(_config, chain, options) { const txHash = options.txHash; diff --git a/evm/check-ownership-request.js b/evm/check-ownership-request.js index 5667fc4e..69402981 100644 --- a/evm/check-ownership-request.js +++ b/evm/check-ownership-request.js @@ -5,9 +5,18 @@ require('dotenv').config(); const axios = require('axios'); const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); -const { loadConfig, printError, printInfo, printWarn } = require('../common'); const { Contract, getDefaultProvider } = ethers; -const { validateParameters, getContractJSON, printObj, isValidAddress, isStringArray } = require('./utils'); +const { + loadConfig, + validateParameters, + printError, + getContractJSON, + printInfo, + printWarn, + printObj, + isValidAddress, + isStringArray, +} = require('./utils'); const interchainTokenFactoryABI = getContractJSON('InterchainTokenFactory').abi; const interchainTokenABI = getContractJSON('InterchainToken').abi; diff --git a/evm/check-wallet-balance.js b/evm/check-wallet-balance.js index 1b60b525..011c5b25 100644 --- a/evm/check-wallet-balance.js +++ b/evm/check-wallet-balance.js @@ -4,8 +4,8 @@ const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); const { getDefaultProvider, BigNumber } = ethers; -const { mainProcessor } = require('./utils'); -const { printError, addBaseOptions } = require('../common'); +const { printError, mainProcessor } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const { getNonceFileData } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/cli-utils.js b/evm/cli-utils.js new file mode 100644 index 00000000..a49e1100 --- /dev/null +++ b/evm/cli-utils.js @@ -0,0 +1,3 @@ +module.exports = { + ...require("../common/cli-utils"), +} diff --git a/evm/contracts-deployment-test.js b/evm/contracts-deployment-test.js index 8e9c8b8a..cd894685 100644 --- a/evm/contracts-deployment-test.js +++ b/evm/contracts-deployment-test.js @@ -9,7 +9,7 @@ const { const { Command, Option } = require('commander'); const { mainProcessor } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); async function processCommand(config, chain, options) { const wallet = new Wallet(options.privateKey, new JsonRpcProvider(chain.rpc)); diff --git a/evm/decode.js b/evm/decode.js index 82d830da..006923d9 100644 --- a/evm/decode.js +++ b/evm/decode.js @@ -6,8 +6,7 @@ const { utils: { Interface }, } = ethers; const { Command, Option } = require('commander'); -const { validateParameters, getContractJSON } = require('./utils'); -const { printInfo, printError } = require('../common'); +const { printInfo, printError, validateParameters, getContractJSON } = require('./utils'); const decode = (calldata, iface) => { try { diff --git a/evm/deploy-amplifier-gateway.js b/evm/deploy-amplifier-gateway.js index 1a57ccd6..a0b0bb10 100644 --- a/evm/deploy-amplifier-gateway.js +++ b/evm/deploy-amplifier-gateway.js @@ -14,7 +14,10 @@ const { const { saveConfig, getBytecodeHash, + printInfo, + printError, printWalletInfo, + printWarn, prompt, mainProcessor, deployContract, @@ -28,7 +31,7 @@ const { getDeployOptions, } = require('./utils'); const { calculateDomainSeparator, isValidCosmosAddress } = require('../cosmwasm/utils'); -const { addExtendedOptions, printInfo, printError, printWarn } = require('../common'); +const { addExtendedOptions } = require('./cli-utils'); const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js'); const { WEIGHTED_SIGNERS_TYPE, encodeWeightedSigners } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils'); diff --git a/evm/deploy-contract.js b/evm/deploy-contract.js index ed531e1b..eaef46ed 100644 --- a/evm/deploy-contract.js +++ b/evm/deploy-contract.js @@ -9,6 +9,9 @@ const { } = ethers; const { Command, Option } = require('commander'); const { + printInfo, + printWarn, + printError, getGasOptions, isNonEmptyString, isNumber, @@ -24,7 +27,7 @@ const { getContractJSON, getDeployOptions, } = require('./utils'); -const { addExtendedOptions, printInfo, printWarn, printError } = require('../common'); +const { addExtendedOptions } = require('./cli-utils'); async function getConstructorArgs(contractName, config, wallet, options) { const args = options.args ? JSON.parse(options.args) : {}; diff --git a/evm/deploy-gateway-v6.2.x.js b/evm/deploy-gateway-v6.2.x.js index f5e312e2..1bff3f0d 100644 --- a/evm/deploy-gateway-v6.2.x.js +++ b/evm/deploy-gateway-v6.2.x.js @@ -15,10 +15,13 @@ const { saveConfig, getBytecodeHash, verifyContract, + printInfo, getProxy, getEVMAddresses, httpGet, + printError, printWalletInfo, + printWarn, prompt, mainProcessor, isContract, @@ -26,7 +29,7 @@ const { getGasOptions, getDeployOptions, } = require('./utils'); -const { printInfo, printError, printWarn, addExtendedOptions } = require('../common'); +const { addExtendedOptions } = require('./cli-utils'); const { storeSignedTx, signTransaction, getWallet } = require('./sign-utils.js'); const AxelarGatewayProxy = require('@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGatewayProxy.sol/AxelarGatewayProxy.json'); diff --git a/evm/deploy-its.js b/evm/deploy-its.js index d52e0542..715fe1a2 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -10,6 +10,9 @@ const { deployContract, printWalletInfo, saveConfig, + printInfo, + printWarn, + printError, getContractJSON, mainProcessor, prompt, @@ -22,7 +25,7 @@ const { getDeployedAddress, wasEventEmitted, } = require('./utils'); -const { addExtendedOptions, printInfo, printWarn, printError } = require('../common'); +const { addExtendedOptions } = require('./cli-utils'); const { Command, Option } = require('commander'); /** diff --git a/evm/deploy-test-gateway-token.js b/evm/deploy-test-gateway-token.js index cf4d7ea4..7f568376 100644 --- a/evm/deploy-test-gateway-token.js +++ b/evm/deploy-test-gateway-token.js @@ -11,7 +11,7 @@ const { const { Command, Option } = require('commander'); const { mainProcessor, getContractJSON, printInfo } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); async function getCommandId(gateway) { return hexlify(randomBytes(32)); diff --git a/evm/deploy-upgradable.js b/evm/deploy-upgradable.js index 05ee521c..4ade9fba 100644 --- a/evm/deploy-upgradable.js +++ b/evm/deploy-upgradable.js @@ -12,8 +12,17 @@ const IUpgradable = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/ const { Command, Option } = require('commander'); const { deployUpgradable, deployCreate2Upgradable, deployCreate3Upgradable, upgradeUpgradable } = require('./upgradable'); -const { printWalletInfo, getDeployedAddress, prompt, getGasOptions, getDeployOptions, mainProcessor } = require('./utils'); -const { addExtendedOptions, printInfo, printError } = require('../common'); +const { + printInfo, + printError, + printWalletInfo, + getDeployedAddress, + prompt, + getGasOptions, + getDeployOptions, + mainProcessor, +} = require('./utils'); +const { addExtendedOptions } = require('./cli-utils'); function getProxy(wallet, proxyAddress) { return new Contract(proxyAddress, IUpgradable.abi, wallet); diff --git a/evm/determine-finality-latency.js b/evm/determine-finality-latency.js index 93112173..8a3bcaad 100644 --- a/evm/determine-finality-latency.js +++ b/evm/determine-finality-latency.js @@ -5,8 +5,8 @@ const { providers: { JsonRpcProvider }, } = ethers; const { Command, Option } = require('commander'); -const { mainProcessor, sleep } = require('./utils'); -const { printInfo, addBaseOptions } = require('../common'); +const { printInfo, mainProcessor, sleep } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); function updateFinality(finality, chain, update) { if (update) { diff --git a/evm/execute-contract.js b/evm/execute-contract.js index ef8fcfb3..34fc6234 100644 --- a/evm/execute-contract.js +++ b/evm/execute-contract.js @@ -10,9 +10,8 @@ const { const readlineSync = require('readline-sync'); const { Command, Option } = require('commander'); -const { isNumber, isNonEmptyString, printObj, getContractJSON } = require('./utils'); -const { printLog, printError, loadConfig, saveConfig } = require('../common'); -const { addBaseOptions } = require('../common'); +const { isNumber, isNonEmptyString, loadConfig, saveConfig, printObj, printLog, printError, getContractJSON } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); async function getCallData(action, targetContract, inputRecipient, inputAmount) { var recipient, amount; diff --git a/evm/gas-service.js b/evm/gas-service.js index 82541aa3..e3103012 100644 --- a/evm/gas-service.js +++ b/evm/gas-service.js @@ -8,7 +8,10 @@ const { } = ethers; const { Command, Option } = require('commander'); const { + printInfo, printWalletInfo, + printWarn, + printError, mainProcessor, prompt, getContractJSON, @@ -20,7 +23,7 @@ const { timeout, relayTransaction, } = require('./utils'); -const { addBaseOptions, printInfo, printWarn, printError } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); const { getWallet } = require('./sign-utils'); let failedChainUpdates = []; diff --git a/evm/gateway.js b/evm/gateway.js index e00e6934..58212bf2 100644 --- a/evm/gateway.js +++ b/evm/gateway.js @@ -10,18 +10,21 @@ const { } = ethers; const { Command, Option } = require('commander'); const { + printInfo, prompt, + printWarn, printWalletInfo, getEVMBatch, getEVMAddresses, isValidAddress, wasEventEmitted, mainProcessor, + printError, getGasOptions, httpGet, getContractJSON, } = require('./utils'); -const { printInfo, printWarn, printError, addBaseOptions } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); const { getWallet } = require('./sign-utils'); const IGateway = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarGateway.json'); diff --git a/evm/governance.js b/evm/governance.js index 69a8f83e..33a372a1 100644 --- a/evm/governance.js +++ b/evm/governance.js @@ -10,6 +10,7 @@ const { } = ethers; const { Command, Option } = require('commander'); const { + printInfo, getGasOptions, printWalletInfo, isValidTimeFormat, @@ -17,6 +18,7 @@ const { etaToDate, getCurrentTimeInSeconds, wasEventEmitted, + printWarn, getBytecodeHash, isValidAddress, mainProcessor, @@ -26,7 +28,6 @@ const { writeJSON, isKeccak256Hash, } = require('./utils.js'); -const { printInfo, printWarn } = require('../common.js'); const { addBaseOptions } = require('./cli-utils.js'); const { getWallet } = require('./sign-utils.js'); const IAxelarServiceGovernance = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarServiceGovernance.json'); diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 803043e5..fc54d931 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -7,8 +7,8 @@ const { constants: { AddressZero }, } = ethers; const { Command, Option } = require('commander'); -const { prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); -const { addExtendedOptions, printInfo } = require('../common'); +const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); +const { addExtendedOptions } = require('./cli-utils'); const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its'); const { getWallet } = require('./sign-utils'); const IInterchainTokenFactory = getContractJSON('IInterchainTokenFactory'); diff --git a/evm/its.js b/evm/its.js index 1031d3f7..373a1b18 100644 --- a/evm/its.js +++ b/evm/its.js @@ -9,9 +9,11 @@ const { Contract, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, printWarn, printError } = require('../common'); const { + printInfo, prompt, + printWarn, + printError, printWalletInfo, wasEventEmitted, mainProcessor, @@ -28,7 +30,7 @@ const InterchainTokenService = getContractJSON('InterchainTokenService'); const InterchainTokenFactory = getContractJSON('InterchainTokenFactory'); const IInterchainTokenDeployer = getContractJSON('IInterchainTokenDeployer'); const IOwnable = getContractJSON('IOwnable'); -const { addExtendedOptions } = require('../common'); +const { addExtendedOptions } = require('./cli-utils'); const { getSaltFromKey } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils'); const tokenManagerImplementations = { INTERCHAIN_TOKEN: 0, diff --git a/evm/min-deposit-proposal.js b/evm/min-deposit-proposal.js index 9efe88c8..15529f21 100644 --- a/evm/min-deposit-proposal.js +++ b/evm/min-deposit-proposal.js @@ -1,8 +1,8 @@ 'use strict'; const { Command, Option } = require('commander'); -const { addBaseOptions, printInfo } = require('../common'); -const { mainProcessor, isValidNumber, isValidAddress } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); +const { mainProcessor, printInfo, isValidNumber, isValidAddress } = require('./utils'); const values = []; diff --git a/evm/multisig.js b/evm/multisig.js index 2ac300f7..e38cdb61 100644 --- a/evm/multisig.js +++ b/evm/multisig.js @@ -9,9 +9,11 @@ const { } = ethers; const { Command, Option } = require('commander'); const { + printInfo, printWalletInfo, isNumber, isValidCalldata, + printWarn, isNonEmptyStringArray, isNumberArray, isValidAddress, @@ -21,7 +23,7 @@ const { isBytes32Array, getGasOptions, } = require('./utils'); -const { addBaseOptions, printInfo, printWarn } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); const IMultisig = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IMultisig.json'); const IGateway = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarGateway.json'); const IGovernance = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IAxelarServiceGovernance.json'); diff --git a/evm/operators.js b/evm/operators.js index d94ca173..7ad5f68e 100644 --- a/evm/operators.js +++ b/evm/operators.js @@ -8,6 +8,8 @@ const { } = ethers; const { Command, Option } = require('commander'); const { + printInfo, + printError, printWalletInfo, isAddressArray, isNumberArray, @@ -17,8 +19,9 @@ const { mainProcessor, validateParameters, getContractJSON, + printWarn, } = require('./utils'); -const { addBaseOptions, printInfo, printError, printWarn } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); const { getGasUpdates, printFailedChainUpdates, addFailedChainUpdate, relayTransaction } = require('./gas-service'); const { getWallet } = require('./sign-utils'); diff --git a/evm/ownership.js b/evm/ownership.js index 1384f96a..98f40f83 100644 --- a/evm/ownership.js +++ b/evm/ownership.js @@ -9,8 +9,8 @@ const { Contract, } = ethers; const { Command, Option } = require('commander'); -const { printWalletInfo, mainProcessor, prompt, getGasOptions } = require('./utils'); -const { printInfo, addBaseOptions } = require('../common'); +const { printInfo, printWalletInfo, mainProcessor, prompt, getGasOptions } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const IOwnable = require('@axelar-network/axelar-gmp-sdk-solidity/artifacts/contracts/interfaces/IOwnable.sol/IOwnable.json'); diff --git a/evm/remove-info.js b/evm/remove-info.js index 7f33a394..d1221df0 100644 --- a/evm/remove-info.js +++ b/evm/remove-info.js @@ -2,7 +2,7 @@ const { Command, Option } = require('commander'); const { mainProcessor } = require('./utils'); -const { addBaseOptions } = require('../common'); +const { addBaseOptions } = require('./cli-utils'); async function processCommand(options, chain, _) { const { contractName } = options; diff --git a/evm/send-tokens.js b/evm/send-tokens.js index d4a3f012..1c032919 100644 --- a/evm/send-tokens.js +++ b/evm/send-tokens.js @@ -7,8 +7,8 @@ const { getDefaultProvider, utils: { parseEther, parseUnits }, } = ethers; -const { printWalletInfo, isAddressArray, mainProcessor, isValidDecimal, prompt, getGasOptions } = require('./utils'); -const { printInfo, printError, addBaseOptions } = require('../common'); +const { printInfo, printError, printWalletInfo, isAddressArray, mainProcessor, isValidDecimal, prompt, getGasOptions } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const { storeSignedTx, getWallet, signTransaction } = require('./sign-utils.js'); async function processCommand(_, chain, options) { diff --git a/evm/sign-message-defender.js b/evm/sign-message-defender.js index 2978fa31..42e89391 100644 --- a/evm/sign-message-defender.js +++ b/evm/sign-message-defender.js @@ -7,8 +7,7 @@ const { utils: { hexlify, joinSignature, toUtf8Bytes }, } = ethers; const { Command, Option } = require('commander'); -const { validateParameters, printError } = require('./utils'); -const { printInfo } = require('../common'); +const { printInfo, validateParameters, printError } = require('./utils'); async function main(options) { const { apiKey, secret, message } = options; diff --git a/evm/sign-message.js b/evm/sign-message.js index e4e816e1..035baa01 100644 --- a/evm/sign-message.js +++ b/evm/sign-message.js @@ -6,8 +6,8 @@ const { } = ethers; const { Command, Option } = require('commander'); const { getWallet } = require('./sign-utils'); -const { validateParameters } = require('./utils'); -const { printInfo, addBaseOptions } = require('../common'); +const { printInfo, validateParameters } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); async function processCommand(options) { const { message, privateKey } = options; diff --git a/evm/sign-utils.js b/evm/sign-utils.js index 11699a2a..b1991cb5 100644 --- a/evm/sign-utils.js +++ b/evm/sign-utils.js @@ -10,8 +10,7 @@ const { const path = require('path'); const { LedgerSigner } = require('./LedgerSigner'); -const { printObj, isValidPrivateKey, isNumber, isValidNumber } = require('./utils'); -const { printInfo, printError } = require('../common'); +const { printError, printInfo, printObj, isValidPrivateKey, isNumber, isValidNumber } = require('./utils'); /** * Get a wallet object from a private key or a ledger device diff --git a/evm/update-nonces.js b/evm/update-nonces.js index 2e92ac89..b1a4dca9 100644 --- a/evm/update-nonces.js +++ b/evm/update-nonces.js @@ -5,8 +5,8 @@ const { Command, Option } = require('commander'); const { ethers } = require('hardhat'); const { getDefaultProvider } = ethers; -const { mainProcessor, prompt } = require('./utils'); -const { printInfo, addBaseOptions } = require('../common'); +const { mainProcessor, printInfo, prompt } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const { getNonceFromProvider, getNonceFileData, updateNonceFileData } = require('./sign-utils'); async function processCommand(_, chain, options) { diff --git a/evm/update-static-gas-options.js b/evm/update-static-gas-options.js index f6e28308..12542c67 100644 --- a/evm/update-static-gas-options.js +++ b/evm/update-static-gas-options.js @@ -9,8 +9,8 @@ const { BigNumber, } = ethers; -const { mainProcessor, prompt } = require('./utils'); -const { printInfo, addBaseOptions } = require('../common'); +const { printInfo, mainProcessor, prompt } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const defaultGasLimit = 3e6; const gasPriceMultiplier = 5; diff --git a/evm/upgradable.js b/evm/upgradable.js index 659212bc..e68def97 100644 --- a/evm/upgradable.js +++ b/evm/upgradable.js @@ -5,8 +5,17 @@ const { Contract, ContractFactory } = ethers; const { deployAndInitContractConstant, create3DeployAndInitContract } = require('@axelar-network/axelar-gmp-sdk-solidity'); const IUpgradable = require('@axelar-network/axelar-gmp-sdk-solidity/interfaces/IUpgradable.json'); -const { printInfo, printWarn } = require('../common'); -const { verifyContract, deployCreate, getBytecodeHash, deployContract, getDeployedAddress, isContract, prompt } = require('./utils'); +const { + verifyContract, + deployCreate, + getBytecodeHash, + deployContract, + printInfo, + getDeployedAddress, + isContract, + prompt, + printWarn, +} = require('./utils'); async function deployUpgradable( wallet, diff --git a/evm/utils.js b/evm/utils.js index c247a394..da1d6a7a 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -1263,7 +1263,7 @@ async function getWeightedSigners(config, chain, options) { } module.exports = { - ...require('../common'), + ...require('../common/utils'), deployCreate, deployCreate2, deployCreate3, diff --git a/evm/verify-contract.js b/evm/verify-contract.js index 3ed43b3c..84cf255f 100644 --- a/evm/verify-contract.js +++ b/evm/verify-contract.js @@ -9,9 +9,8 @@ const { Contract, } = ethers; const { Command, Option } = require('commander'); -const { verifyContract, getEVMAddresses, mainProcessor, getContractJSON, validateParameters } = require('./utils'); - -const { printInfo, printError, addBaseOptions } = require('../common'); +const { verifyContract, getEVMAddresses, printInfo, printError, mainProcessor, getContractJSON, validateParameters } = require('./utils'); +const { addBaseOptions } = require('./cli-utils'); const { getTrustedChainsAndAddresses } = require('./its'); async function processCommand(config, chain, options) { From 50fd8f6094d43942c5a7befbe06fcbf5ba3b9194 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 16:51:42 +0700 Subject: [PATCH 06/13] chore: fix lint --- evm/cli-utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evm/cli-utils.js b/evm/cli-utils.js index a49e1100..070c799d 100644 --- a/evm/cli-utils.js +++ b/evm/cli-utils.js @@ -1,3 +1,3 @@ module.exports = { - ...require("../common/cli-utils"), -} + ...require('../common/cli-utils'), +}; From 3acb91561811c70abd98f320c0551e60d13215fe Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 16:59:05 +0700 Subject: [PATCH 07/13] chore: move is* functions to common --- common/utils.js | 58 +++++++++++++++++++++++++ evm/utils.js | 111 +++++++----------------------------------------- 2 files changed, 73 insertions(+), 96 deletions(-) diff --git a/common/utils.js b/common/utils.js index 3fbde9f9..83839a1e 100644 --- a/common/utils.js +++ b/common/utils.js @@ -46,6 +46,56 @@ function printLog(log) { console.log(JSON.stringify({ log }, null, 2)); } +const isNonEmptyString = (arg) => { + return typeof arg === 'string' && arg !== ''; +}; + +const isString = (arg) => { + return typeof arg === 'string'; +}; + +const isStringArray = (arr) => Array.isArray(arr) && arr.every(isString); + +const isNumber = (arg) => { + return Number.isInteger(arg); +}; + +const isValidNumber = (arg) => { + return !isNaN(parseInt(arg)) && isFinite(arg); +}; + +const isValidDecimal = (arg) => { + return !isNaN(parseFloat(arg)) && isFinite(arg); +}; + +const isNumberArray = (arr) => { + if (!Array.isArray(arr)) { + return false; + } + + for (const item of arr) { + if (!isNumber(item)) { + return false; + } + } + + return true; +}; + +const isNonEmptyStringArray = (arr) => { + if (!Array.isArray(arr)) { + return false; + } + + for (const item of arr) { + if (typeof item !== 'string') { + return false; + } + } + + return true; +}; + module.exports = { loadConfig, saveConfig, @@ -54,4 +104,12 @@ module.exports = { printWarn, printError, printLog, + isNonEmptyString, + isString, + isStringArray, + isNumber, + isValidNumber, + isValidDecimal, + isNumberArray, + isNonEmptyStringArray, }; diff --git a/evm/utils.js b/evm/utils.js index da1d6a7a..ef2c343a 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -13,10 +13,23 @@ const https = require('https'); const http = require('http'); const fs = require('fs'); const path = require('path'); -const { outputJsonSync } = require('fs-extra'); const readlineSync = require('readline-sync'); const chalk = require('chalk'); -const { loadConfig, saveConfig } = require('../common'); +const { + loadConfig, + saveConfig, + isNonEmptyString, + isNonEmptyStringArray, + isNumber, + isNumberArray, + isString, + isValidNumber, + printInfo, + isValidDecimal, + printError, + printWarn, + writeJSON, +} = require('../common'); const { create3DeployContract, deployContractConstant, @@ -123,41 +136,6 @@ const deployCreate3 = async ( return contract; }; -const printInfo = (msg, info = '', colour = chalk.green) => { - if (info) { - console.log(`${msg}: ${colour(info)}\n`); - } else { - console.log(`${msg}\n`); - } -}; - -const printWarn = (msg, info = '') => { - if (info) { - msg = `${msg}: ${info}`; - } - - console.log(`${chalk.italic.yellow(msg)}\n`); -}; - -const printError = (msg, info = '') => { - if (info) { - msg = `${msg}: ${info}`; - } - - console.log(`${chalk.bold.red(msg)}\n`); -}; - -function printLog(log) { - console.log(JSON.stringify({ log }, null, 2)); -} - -const writeJSON = (data, name) => { - outputJsonSync(name, data, { - spaces: 2, - EOL: '\n', - }); -}; - const httpGet = (url) => { return new Promise((resolve, reject) => { (url.startsWith('https://') ? https : http).get(url, (res) => { @@ -205,56 +183,6 @@ const httpPost = async (url, data) => { return response.json(); }; -const isNonEmptyString = (arg) => { - return typeof arg === 'string' && arg !== ''; -}; - -const isString = (arg) => { - return typeof arg === 'string'; -}; - -const isStringArray = (arr) => Array.isArray(arr) && arr.every(isString); - -const isNumber = (arg) => { - return Number.isInteger(arg); -}; - -const isValidNumber = (arg) => { - return !isNaN(parseInt(arg)) && isFinite(arg); -}; - -const isValidDecimal = (arg) => { - return !isNaN(parseFloat(arg)) && isFinite(arg); -}; - -const isNumberArray = (arr) => { - if (!Array.isArray(arr)) { - return false; - } - - for (const item of arr) { - if (!isNumber(item)) { - return false; - } - } - - return true; -}; - -const isNonEmptyStringArray = (arr) => { - if (!Array.isArray(arr)) { - return false; - } - - for (const item of arr) { - if (typeof item !== 'string') { - return false; - } - } - - return true; -}; - const isAddressArray = (arr) => { if (!Array.isArray(arr)) return false; @@ -1268,7 +1196,6 @@ module.exports = { deployCreate2, deployCreate3, deployContract, - writeJSON, copyObject, httpGet, httpPost, @@ -1276,14 +1203,6 @@ module.exports = { getBytecodeHash, predictAddressCreate, getDeployedAddress, - isString, - isNonEmptyString, - isStringArray, - isNumber, - isValidNumber, - isValidDecimal, - isNumberArray, - isNonEmptyStringArray, isAddressArray, isKeccak256Hash, isValidCalldata, From 75c60ddea884f5d24b278ad4f8d5c3ec6265d687 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 17:04:17 +0700 Subject: [PATCH 08/13] chore: move copyObject, httpGet, httpPost --- common/utils.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++ evm/utils.js | 59 ++++--------------------------------------------- 2 files changed, 60 insertions(+), 55 deletions(-) diff --git a/common/utils.js b/common/utils.js index 83839a1e..efb44c9f 100644 --- a/common/utils.js +++ b/common/utils.js @@ -2,6 +2,8 @@ const { outputJsonSync } = require('fs-extra'); const chalk = require('chalk'); +const https = require('https'); +const http = require('http'); function loadConfig(env) { return require(`${__dirname}/../axelar-chains-config/info/${env}.json`); @@ -96,6 +98,57 @@ const isNonEmptyStringArray = (arr) => { return true; }; +function copyObject(obj) { + return JSON.parse(JSON.stringify(obj)); +} + +const httpGet = (url) => { + return new Promise((resolve, reject) => { + (url.startsWith('https://') ? https : http).get(url, (res) => { + const { statusCode } = res; + const contentType = res.headers['content-type']; + let error; + + if (statusCode !== 200 && statusCode !== 301) { + error = new Error('Request Failed.\n' + `Request: ${url}\nStatus Code: ${statusCode}`); + } else if (!/^application\/json/.test(contentType)) { + error = new Error('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); + } + + if (error) { + res.resume(); + reject(error); + return; + } + + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', (chunk) => { + rawData += chunk; + }); + res.on('end', () => { + try { + const parsedData = JSON.parse(rawData); + resolve(parsedData); + } catch (e) { + reject(e); + } + }); + }); + }); +}; + +const httpPost = async (url, data) => { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }); + return response.json(); +} + module.exports = { loadConfig, saveConfig, @@ -112,4 +165,7 @@ module.exports = { isValidDecimal, isNumberArray, isNonEmptyStringArray, + copyObject, + httpGet, + httpPost, }; diff --git a/evm/utils.js b/evm/utils.js index ef2c343a..d2540c09 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -9,8 +9,6 @@ const { getDefaultProvider, BigNumber, } = ethers; -const https = require('https'); -const http = require('http'); const fs = require('fs'); const path = require('path'); const readlineSync = require('readline-sync'); @@ -26,9 +24,12 @@ const { isValidNumber, printInfo, isValidDecimal, + copyObject, printError, printWarn, writeJSON, + httpGet, + httpPost, } = require('../common'); const { create3DeployContract, @@ -136,53 +137,6 @@ const deployCreate3 = async ( return contract; }; -const httpGet = (url) => { - return new Promise((resolve, reject) => { - (url.startsWith('https://') ? https : http).get(url, (res) => { - const { statusCode } = res; - const contentType = res.headers['content-type']; - let error; - - if (statusCode !== 200 && statusCode !== 301) { - error = new Error('Request Failed.\n' + `Request: ${url}\nStatus Code: ${statusCode}`); - } else if (!/^application\/json/.test(contentType)) { - error = new Error('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); - } - - if (error) { - res.resume(); - reject(error); - return; - } - - res.setEncoding('utf8'); - let rawData = ''; - res.on('data', (chunk) => { - rawData += chunk; - }); - res.on('end', () => { - try { - const parsedData = JSON.parse(rawData); - resolve(parsedData); - } catch (e) { - reject(e); - } - }); - }); - }); -}; - -const httpPost = async (url, data) => { - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }); - return response.json(); -}; - const isAddressArray = (arr) => { if (!Array.isArray(arr)) return false; @@ -765,9 +719,7 @@ function wasEventEmitted(receipt, contract, eventName) { return receipt.logs.some((log) => log.topics[0] === event.topics[0]); } -function copyObject(obj) { - return JSON.parse(JSON.stringify(obj)); -} + const mainProcessor = async (options, processCommand, save = true, catchErr = false) => { if (!options.env) { @@ -1196,9 +1148,6 @@ module.exports = { deployCreate2, deployCreate3, deployContract, - copyObject, - httpGet, - httpPost, printObj, getBytecodeHash, predictAddressCreate, From bbfa304e035a8607f830fb93aa38b3ebdd9578c8 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 17:08:09 +0700 Subject: [PATCH 09/13] chore: move isValidTimeFormat, parseArgs, sleep --- common/utils.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ evm/utils.js | 56 ++----------------------------------------------- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/common/utils.js b/common/utils.js index efb44c9f..f5e0d244 100644 --- a/common/utils.js +++ b/common/utils.js @@ -149,6 +149,58 @@ const httpPost = async (url, data) => { return response.json(); } +/** + * Parses the input string into an array of arguments, recognizing and converting + * to the following types: boolean, number, array, and string. + * + * @param {string} args - The string of arguments to parse. + * + * @returns {Array} - An array containing parsed arguments. + * + * @example + * const input = "hello true 123 [1,2,3]"; + * const output = parseArgs(input); + * console.log(output); // Outputs: [ 'hello', true, 123, [ 1, 2, 3] ] + */ +const parseArgs = (args) => { + return args + .split(/\s+/) + .filter((item) => item !== '') + .map((arg) => { + if (arg.startsWith('[') && arg.endsWith(']')) { + return JSON.parse(arg); + } else if (arg === 'true') { + return true; + } else if (arg === 'false') { + return false; + } else if (!isNaN(arg) && !arg.startsWith('0x')) { + return Number(arg); + } + + return arg; + }); +}; + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +/** + * Validate if the input string matches the time format YYYY-MM-DDTHH:mm:ss + * + * @param {string} timeString - The input time string. + * @return {boolean} - Returns true if the format matches, false otherwise. + */ +function isValidTimeFormat(timeString) { + const regex = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/; + + if (timeString === '0') { + return true; + } + + return regex.test(timeString); +} + module.exports = { loadConfig, saveConfig, @@ -165,7 +217,10 @@ module.exports = { isValidDecimal, isNumberArray, isNonEmptyStringArray, + isValidTimeFormat, copyObject, httpGet, httpPost, + parseArgs, + sleep, }; diff --git a/evm/utils.js b/evm/utils.js index d2540c09..35e3ab25 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -22,6 +22,7 @@ const { isNumberArray, isString, isValidNumber, + isValidTimeFormat, printInfo, isValidDecimal, copyObject, @@ -30,6 +31,7 @@ const { writeJSON, httpGet, httpPost, + sleep, } = require('../common'); const { create3DeployContract, @@ -227,22 +229,6 @@ function isValidAddress(address, allowZeroAddress) { return isAddress(address); } -/** - * Validate if the input string matches the time format YYYY-MM-DDTHH:mm:ss - * - * @param {string} timeString - The input time string. - * @return {boolean} - Returns true if the format matches, false otherwise. - */ -function isValidTimeFormat(timeString) { - const regex = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/; - - if (timeString === '0') { - return true; - } - - return regex.test(timeString); -} - // Validate if the input privateKey is correct function isValidPrivateKey(privateKey) { // Check if it's a valid hexadecimal string @@ -314,38 +300,6 @@ function validateParameters(parameters) { } } -/** - * Parses the input string into an array of arguments, recognizing and converting - * to the following types: boolean, number, array, and string. - * - * @param {string} args - The string of arguments to parse. - * - * @returns {Array} - An array containing parsed arguments. - * - * @example - * const input = "hello true 123 [1,2,3]"; - * const output = parseArgs(input); - * console.log(output); // Outputs: [ 'hello', true, 123, [ 1, 2, 3] ] - */ -const parseArgs = (args) => { - return args - .split(/\s+/) - .filter((item) => item !== '') - .map((arg) => { - if (arg.startsWith('[') && arg.endsWith(']')) { - return JSON.parse(arg); - } else if (arg === 'true') { - return true; - } else if (arg === 'false') { - return false; - } else if (!isNaN(arg) && !arg.startsWith('0x')) { - return Number(arg); - } - - return arg; - }); -}; - /** * Compute bytecode hash for a deployed contract or contract factory as it would appear on-chain. * Some chains don't use keccak256 for their state representation, which is taken into account by this function. @@ -568,10 +522,6 @@ const getAmplifierKeyAddresses = async (config, chain) => { return { addresses: weightedAddresses, threshold: verifierSet.threshold, created_at: verifierSet.created_at, verifierSetId }; }; -function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - function loadParallelExecutionConfig(env, chain) { return require(`${__dirname}/../chains-info/${env}-${chain}.json`); } @@ -1157,14 +1107,12 @@ module.exports = { isValidCalldata, isValidBytesAddress, validateParameters, - parseArgs, getProxy, getEVMBatch, getEVMAddresses, getConfigByChainId, sleep, printWalletInfo, - isValidTimeFormat, dateToEta, etaToDate, getCurrentTimeInSeconds, From d4067fdb43ba4575a6df25e203c00fa8a24cc624 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 17:09:57 +0700 Subject: [PATCH 10/13] chore: move dateToEta, etaToDate, getCurrentTimeInSeconds --- common/utils.js | 33 +++++++++++++++++++++++++++++++++ evm/utils.js | 33 +-------------------------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/common/utils.js b/common/utils.js index f5e0d244..b81443e5 100644 --- a/common/utils.js +++ b/common/utils.js @@ -201,6 +201,36 @@ function isValidTimeFormat(timeString) { return regex.test(timeString); } +const dateToEta = (utcTimeString) => { + if (utcTimeString === '0') { + return 0; + } + + const date = new Date(utcTimeString + 'Z'); + + if (isNaN(date.getTime())) { + throw new Error(`Invalid date format provided: ${utcTimeString}`); + } + + return Math.floor(date.getTime() / 1000); +}; + +const etaToDate = (timestamp) => { + const date = new Date(timestamp * 1000); + + if (isNaN(date.getTime())) { + throw new Error(`Invalid timestamp provided: ${timestamp}`); + } + + return date.toISOString().slice(0, 19); +}; + +const getCurrentTimeInSeconds = () => { + const now = new Date(); + const currentTimeInSecs = Math.floor(now.getTime() / 1000); + return currentTimeInSecs; +}; + module.exports = { loadConfig, saveConfig, @@ -223,4 +253,7 @@ module.exports = { httpPost, parseArgs, sleep, + dateToEta, + etaToDate, + getCurrentTimeInSeconds, }; diff --git a/evm/utils.js b/evm/utils.js index 35e3ab25..140d2c6b 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -165,11 +165,7 @@ const isBytes32Array = (arr) => { return true; }; -const getCurrentTimeInSeconds = () => { - const now = new Date(); - const currentTimeInSecs = Math.floor(now.getTime() / 1000); - return currentTimeInSecs; -}; + /** * Determines if a given input is a valid keccak256 hash. @@ -631,30 +627,6 @@ const deployContract = async ( } }; -const dateToEta = (utcTimeString) => { - if (utcTimeString === '0') { - return 0; - } - - const date = new Date(utcTimeString + 'Z'); - - if (isNaN(date.getTime())) { - throw new Error(`Invalid date format provided: ${utcTimeString}`); - } - - return Math.floor(date.getTime() / 1000); -}; - -const etaToDate = (timestamp) => { - const date = new Date(timestamp * 1000); - - if (isNaN(date.getTime())) { - throw new Error(`Invalid timestamp provided: ${timestamp}`); - } - - return date.toISOString().slice(0, 19); -}; - /** * Check if a specific event was emitted in a transaction receipt. * @@ -1113,9 +1085,6 @@ module.exports = { getConfigByChainId, sleep, printWalletInfo, - dateToEta, - etaToDate, - getCurrentTimeInSeconds, wasEventEmitted, isContract, isValidAddress, From 164a19ac2fa0b3d6240266322cbad56b6505c078 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 17:15:11 +0700 Subject: [PATCH 11/13] chore: move prompt, findProjectRoot, toBigNumberString --- common/utils.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ evm/utils.js | 40 +--------------------------------------- 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/common/utils.js b/common/utils.js index b81443e5..5f91ac9f 100644 --- a/common/utils.js +++ b/common/utils.js @@ -1,9 +1,12 @@ 'use strict'; +const fs = require('fs'); +const path = require('path'); const { outputJsonSync } = require('fs-extra'); const chalk = require('chalk'); const https = require('https'); const http = require('http'); +const readlineSync = require('readline-sync'); function loadConfig(env) { return require(`${__dirname}/../axelar-chains-config/info/${env}.json`); @@ -231,6 +234,44 @@ const getCurrentTimeInSeconds = () => { return currentTimeInSecs; }; +/** + * Prompt the user for confirmation + * @param {string} question Prompt question + * @param {boolean} yes If true, skip the prompt + * @returns {boolean} Returns true if the prompt was skipped, false otherwise + */ +const prompt = (question, yes = false) => { + // skip the prompt if yes was passed + if (yes) { + return false; + } + + const answer = readlineSync.question(`${question} ${chalk.green('(y/n)')} `); + console.log(); + + return answer !== 'y'; +}; + +function findProjectRoot(startDir) { + let currentDir = startDir; + + while (currentDir !== path.parse(currentDir).root) { + const potentialPackageJson = path.join(currentDir, 'package.json'); + + if (fs.existsSync(potentialPackageJson)) { + return currentDir; + } + + currentDir = path.resolve(currentDir, '..'); + } + + throw new Error('Unable to find project root'); +} + +function toBigNumberString(number) { + return Math.ceil(number).toLocaleString('en', { useGrouping: false }); +} + module.exports = { loadConfig, saveConfig, @@ -256,4 +297,7 @@ module.exports = { dateToEta, etaToDate, getCurrentTimeInSeconds, + prompt, + findProjectRoot, + toBigNumberString, }; diff --git a/evm/utils.js b/evm/utils.js index 140d2c6b..2c8027f6 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -11,7 +11,6 @@ const { } = ethers; const fs = require('fs'); const path = require('path'); -const readlineSync = require('readline-sync'); const chalk = require('chalk'); const { loadConfig, @@ -32,6 +31,7 @@ const { httpGet, httpPost, sleep, + findProjectRoot, } = require('../common'); const { create3DeployContract, @@ -782,23 +782,7 @@ const mainProcessor = async (options, processCommand, save = true, catchErr = fa } }; -/** - * Prompt the user for confirmation - * @param {string} question Prompt question - * @param {boolean} yes If true, skip the prompt - * @returns {boolean} Returns true if the prompt was skipped, false otherwise - */ -const prompt = (question, yes = false) => { - // skip the prompt if yes was passed - if (yes) { - return false; - } - const answer = readlineSync.question(`${question} ${chalk.green('(y/n)')} `); - console.log(); - - return answer !== 'y'; -}; function getConfigByChainId(chainId, config) { for (const chain of Object.values(config.chains)) { @@ -810,22 +794,6 @@ function getConfigByChainId(chainId, config) { throw new Error(`Chain with chainId ${chainId} not found in the config`); } -function findProjectRoot(startDir) { - let currentDir = startDir; - - while (currentDir !== path.parse(currentDir).root) { - const potentialPackageJson = path.join(currentDir, 'package.json'); - - if (fs.existsSync(potentialPackageJson)) { - return currentDir; - } - - currentDir = path.resolve(currentDir, '..'); - } - - throw new Error('Unable to find project root'); -} - function findContractPath(dir, contractName) { const files = fs.readdirSync(dir); @@ -979,10 +947,6 @@ function isValidChain(config, chainName) { } } -function toBigNumberString(number) { - return Math.ceil(number).toLocaleString('en', { useGrouping: false }); -} - function timeout(prom, time, exception) { let timer; @@ -1091,7 +1055,6 @@ module.exports = { isValidPrivateKey, isValidTokenId, verifyContract, - prompt, mainProcessor, getContractPath, getContractJSON, @@ -1100,7 +1063,6 @@ module.exports = { getSaltFromKey, getDeployOptions, isValidChain, - toBigNumberString, timeout, getAmplifierKeyAddresses, getContractConfig, From 512af7c5ca3f13eb142ec18d5d1282a2a3f49a7b Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 17:16:54 +0700 Subject: [PATCH 12/13] chore: move timeout --- common/utils.js | 11 +++++++++++ evm/utils.js | 13 +------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common/utils.js b/common/utils.js index 5f91ac9f..09123ee6 100644 --- a/common/utils.js +++ b/common/utils.js @@ -188,6 +188,16 @@ function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } +function timeout(prom, time, exception) { + let timer; + + // Racing the promise with a timer + // If the timer resolves first, the promise is rejected with the exception + return Promise.race([prom, new Promise((resolve, reject) => (timer = setTimeout(reject, time, exception)))]).finally(() => + clearTimeout(timer), + ); +} + /** * Validate if the input string matches the time format YYYY-MM-DDTHH:mm:ss * @@ -300,4 +310,5 @@ module.exports = { prompt, findProjectRoot, toBigNumberString, + timeout, }; diff --git a/evm/utils.js b/evm/utils.js index 2c8027f6..d3c77a2f 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -32,6 +32,7 @@ const { httpPost, sleep, findProjectRoot, + timeout, } = require('../common'); const { create3DeployContract, @@ -947,16 +948,6 @@ function isValidChain(config, chainName) { } } -function timeout(prom, time, exception) { - let timer; - - // Racing the promise with a timer - // If the timer resolves first, the promise is rejected with the exception - return Promise.race([prom, new Promise((resolve, reject) => (timer = setTimeout(reject, time, exception)))]).finally(() => - clearTimeout(timer), - ); -} - async function relayTransaction(options, chain, contract, method, params, nativeValue = 0, gasOptions = {}, expectedEvent = null) { if (options.relayerAPI) { const result = await httpPost(options.relayerAPI, { @@ -1047,7 +1038,6 @@ module.exports = { getEVMBatch, getEVMAddresses, getConfigByChainId, - sleep, printWalletInfo, wasEventEmitted, isContract, @@ -1063,7 +1053,6 @@ module.exports = { getSaltFromKey, getDeployOptions, isValidChain, - timeout, getAmplifierKeyAddresses, getContractConfig, relayTransaction, From 0877f588098cf033b05a6c1aab5199e8c2df49e7 Mon Sep 17 00:00:00 2001 From: npty Date: Fri, 26 Jul 2024 17:17:18 +0700 Subject: [PATCH 13/13] chore: fix lint --- common/utils.js | 166 ++++++++++++++++++++++++------------------------ evm/utils.js | 6 -- 2 files changed, 83 insertions(+), 89 deletions(-) diff --git a/common/utils.js b/common/utils.js index 09123ee6..2c2a85c2 100644 --- a/common/utils.js +++ b/common/utils.js @@ -102,55 +102,55 @@ const isNonEmptyStringArray = (arr) => { }; function copyObject(obj) { - return JSON.parse(JSON.stringify(obj)); + return JSON.parse(JSON.stringify(obj)); } const httpGet = (url) => { - return new Promise((resolve, reject) => { - (url.startsWith('https://') ? https : http).get(url, (res) => { - const { statusCode } = res; - const contentType = res.headers['content-type']; - let error; - - if (statusCode !== 200 && statusCode !== 301) { - error = new Error('Request Failed.\n' + `Request: ${url}\nStatus Code: ${statusCode}`); - } else if (!/^application\/json/.test(contentType)) { - error = new Error('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); - } - - if (error) { - res.resume(); - reject(error); - return; - } - - res.setEncoding('utf8'); - let rawData = ''; - res.on('data', (chunk) => { - rawData += chunk; - }); - res.on('end', () => { - try { - const parsedData = JSON.parse(rawData); - resolve(parsedData); - } catch (e) { - reject(e); - } - }); - }); - }); + return new Promise((resolve, reject) => { + (url.startsWith('https://') ? https : http).get(url, (res) => { + const { statusCode } = res; + const contentType = res.headers['content-type']; + let error; + + if (statusCode !== 200 && statusCode !== 301) { + error = new Error('Request Failed.\n' + `Request: ${url}\nStatus Code: ${statusCode}`); + } else if (!/^application\/json/.test(contentType)) { + error = new Error('Invalid content-type.\n' + `Expected application/json but received ${contentType}`); + } + + if (error) { + res.resume(); + reject(error); + return; + } + + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', (chunk) => { + rawData += chunk; + }); + res.on('end', () => { + try { + const parsedData = JSON.parse(rawData); + resolve(parsedData); + } catch (e) { + reject(e); + } + }); + }); + }); }; const httpPost = async (url, data) => { - const response = await fetch(url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(data), - }); - return response.json(); -} + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }); + return response.json(); +}; /** * Parses the input string into an array of arguments, recognizing and converting @@ -166,36 +166,36 @@ const httpPost = async (url, data) => { * console.log(output); // Outputs: [ 'hello', true, 123, [ 1, 2, 3] ] */ const parseArgs = (args) => { - return args - .split(/\s+/) - .filter((item) => item !== '') - .map((arg) => { - if (arg.startsWith('[') && arg.endsWith(']')) { - return JSON.parse(arg); - } else if (arg === 'true') { - return true; - } else if (arg === 'false') { - return false; - } else if (!isNaN(arg) && !arg.startsWith('0x')) { - return Number(arg); - } - - return arg; - }); + return args + .split(/\s+/) + .filter((item) => item !== '') + .map((arg) => { + if (arg.startsWith('[') && arg.endsWith(']')) { + return JSON.parse(arg); + } else if (arg === 'true') { + return true; + } else if (arg === 'false') { + return false; + } else if (!isNaN(arg) && !arg.startsWith('0x')) { + return Number(arg); + } + + return arg; + }); }; function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); + return new Promise((resolve) => setTimeout(resolve, ms)); } function timeout(prom, time, exception) { - let timer; + let timer; - // Racing the promise with a timer - // If the timer resolves first, the promise is rejected with the exception - return Promise.race([prom, new Promise((resolve, reject) => (timer = setTimeout(reject, time, exception)))]).finally(() => - clearTimeout(timer), - ); + // Racing the promise with a timer + // If the timer resolves first, the promise is rejected with the exception + return Promise.race([prom, new Promise((resolve, reject) => (timer = setTimeout(reject, time, exception)))]).finally(() => + clearTimeout(timer), + ); } /** @@ -251,35 +251,35 @@ const getCurrentTimeInSeconds = () => { * @returns {boolean} Returns true if the prompt was skipped, false otherwise */ const prompt = (question, yes = false) => { - // skip the prompt if yes was passed - if (yes) { - return false; - } + // skip the prompt if yes was passed + if (yes) { + return false; + } - const answer = readlineSync.question(`${question} ${chalk.green('(y/n)')} `); - console.log(); + const answer = readlineSync.question(`${question} ${chalk.green('(y/n)')} `); + console.log(); - return answer !== 'y'; + return answer !== 'y'; }; function findProjectRoot(startDir) { - let currentDir = startDir; + let currentDir = startDir; - while (currentDir !== path.parse(currentDir).root) { - const potentialPackageJson = path.join(currentDir, 'package.json'); + while (currentDir !== path.parse(currentDir).root) { + const potentialPackageJson = path.join(currentDir, 'package.json'); - if (fs.existsSync(potentialPackageJson)) { - return currentDir; - } + if (fs.existsSync(potentialPackageJson)) { + return currentDir; + } - currentDir = path.resolve(currentDir, '..'); - } + currentDir = path.resolve(currentDir, '..'); + } - throw new Error('Unable to find project root'); + throw new Error('Unable to find project root'); } function toBigNumberString(number) { - return Math.ceil(number).toLocaleString('en', { useGrouping: false }); + return Math.ceil(number).toLocaleString('en', { useGrouping: false }); } module.exports = { diff --git a/evm/utils.js b/evm/utils.js index d3c77a2f..d9e8c058 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -166,8 +166,6 @@ const isBytes32Array = (arr) => { return true; }; - - /** * Determines if a given input is a valid keccak256 hash. * @@ -642,8 +640,6 @@ function wasEventEmitted(receipt, contract, eventName) { return receipt.logs.some((log) => log.topics[0] === event.topics[0]); } - - const mainProcessor = async (options, processCommand, save = true, catchErr = false) => { if (!options.env) { throw new Error('Environment was not provided'); @@ -783,8 +779,6 @@ const mainProcessor = async (options, processCommand, save = true, catchErr = fa } }; - - function getConfigByChainId(chainId, config) { for (const chain of Object.values(config.chains)) { if (chain.chainId === chainId) {