From ad99b69246f559775dd6df001ae176d22f86b3fe Mon Sep 17 00:00:00 2001 From: swelf Date: Thu, 1 Aug 2024 18:02:24 +0300 Subject: [PATCH 01/40] kv queries --- package.json | 6 +- src/helpers/interchainqueries.ts | 4 +- .../run_in_band/interchain_kv_query.test.ts | 137 +++++++++++++++++- .../interchain_tx_query_plain.test.ts | 11 +- src/testcases/run_in_band/parameters.test.ts | 4 + yarn.lock | 12 +- 6 files changed, 152 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index e9f241bf..d289d410 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,8 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "0.1.0-rc4", - "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#4d1663cd0e46d488b742612ee62baf51dd3d8915", + "@neutron-org/neutronjs": "0.1.0-rc5", + "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#04cc73ea1fc9922cc3af774ccf6b16aeee26b7db", "@types/lodash": "^4.14.182", "axios": "^0.27.2", "commander": "^10.0.0", @@ -90,4 +90,4 @@ "engines": { "node": ">=20.0" } -} +} \ No newline at end of file diff --git a/src/helpers/interchainqueries.ts b/src/helpers/interchainqueries.ts index 770129bd..62acd517 100644 --- a/src/helpers/interchainqueries.ts +++ b/src/helpers/interchainqueries.ts @@ -604,13 +604,13 @@ export const registerTransfersQuery = async ( contractAddress: string, connectionId: string, updatePeriod: number, - recipient: string, + recipients: string[], ) => { const res = await cm.execute(contractAddress, { register_transfers_query: { connection_id: connectionId, update_period: updatePeriod, - recipient: recipient, + recipients: recipients, }, }); diff --git a/src/testcases/run_in_band/interchain_kv_query.test.ts b/src/testcases/run_in_band/interchain_kv_query.test.ts index 92e8cc7d..1b0d9d03 100644 --- a/src/testcases/run_in_band/interchain_kv_query.test.ts +++ b/src/testcases/run_in_band/interchain_kv_query.test.ts @@ -3,6 +3,7 @@ import { filterIBCDenoms, } from '../../helpers/interchainqueries'; import '@neutron-org/neutronjsplus'; +import { QueryClientImpl as AdminQueryClient } from '@neutron-org/neutronjs/cosmos/adminmodule/adminmodule/query.rpc.Query'; import { getEventAttribute } from '@neutron-org/neutronjsplus/dist/cosmos'; import { inject } from 'vitest'; import { @@ -59,6 +60,9 @@ import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1 import { QueryClientImpl as SlashingQuerier } from 'cosmjs-types/cosmos/slashing/v1beta1/query'; const config = require('../../config.json'); +let chainManagerAddress: string; +let mainDao: Dao; + describe('Neutron / Interchain KV Query', () => { const connectionId = 'connection-0'; const updatePeriods: { [key: number]: number } = { @@ -66,6 +70,7 @@ describe('Neutron / Interchain KV Query', () => { 3: 4, 4: 3, 5: 4, + 6: 11, }; let testState: LocalState; let neutronClient: SigningNeutronClient; @@ -80,6 +85,7 @@ describe('Neutron / Interchain KV Query', () => { let bankQuerierGaia: BankQuerier; let slashingQuerier: SlashingQuerier; let contractAddress: string; + let daoMember: DaoMember; beforeAll(async () => { testState = await LocalState.create(config, inject('mnemonics')); @@ -114,9 +120,9 @@ describe('Neutron / Interchain KV Query', () => { neutronRpcClient, ); const daoContracts = await getDaoContracts(neutronClient, daoCoreAddress); - const dao = new Dao(neutronClient, daoContracts); - const daoMember = new DaoMember( - dao, + mainDao = new Dao(neutronClient, daoContracts); + daoMember = new DaoMember( + mainDao, neutronClient.client, neutronWallet.address, NEUTRON_DENOM, @@ -126,6 +132,10 @@ describe('Neutron / Interchain KV Query', () => { bankQuerier = new BankQuerier(neutronRpcClient); bankQuerierGaia = new BankQuerier(await testState.gaiaRpcClient()); slashingQuerier = new SlashingQuerier(await testState.gaiaRpcClient()); + + const adminQuery = new AdminQueryClient(neutronRpcClient); + const admins = await adminQuery.admins(); + chainManagerAddress = admins.admins[0]; }); describe('Instantiate interchain queries contract', () => { @@ -223,6 +233,43 @@ describe('Neutron / Interchain KV Query', () => { expect(balances.balances.length).toEqual(0); }); + + test('should throw exception because of too many keys', async () => { + await neutronClient.sendTokens( + contractAddress, + [{ denom: NEUTRON_DENOM, amount: '1000000' }], + { + gas: '200000', + amount: [{ denom: NEUTRON_DENOM, amount: '1000' }], + }, + ); + await expect( + neutronClient.execute(contractAddress, { + register_balances_query: { + connection_id: connectionId, + denoms: Array.from(Array(33).keys()).map((v) => 'denom' + v), + addr: gaiaWallet.address, + update_period: 10, + }, + }), + ).rejects.toThrowError(/keys count cannot be more than 32/); + await executeUpdateInterchainQueriesParams( + interchainqQuerier, + daoMember, + 10, + undefined, + ); + await expect( + neutronClient.execute(contractAddress, { + register_balances_query: { + connection_id: connectionId, + denoms: Array.from(Array(11).keys()).map((v) => 'denom' + v), + addr: gaiaWallet.address, + update_period: 10, + }, + }), + ).rejects.toThrowError(/keys count cannot be more than 10/); + }); }); describe('Successfully', () => { @@ -281,6 +328,23 @@ describe('Neutron / Interchain KV Query', () => { testState.wallets.cosmos.val1.address, ); }); + + test('register icq #6: 100 keys', async () => { + await executeUpdateInterchainQueriesParams( + interchainqQuerier, + daoMember, + 100, + undefined, + ); + await registerBalancesQuery( + neutronClient, + contractAddress, + connectionId, + updatePeriods[6], + Array.from(Array(100).keys()).map((v) => 'denom' + v), + testState.wallets.cosmos.val1.address, + ); + }); }); }); @@ -367,8 +431,33 @@ describe('Neutron / Interchain KV Query', () => { ); }); - test("registered icq #6 doesn't exist", async () => { + test('get registered icq #6: 100 keys', async () => { const queryId = 6; + const queryResult = await getRegisteredQuery( + neutronClient, + contractAddress, + queryId, + ); + expect(queryResult.registered_query.id).toEqual(queryId); + expect(queryResult.registered_query.owner).toEqual(contractAddress); + expect(queryResult.registered_query.keys.length).toEqual(100); + for (let i = 0; i < queryResult.registered_query.keys.length; i++) { + expect(queryResult.registered_query.keys[i].path).toEqual('bank'); + expect(queryResult.registered_query.keys[i].key.length).toBeGreaterThan( + 0, + ); + } + + expect(queryResult.registered_query.query_type).toEqual('kv'); + expect(queryResult.registered_query.transactions_filter).toEqual(''); + expect(queryResult.registered_query.connection_id).toEqual(connectionId); + expect(queryResult.registered_query.update_period).toEqual( + updatePeriods[queryId], + ); + }); + + test("registered icq #7 doesn't exist", async () => { + const queryId = 7; await expect( getRegisteredQuery(neutronClient, contractAddress, queryId), ).rejects.toThrow(); @@ -575,7 +664,7 @@ describe('Neutron / Interchain KV Query', () => { address: contractAddress, }); - expect(balances.balances[0].amount).toEqual('1000000'); + expect(balances.balances[0].amount).toEqual('2000000'); }); test('should fail to remove icq #2 from non owner address before timeout expiration', async () => { @@ -1181,3 +1270,41 @@ describe('Neutron / Interchain KV Query', () => { }); }); }); + +const executeUpdateInterchainQueriesParams = async ( + interchainQueriesQuerier: InterchainqQuerier, + daoMember: DaoMember, + maxKvQueryKeysCount?: number, + maxTransactionsFilters?: number, +) => { + const params = (await interchainQueriesQuerier.params()).params; + if (maxKvQueryKeysCount != undefined) { + params.maxKvQueryKeysCount = BigInt(maxKvQueryKeysCount); + } + + if (maxTransactionsFilters != undefined) { + params.maxTransactionsFilters = BigInt(maxTransactionsFilters); + } + + const proposalId = + await daoMember.submitUpdateParamsInterchainqueriesProposal( + chainManagerAddress, + 'Change Proposal - InterchainQueriesParams', + 'Param change proposal. It will change enabled params of interchainquries module.', + { + query_submit_timeout: Number(params.querySubmitTimeout), + query_deposit: params.queryDeposit, + tx_query_removal_limit: Number(params.txQueryRemovalLimit), + max_kv_query_keys_count: Number(params.maxKvQueryKeysCount), + max_transactions_filters: Number(params.maxTransactionsFilters), + }, + '1000', + ); + + await daoMember.voteYes(proposalId, 'single', { + gas: '4000000', + amount: [{ denom: NEUTRON_DENOM, amount: '100000' }], + }); + await mainDao.checkPassedProposal(proposalId); + await daoMember.executeProposalWithAttempts(proposalId); +}; diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index 4858fdec..990d4881 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -91,7 +91,7 @@ describe('Neutron / Interchain TX Query', () => { contractAddress, connectionId, query1UpdatePeriod, - watchedAddr1, + [watchedAddr1], ); }); @@ -254,7 +254,7 @@ describe('Neutron / Interchain TX Query', () => { contractAddress, connectionId, query2UpdatePeriod, - watchedAddr2, + [watchedAddr2], ); }); @@ -323,7 +323,7 @@ describe('Neutron / Interchain TX Query', () => { contractAddress, connectionId, query3UpdatePeriod, - watchedAddr3, + [watchedAddr3], ); }); @@ -622,14 +622,14 @@ describe('Neutron / Interchain TX Query', () => { contractAddress, connectionId, query4UpdatePeriod, - watchedAddr4, + [watchedAddr4], ); await registerTransfersQuery( neutronClient, contractAddress, connectionId, query5UpdatePeriod, - watchedAddr5, + [watchedAddr5], ); await neutronClient.waitBlocks(2); // wait for queries handling on init }); @@ -854,7 +854,6 @@ describe('Neutron / Interchain TX Query', () => { }); it('should handle callback on a sending to the new address', async () => { - const res = await gaiaWallet.msgSend(newWatchedAddr5, '10000'); const res = await gaiaClient.sendTokens( gaiaWallet.address, newWatchedAddr5, diff --git a/src/testcases/run_in_band/parameters.test.ts b/src/testcases/run_in_band/parameters.test.ts index 1e4f384d..fc55f615 100644 --- a/src/testcases/run_in_band/parameters.test.ts +++ b/src/testcases/run_in_band/parameters.test.ts @@ -113,6 +113,8 @@ describe('Neutron / Parameters', () => { query_submit_timeout: 30, query_deposit: null, tx_query_removal_limit: 20, + max_kv_query_keys_count: 10, + max_transactions_filters: 10, }), '1000', ); @@ -150,6 +152,8 @@ describe('Neutron / Parameters', () => { ); expect(paramsAfter.params.querySubmitTimeout).toEqual(30n); expect(paramsAfter.params.txQueryRemovalLimit).toEqual(20n); + expect(paramsAfter.params.maxKvQueryKeysCount).toEqual(10n); + expect(paramsAfter.params.maxTransactionsFilters).toEqual(10n); }); }); }); diff --git a/yarn.lock b/yarn.lock index b74b8b82..af792dff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1325,14 +1325,14 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@0.1.0-rc4": - version "0.1.0-rc4" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc4.tgz#5e6e56dcc3ffdc5a6421674195a6c15010fdd4f5" - integrity sha512-LXK+OkrwD81bApE8KBv6F7f7kMM28w5cfnuZmz8b4r7KrROZrxlWxsd7vzTlBhO8Dzups0LdUo1NYBoNc9oY2Q== +"@neutron-org/neutronjs@0.1.0-rc5": + version "0.1.0-rc5" + resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc5.tgz#ebdafe6951ad4b1c752b102e444dbe9dee8a0de9" + integrity sha512-9VGdDNMICs6oljsA96CloCz8/5ocnSTZyNpxkpC/AnZxl1QxukQp5+WatLAK0c5a0814RPOJ5+0L2mPvcINHDQ== -"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#4d1663cd0e46d488b742612ee62baf51dd3d8915": +"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#04cc73ea1fc9922cc3af774ccf6b16aeee26b7db": version "0.4.0-rc21" - resolved "https://github.com/neutron-org/neutronjsplus.git#4d1663cd0e46d488b742612ee62baf51dd3d8915" + resolved "https://github.com/neutron-org/neutronjsplus.git#04cc73ea1fc9922cc3af774ccf6b16aeee26b7db" dependencies: "@cosmjs/cosmwasm-stargate" "^0.32.4" "@cosmjs/proto-signing" "^0.32.4" From b900351580b7eac20c51197eb63bb4889addebee Mon Sep 17 00:00:00 2001 From: swelf Date: Thu, 1 Aug 2024 19:27:09 +0300 Subject: [PATCH 02/40] fixed icq tx --- src/helpers/interchainqueries.ts | 41 ++++++++ .../run_in_band/interchain_kv_query.test.ts | 48 ++-------- .../interchain_tx_query_plain.test.ts | 94 +++++++++++++++++++ 3 files changed, 142 insertions(+), 41 deletions(-) diff --git a/src/helpers/interchainqueries.ts b/src/helpers/interchainqueries.ts index df6e5d11..1d0c5f2b 100644 --- a/src/helpers/interchainqueries.ts +++ b/src/helpers/interchainqueries.ts @@ -6,6 +6,7 @@ import { getNeutronDAOCore, } from '@neutron-org/neutronjsplus/dist/dao'; import { QueryClientImpl as AdminQueryClient } from '@neutron-org/neutronjs/cosmos/adminmodule/adminmodule/query.rpc.Query'; +import { QueryClientImpl as InterchainqQuerier } from '@neutron-org/neutronjs/neutron/interchainqueries/query.rpc.Query'; import { paramChangeProposal } from '@neutron-org/neutronjsplus/dist/proposal'; import { CosmWasmClient, @@ -21,6 +22,46 @@ import { Coin } from '@neutron-org/neutronjs/cosmos/base/v1beta1/coin'; import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; import { MsgRemoveInterchainQueryRequest } from '@neutron-org/neutronjs/neutron/interchainqueries/tx'; +export const executeUpdateInterchainQueriesParams = async ( + chainManagerAddress: string, + interchainQueriesQuerier: InterchainqQuerier, + mainDao: Dao, + daoMember: DaoMember, + maxKvQueryKeysCount?: number, + maxTransactionsFilters?: number, +) => { + const params = (await interchainQueriesQuerier.params()).params; + if (maxKvQueryKeysCount != undefined) { + params.maxKvQueryKeysCount = BigInt(maxKvQueryKeysCount); + } + + if (maxTransactionsFilters != undefined) { + params.maxTransactionsFilters = BigInt(maxTransactionsFilters); + } + + const proposalId = + await daoMember.submitUpdateParamsInterchainqueriesProposal( + chainManagerAddress, + 'Change Proposal - InterchainQueriesParams', + 'Param change proposal. It will change enabled params of interchainquries module.', + { + query_submit_timeout: Number(params.querySubmitTimeout), + query_deposit: params.queryDeposit, + tx_query_removal_limit: Number(params.txQueryRemovalLimit), + max_kv_query_keys_count: Number(params.maxKvQueryKeysCount), + max_transactions_filters: Number(params.maxTransactionsFilters), + }, + '1000', + ); + + await daoMember.voteYes(proposalId, 'single', { + gas: '4000000', + amount: [{ denom: NEUTRON_DENOM, amount: '100000' }], + }); + await mainDao.checkPassedProposal(proposalId); + await daoMember.executeProposalWithAttempts(proposalId); +}; + export const getKvCallbackStatus = async ( client: SigningNeutronClient, contractAddress: string, diff --git a/src/testcases/run_in_band/interchain_kv_query.test.ts b/src/testcases/run_in_band/interchain_kv_query.test.ts index 723d4a6e..b4ff53a8 100644 --- a/src/testcases/run_in_band/interchain_kv_query.test.ts +++ b/src/testcases/run_in_band/interchain_kv_query.test.ts @@ -1,5 +1,6 @@ import { acceptInterchainqueriesParamsChangeProposal, + executeUpdateInterchainQueriesParams, filterIBCDenoms, } from '../../helpers/interchainqueries'; import '@neutron-org/neutronjsplus'; @@ -60,9 +61,6 @@ import { QueryClientImpl as SlashingQuerier } from 'cosmjs-types/cosmos/slashing import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; -let chainManagerAddress: string; -let mainDao: Dao; - describe('Neutron / Interchain KV Query', () => { const connectionId = 'connection-0'; const updatePeriods: { [key: number]: number } = { @@ -86,6 +84,8 @@ describe('Neutron / Interchain KV Query', () => { let slashingQuerier: SlashingQuerier; let contractAddress: string; let daoMember: DaoMember; + let mainDao: Dao; + let chainManagerAddress: string; beforeAll(async () => { testState = await LocalState.create(config, inject('mnemonics')); @@ -254,7 +254,9 @@ describe('Neutron / Interchain KV Query', () => { }), ).rejects.toThrowError(/keys count cannot be more than 32/); await executeUpdateInterchainQueriesParams( + chainManagerAddress, interchainqQuerier, + mainDao, daoMember, 10, undefined, @@ -331,7 +333,9 @@ describe('Neutron / Interchain KV Query', () => { test('register icq #6: 100 keys', async () => { await executeUpdateInterchainQueriesParams( + chainManagerAddress, interchainqQuerier, + mainDao, daoMember, 100, undefined, @@ -1268,41 +1272,3 @@ describe('Neutron / Interchain KV Query', () => { }); }); }); - -const executeUpdateInterchainQueriesParams = async ( - interchainQueriesQuerier: InterchainqQuerier, - daoMember: DaoMember, - maxKvQueryKeysCount?: number, - maxTransactionsFilters?: number, -) => { - const params = (await interchainQueriesQuerier.params()).params; - if (maxKvQueryKeysCount != undefined) { - params.maxKvQueryKeysCount = BigInt(maxKvQueryKeysCount); - } - - if (maxTransactionsFilters != undefined) { - params.maxTransactionsFilters = BigInt(maxTransactionsFilters); - } - - const proposalId = - await daoMember.submitUpdateParamsInterchainqueriesProposal( - chainManagerAddress, - 'Change Proposal - InterchainQueriesParams', - 'Param change proposal. It will change enabled params of interchainquries module.', - { - query_submit_timeout: Number(params.querySubmitTimeout), - query_deposit: params.queryDeposit, - tx_query_removal_limit: Number(params.txQueryRemovalLimit), - max_kv_query_keys_count: Number(params.maxKvQueryKeysCount), - max_transactions_filters: Number(params.maxTransactionsFilters), - }, - '1000', - ); - - await daoMember.voteYes(proposalId, 'single', { - gas: '4000000', - amount: [{ denom: NEUTRON_DENOM, amount: '100000' }], - }); - await mainDao.checkPassedProposal(proposalId); - await daoMember.executeProposalWithAttempts(proposalId); -}; diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index c36eb96f..a4e85928 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -3,11 +3,15 @@ import { LocalState } from '../../helpers/local_state'; import { defaultRegistryTypes, MsgSendEncodeObject, + ProtobufRpcClient, SigningStargateClient, } from '@cosmjs/stargate'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { Registry } from '@cosmjs/proto-signing'; +import { QueryClientImpl as AdminQueryClient } from '@neutron-org/neutronjs/cosmos/adminmodule/adminmodule/query.rpc.Query'; +import { QueryClientImpl as InterchainqQuerier } from '@neutron-org/neutronjs/neutron/interchainqueries/query.rpc.Query'; import { + executeUpdateInterchainQueriesParams, getRegisteredQuery, queryRecipientTxs, queryTransfersNumber, @@ -23,15 +27,26 @@ import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1 import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; +import { + Dao, + DaoMember, + getDaoContracts, + getNeutronDAOCore, +} from '@neutron-org/neutronjsplus/dist/dao'; describe('Neutron / Interchain TX Query', () => { let testState: LocalState; let neutronClient: SigningNeutronClient; + let neutronRpcClient: ProtobufRpcClient; let gaiaClient: SigningStargateClient; let neutronWallet: Wallet; let gaiaWallet: Wallet; let contractAddress: string; let bankQuerierGaia: BankQuerier; + let interchainqQuerier: InterchainqQuerier; + let daoMember: DaoMember; + let mainDao: Dao; + let chainManagerAddress: string; const connectionId = 'connection-0'; beforeAll(async (suite: Suite) => { @@ -51,6 +66,26 @@ describe('Neutron / Interchain TX Query', () => { { registry: new Registry(defaultRegistryTypes) }, ); bankQuerierGaia = new BankQuerier(await testState.gaiaRpcClient()); + + neutronRpcClient = await testState.neutronRpcClient(); + const daoCoreAddress = await getNeutronDAOCore( + neutronClient, + neutronRpcClient, + ); + const daoContracts = await getDaoContracts(neutronClient, daoCoreAddress); + mainDao = new Dao(neutronClient, daoContracts); + daoMember = new DaoMember( + mainDao, + neutronClient.client, + neutronWallet.address, + NEUTRON_DENOM, + ); + await daoMember.bondFunds('1000000000'); + interchainqQuerier = new InterchainqQuerier(neutronRpcClient); + + const adminQuery = new AdminQueryClient(neutronRpcClient); + const admins = await adminQuery.admins(); + chainManagerAddress = admins.admins[0]; }); describe('deploy contract', () => { @@ -768,6 +803,65 @@ describe('Neutron / Interchain TX Query', () => { }); }); + describe('Multiple keys', () => { + test('Should fail. register filter with 50 keys', async () => { + // Top up contract address before running query + await neutronClient.sendTokens( + contractAddress, + [{ denom: NEUTRON_DENOM, amount: '1000000' }], + { + gas: '200000', + amount: [{ denom: NEUTRON_DENOM, amount: '1000' }], + }, + ); + await expect( + registerTransfersQuery( + neutronClient, + contractAddress, + connectionId, + query2UpdatePeriod, + Array(50).fill(watchedAddr2), + ), + ).rejects.toThrowError( + /failed to validate MsgRegisterInterchainQuery: too many transactions filters, provided=50, max=32/, + ); + }); + + test('Should pass. register filter with 50 keys after a proposal', async () => { + await executeUpdateInterchainQueriesParams( + chainManagerAddress, + interchainqQuerier, + mainDao, + daoMember, + undefined, + 50, + ); + + await registerTransfersQuery( + neutronClient, + contractAddress, + connectionId, + query2UpdatePeriod, + Array(50).fill(watchedAddr2), + ); + }); + + test('check registered transfers query', async () => { + const query = await getRegisteredQuery(neutronClient, contractAddress, 6); + expect(query.registered_query.id).toEqual(6); + expect(query.registered_query.owner).toEqual(contractAddress); + expect(query.registered_query.keys.length).toEqual(0); + expect(query.registered_query.query_type).toEqual('tx'); + expect(JSON.parse(query.registered_query.transactions_filter)).toEqual( + Array(50) + .fill(watchedAddr2) + .map((v) => ({ field: 'transfer.recipient', op: 'Eq', value: v })), + ); + expect(query.registered_query.connection_id).toEqual(connectionId); + expect(query.registered_query.update_period).toEqual(query2UpdatePeriod); + }); + }); + describe('check contract state is reverted on failed sudo', () => { // contract handles only transfers <= 20000, otherwise it ends callback with an error. const amountToAddrForth2 = 21000; From 26e07719f6de0374815bedc12b3ef79e791e5f70 Mon Sep 17 00:00:00 2001 From: nhpd Date: Fri, 2 Aug 2024 03:06:13 +0400 Subject: [PATCH 03/40] burn different --- .../run_in_band/tokenfactory.test.ts | 51 +++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/src/testcases/run_in_band/tokenfactory.test.ts b/src/testcases/run_in_band/tokenfactory.test.ts index 1863a613..c4750e5b 100644 --- a/src/testcases/run_in_band/tokenfactory.test.ts +++ b/src/testcases/run_in_band/tokenfactory.test.ts @@ -445,6 +445,8 @@ describe('Neutron / Tokenfactory', () => { ); expect(burnRes.code).toBe(0); + // TODO: test burn from different address? + const balanceAfter = parseInt( (await neutronClient.getBalance(neutronWallet.address, newTokenDenom)) .amount, @@ -660,11 +662,7 @@ describe('Neutron / Tokenfactory', () => { codeId = await neutronClient.upload(CONTRACTS.TOKENFACTORY); expect(codeId).toBeGreaterThan(0); - contractAddress = await neutronClient.instantiate( - codeId, - {}, - 'tokenfactory', - ); + contractAddress = await neutronClient.instantiate(codeId, {}); await neutronClient.sendTokens( contractAddress, @@ -753,6 +751,49 @@ describe('Neutron / Tokenfactory', () => { expect(balance).toEqual(amount); }); + test('burn coins from different wallet', async () => { + const wallet2 = await testState.nextWallet('neutron'); + + const mintedToDifferentWallet = 100; + const toBurn = 50; + const leftAfterBurn = mintedToDifferentWallet - toBurn; + + amount -= mintedToDifferentWallet; + + // mint to different wallet + const res1 = await neutronClient.execute(contractAddress, { + mint_tokens: { + denom, + amount: mintedToDifferentWallet.toString(), + mint_to_address: wallet2.address, + }, + }); + expect(res1.code).toBe(0); + + const balanceBefore = await neutronClient.getBalance( + wallet2.address, + denom, + ); + expect(balanceBefore.amount).toBe(mintedToDifferentWallet.toString()); + + const res = await neutronClient.execute(contractAddress, { + burn_tokens: { + denom, + amount: toBurn.toString(), + burn_from_address: wallet2.address, + }, + }); + expect(res.code).toBe(0); + + await neutronClient.waitBlocks(5); + + const balanceAfter = await neutronClient.getBalance( + wallet2.address, + denom, + ); + expect(balanceAfter.amount).toBe(leftAfterBurn.toString()); + }); + test('full denom query', async () => { const res = await neutronClient.queryContractSmart(contractAddress, { full_denom: { creator_addr: contractAddress, subdenom }, From 1f5d7b269416ed6af54d3b2e39c13f980cde781c Mon Sep 17 00:00:00 2001 From: keylogic1 <119584546+keylogic1@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:23:39 +0300 Subject: [PATCH 04/40] Upgrade to docker v2 --- setup/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/Makefile b/setup/Makefile index 1d447f09..22f7280a 100644 --- a/setup/Makefile +++ b/setup/Makefile @@ -1,5 +1,5 @@ APP_DIR ?= ../.. -COMPOSE ?= docker-compose +COMPOSE ?= "docker compose" build-gaia: @docker buildx build --load --build-context app=$(APP_DIR)/gaia --build-context setup=$(APP_DIR)/neutron/network -t gaia-node -f dockerbuilds/Dockerfile.gaia --build-arg BINARY=gaiad . From 570554fce7159143f3121727a1fc7cbad8955d8e Mon Sep 17 00:00:00 2001 From: keylogic1 <119584546+keylogic1@users.noreply.github.com> Date: Tue, 6 Aug 2024 18:12:52 +0300 Subject: [PATCH 05/40] Update Makefile --- setup/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/Makefile b/setup/Makefile index 22f7280a..890d4387 100644 --- a/setup/Makefile +++ b/setup/Makefile @@ -1,5 +1,5 @@ APP_DIR ?= ../.. -COMPOSE ?= "docker compose" +COMPOSE ?= docker compose build-gaia: @docker buildx build --load --build-context app=$(APP_DIR)/gaia --build-context setup=$(APP_DIR)/neutron/network -t gaia-node -f dockerbuilds/Dockerfile.gaia --build-arg BINARY=gaiad . From 162f8037314dc12a43a85de08a909a220200146c Mon Sep 17 00:00:00 2001 From: swelf Date: Wed, 7 Aug 2024 13:12:07 +0300 Subject: [PATCH 06/40] fixed tests --- package.json | 2 +- src/testcases/parallel/interchain_tx_query_resubmit.test.ts | 2 +- src/testcases/run_in_band/parameters.test.ts | 5 ++--- yarn.lock | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 7f8c4795..d5f1ef2f 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", "@neutron-org/neutronjs": "0.1.0-rc5", - "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#04cc73ea1fc9922cc3af774ccf6b16aeee26b7db", + "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d", "@types/lodash": "^4.14.182", "axios": "1.6.0", "commander": "^10.0.0", diff --git a/src/testcases/parallel/interchain_tx_query_resubmit.test.ts b/src/testcases/parallel/interchain_tx_query_resubmit.test.ts index 581cee75..08eb4e15 100644 --- a/src/testcases/parallel/interchain_tx_query_resubmit.test.ts +++ b/src/testcases/parallel/interchain_tx_query_resubmit.test.ts @@ -87,7 +87,7 @@ describe('Neutron / Interchain TX Query Resubmit', () => { contractAddress, connectionId, query1UpdatePeriod, - watchedAddr1, + [watchedAddr1], ); }); diff --git a/src/testcases/run_in_band/parameters.test.ts b/src/testcases/run_in_band/parameters.test.ts index 0d553c85..cab91414 100644 --- a/src/testcases/run_in_band/parameters.test.ts +++ b/src/testcases/run_in_band/parameters.test.ts @@ -12,7 +12,6 @@ import { updateCronParamsProposal, updateFeeburnerParamsProposal, updateFeerefunderParamsProposal, - updateInterchainqueriesParamsProposal, updateInterchaintxsParamsProposal, updateTokenfactoryParamsProposal, updateTransferParamsProposal, @@ -108,13 +107,13 @@ describe('Neutron / Parameters', () => { chainManagerAddress, 'Proposal #1', 'Param change proposal. This one will pass', - updateInterchainqueriesParamsProposal({ + { query_submit_timeout: 30, query_deposit: null, tx_query_removal_limit: 20, max_kv_query_keys_count: 10, max_transactions_filters: 10, - }), + }, '1000', ); }); diff --git a/yarn.lock b/yarn.lock index ce18fa15..4c3b4956 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1312,9 +1312,9 @@ resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc5.tgz#ebdafe6951ad4b1c752b102e444dbe9dee8a0de9" integrity sha512-9VGdDNMICs6oljsA96CloCz8/5ocnSTZyNpxkpC/AnZxl1QxukQp5+WatLAK0c5a0814RPOJ5+0L2mPvcINHDQ== -"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#04cc73ea1fc9922cc3af774ccf6b16aeee26b7db": +"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d": version "0.4.0-rc21" - resolved "https://github.com/neutron-org/neutronjsplus.git#04cc73ea1fc9922cc3af774ccf6b16aeee26b7db" + resolved "https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d" dependencies: "@cosmjs/cosmwasm-stargate" "^0.32.4" "@cosmjs/proto-signing" "^0.32.4" From 40dd2d9d7aff166cf85432844331aa01c46a14e1 Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 8 Aug 2024 14:30:34 +0400 Subject: [PATCH 07/40] use RunnerTestSuite instead of deprecated Suite --- src/helpers/local_state.ts | 8 +++---- src/testcases/parallel/dao_assert.test.ts | 4 ++-- src/testcases/parallel/governance.test.ts | 4 ++-- src/testcases/parallel/ibc_transfer.test.ts | 4 ++-- .../interchain_tx_query_resubmit.test.ts | 4 ++-- src/testcases/parallel/overrule.test.ts | 4 ++-- .../parallel/stargate_queries.test.ts | 4 ++-- src/testcases/parallel/subdao.test.ts | 4 ++-- .../parallel/voting_registry.test.ts | 4 ++-- .../run_in_band/chain_manager.test.ts | 4 ++-- .../run_in_band/dex_stargate.test.ts | 4 ++-- src/testcases/run_in_band/feemarket.test.ts | 4 ++-- src/testcases/run_in_band/ibc_hooks.test.ts | 4 ++-- .../interchain_tx_query_plain.test.ts | 4 ++-- .../run_in_band/interchaintx.test.ts | 22 +++++++++---------- .../run_in_band/tokenfactory.test.ts | 4 ++-- 16 files changed, 42 insertions(+), 44 deletions(-) diff --git a/src/helpers/local_state.ts b/src/helpers/local_state.ts index 8775713b..d60fd116 100644 --- a/src/helpers/local_state.ts +++ b/src/helpers/local_state.ts @@ -5,7 +5,7 @@ import { QueryClient, } from '@cosmjs/stargate'; import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; -import { Suite } from 'vitest'; +import { RunnerTestSuite } from 'vitest'; import { connectComet } from '@cosmjs/tendermint-rpc'; import { COSMOS_PREFIX, NEUTRON_PREFIX } from './constants'; import { Wallet } from './wallet'; @@ -35,7 +35,7 @@ export class LocalState { static async create( config: any, mnemonics: string[], - suite?: Suite, + suite?: RunnerTestSuite, ): Promise { const res = new LocalState(config, mnemonics, suite); await res.init(); @@ -45,7 +45,7 @@ export class LocalState { protected constructor( private config: any, private mnemonics: string[], - private suite?: Suite | undefined, + private suite?: RunnerTestSuite | undefined, ) { this.rpcNeutron = process.env.NODE1_RPC || 'http://localhost:26657'; this.rpcGaia = process.env.NODE2_RPC || 'http://localhost:16657'; @@ -134,7 +134,7 @@ export const mnemonicToWallet = async ( return new Wallet(addrPrefix, directwallet, account, accountValoper); }; -async function testFilePosition(s: Suite): Promise { +async function testFilePosition(s: RunnerTestSuite): Promise { const filepath = s.file.filepath.trim(); const splitted = filepath.split('/'); const filename = splitted.pop().trim(); diff --git a/src/testcases/parallel/dao_assert.test.ts b/src/testcases/parallel/dao_assert.test.ts index 3df15d5d..f9008188 100644 --- a/src/testcases/parallel/dao_assert.test.ts +++ b/src/testcases/parallel/dao_assert.test.ts @@ -1,4 +1,4 @@ -import { inject, Suite } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { getContractsHashes } from '../../helpers/setup'; import '@neutron-org/neutronjsplus'; import { LocalState } from '../../helpers/local_state'; @@ -32,7 +32,7 @@ describe('Neutron / DAO check', () => { let feeburnerQuery: FeeburnerQueryClient; let wasmQuery: WasmQueryClient; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); const neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/parallel/governance.test.ts b/src/testcases/parallel/governance.test.ts index fedf542c..a7031f77 100644 --- a/src/testcases/parallel/governance.test.ts +++ b/src/testcases/parallel/governance.test.ts @@ -10,7 +10,7 @@ import { getNeutronDAOCore, } from '@neutron-org/neutronjsplus/dist/dao'; import { updateInterchaintxsParamsProposal } from '@neutron-org/neutronjsplus/dist/proposal'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { NEUTRON_DENOM } from '../../helpers/constants'; import { ParameterChangeProposal } from '@neutron-org/neutronjs/cosmos/params/v1beta1/params'; import { MsgSubmitProposalLegacy } from '@neutron-org/neutronjs/cosmos/adminmodule/adminmodule/tx'; @@ -48,7 +48,7 @@ describe('Neutron / Governance', () => { let interchaintxQuery: InterchainTxQueryClient; let interchainAccountsQuerier: InterchainAccountsQueryClient; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); neutronClient = await SigningNeutronClient.connectWithSigner( diff --git a/src/testcases/parallel/ibc_transfer.test.ts b/src/testcases/parallel/ibc_transfer.test.ts index 6d38e1e1..07570bd3 100644 --- a/src/testcases/parallel/ibc_transfer.test.ts +++ b/src/testcases/parallel/ibc_transfer.test.ts @@ -1,5 +1,5 @@ import { Registry } from '@cosmjs/proto-signing'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { LocalState } from '../../helpers/local_state'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { MsgTransfer as GaiaMsgTransfer } from 'cosmjs-types/ibc/applications/transfer/v1/tx'; @@ -45,7 +45,7 @@ describe('Neutron / IBC transfer', () => { let bankQuerier: BankQueryClient; let ibcQuerier: IbcQueryClient; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/parallel/interchain_tx_query_resubmit.test.ts b/src/testcases/parallel/interchain_tx_query_resubmit.test.ts index 581cee75..dcdbde5f 100644 --- a/src/testcases/parallel/interchain_tx_query_resubmit.test.ts +++ b/src/testcases/parallel/interchain_tx_query_resubmit.test.ts @@ -8,7 +8,7 @@ import { registerTransfersQuery, waitForTransfersAmount, } from '../../helpers/interchainqueries'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { CONTRACTS, @@ -29,7 +29,7 @@ describe('Neutron / Interchain TX Query Resubmit', () => { let contractAddress: string; const connectionId = 'connection-0'; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/parallel/overrule.test.ts b/src/testcases/parallel/overrule.test.ts index 7778c121..d56f148a 100644 --- a/src/testcases/parallel/overrule.test.ts +++ b/src/testcases/parallel/overrule.test.ts @@ -3,7 +3,7 @@ import '@neutron-org/neutronjsplus'; import { NEUTRON_DENOM } from '@neutron-org/neutronjsplus/dist/constants'; import { LocalState } from '../../helpers/local_state'; import { Dao, DaoMember } from '@neutron-org/neutronjsplus/dist/dao'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { addSubdaoToDao, deployNeutronDao, @@ -25,7 +25,7 @@ describe('Neutron / Subdao Overrule', () => { let neutronClient1: SigningNeutronClient; let neutronClient2: SigningNeutronClient; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { const mnemonics = inject('mnemonics'); testState = await LocalState.create(config, mnemonics, suite); neutronWallet1 = await testState.nextWallet('neutron'); diff --git a/src/testcases/parallel/stargate_queries.test.ts b/src/testcases/parallel/stargate_queries.test.ts index e07adbd3..52fe41a3 100644 --- a/src/testcases/parallel/stargate_queries.test.ts +++ b/src/testcases/parallel/stargate_queries.test.ts @@ -3,7 +3,7 @@ import { getEventAttribute } from '@neutron-org/neutronjsplus/dist/cosmos'; import { LocalState } from '../../helpers/local_state'; import { Wallet } from '../../helpers/wallet'; import { CONTRACTS } from '../../helpers/constants'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { defaultRegistryTypes, SigningStargateClient } from '@cosmjs/stargate'; import { Registry } from '@cosmjs/proto-signing'; @@ -23,7 +23,7 @@ describe('Neutron / Stargate Queries', () => { let newTokenDenom: string; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/parallel/subdao.test.ts b/src/testcases/parallel/subdao.test.ts index 1768c604..9ae8b9e5 100644 --- a/src/testcases/parallel/subdao.test.ts +++ b/src/testcases/parallel/subdao.test.ts @@ -1,4 +1,4 @@ -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; /* eslint-disable @typescript-eslint/no-non-null-assertion */ import '@neutron-org/neutronjsplus'; import { createBankSendMessage } from '@neutron-org/neutronjsplus/dist/cosmos'; @@ -37,7 +37,7 @@ describe('Neutron / Subdao', () => { let adminQuery: AdminQueryClient; let chainManagerAddress; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet1 = await testState.nextWallet('neutron'); securityDaoWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/parallel/voting_registry.test.ts b/src/testcases/parallel/voting_registry.test.ts index d5f9d88e..75653a4a 100644 --- a/src/testcases/parallel/voting_registry.test.ts +++ b/src/testcases/parallel/voting_registry.test.ts @@ -1,5 +1,5 @@ import { LocalState } from '../../helpers/local_state'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { waitBlocks } from '@neutron-org/neutronjsplus/dist/wait'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { NEUTRON_DENOM } from '@neutron-org/neutronjsplus/dist/constants'; @@ -38,7 +38,7 @@ describe('Neutron / Voting Registry', () => { // bonding to an additional vault const vault3Bonding = 5_000_000; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { const mnemonics = inject('mnemonics'); testState = await LocalState.create(config, mnemonics, suite); neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/run_in_band/chain_manager.test.ts b/src/testcases/run_in_band/chain_manager.test.ts index a836bd29..a2f78d41 100644 --- a/src/testcases/run_in_band/chain_manager.test.ts +++ b/src/testcases/run_in_band/chain_manager.test.ts @@ -13,7 +13,7 @@ import { updateTokenfactoryParamsProposal, } from '@neutron-org/neutronjsplus/dist/proposal'; import { LocalState } from '../../helpers/local_state'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { NEUTRON_DENOM } from '@neutron-org/neutronjsplus/dist/constants'; import { setupSubDaoTimelockSet } from '../../helpers/dao'; import { QueryClientImpl as CronQueryClient } from '@neutron-org/neutronjs/neutron/cron/query.rpc.Query'; @@ -36,7 +36,7 @@ describe('Neutron / Chain Manager', () => { let dexQuerier: DexQueryClient; let chainManagerAddress: string; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); const neutronWallet = await testState.nextWallet('neutron'); neutronClient = await SigningNeutronClient.connectWithSigner( diff --git a/src/testcases/run_in_band/dex_stargate.test.ts b/src/testcases/run_in_band/dex_stargate.test.ts index 8db29b05..3baee3c5 100644 --- a/src/testcases/run_in_band/dex_stargate.test.ts +++ b/src/testcases/run_in_band/dex_stargate.test.ts @@ -1,4 +1,4 @@ -import { inject, Suite } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { LocalState } from '../../helpers/local_state'; import { NEUTRON_DENOM } from '@neutron-org/neutronjsplus/dist/constants'; import config from '../../config.json'; @@ -16,7 +16,7 @@ describe('Neutron / dex module (stargate contract)', () => { let activeTrancheKey: string; let inactiveTrancheKey: string; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = testState.wallets.neutron.demo1; neutronClient = await SigningNeutronClient.connectWithSigner( diff --git a/src/testcases/run_in_band/feemarket.test.ts b/src/testcases/run_in_band/feemarket.test.ts index 8d3b7ba1..3087b217 100644 --- a/src/testcases/run_in_band/feemarket.test.ts +++ b/src/testcases/run_in_band/feemarket.test.ts @@ -8,7 +8,7 @@ import { } from '@neutron-org/neutronjsplus/dist/dao'; import { DynamicFeesParams } from '@neutron-org/neutronjsplus/dist/proposal'; import { LocalState } from '../../helpers/local_state'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { QueryClientImpl as FeemarketQueryClient } from '@neutron-org/neutronjs/feemarket/feemarket/v1/query.rpc.Query'; import { QueryClientImpl as AdminQueryClient } from '@neutron-org/neutronjs/cosmos/adminmodule/adminmodule/query.rpc.Query'; @@ -27,7 +27,7 @@ describe('Neutron / Fee Market', () => { let feemarketQuerier: FeemarketQueryClient; let chainManagerAddress: string; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); const neutronRpcClient = await testState.neutronRpcClient(); diff --git a/src/testcases/run_in_band/ibc_hooks.test.ts b/src/testcases/run_in_band/ibc_hooks.test.ts index a5342047..4ce70753 100644 --- a/src/testcases/run_in_band/ibc_hooks.test.ts +++ b/src/testcases/run_in_band/ibc_hooks.test.ts @@ -5,7 +5,7 @@ import { NEUTRON_DENOM, } from '../../helpers/constants'; import { LocalState } from '../../helpers/local_state'; -import { inject, Suite } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { defaultRegistryTypes, SigningStargateClient } from '@cosmjs/stargate'; import { Registry } from '@cosmjs/proto-signing'; @@ -26,7 +26,7 @@ describe('Neutron / IBC hooks', () => { const transferDenom = 'ibc/4E41ED8F3DCAEA15F4D6ADC6EDD7C04A676160735C9710B904B7BF53525B56D6'; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index ede4657a..27699f58 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -1,4 +1,4 @@ -import { inject, Suite } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { LocalState } from '../../helpers/local_state'; import { defaultRegistryTypes, @@ -34,7 +34,7 @@ describe('Neutron / Interchain TX Query', () => { let bankQuerierGaia: BankQuerier; const connectionId = 'connection-0'; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 84c4bca6..d7638ab4 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -6,7 +6,7 @@ import { defaultRegistryTypes } from '@cosmjs/stargate'; import { Registry } from '@cosmjs/proto-signing'; import { CONTRACTS, COSMOS_DENOM, NEUTRON_DENOM } from '../../helpers/constants'; import { LocalState } from '../../helpers/local_state'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { SigningStargateClient } from '@cosmjs/stargate'; @@ -34,7 +34,7 @@ describe('Neutron / Interchain TXs', () => { let contractAddress: string; let icaAddress1: string; let icaAddress2: string; - let stakingQuerier: StakingQueryClient; + let gaiaStakingQuerier: StakingQueryClient; let ibcQuerier: IbcQueryClient; let contractManagerQuerier: ContractManagerQuery; @@ -47,7 +47,7 @@ describe('Neutron / Interchain TXs', () => { const icaId2 = 'test2'; const connectionId = 'connection-0'; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); @@ -67,6 +67,8 @@ describe('Neutron / Interchain TXs', () => { const neutronRpcClient = await testState.neutronRpcClient(); ibcQuerier = new IbcQueryClient(neutronRpcClient); contractManagerQuerier = new ContractManagerQuery(neutronRpcClient); + const gaiaRpcClient = await testState.gaiaRpcClient(); + gaiaStakingQuerier = new StakingQueryClient(gaiaRpcClient); }); describe('Interchain Tx with multiple ICAs', () => { @@ -78,10 +80,6 @@ describe('Neutron / Interchain TXs', () => { 'interchaintx', ); }); - test('init client', async () => { - const gaiaRpcClient = await testState.gaiaRpcClient(); - stakingQuerier = new StakingQueryClient(gaiaRpcClient); - }); }); describe('Create ICAs and setup contract', () => { test('fund contract to pay fees', async () => { @@ -233,7 +231,7 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - stakingQuerier.DelegatorDelegations({ + gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1, }), async (delegations) => delegations.delegationResponses?.length == 1, @@ -252,7 +250,7 @@ describe('Neutron / Interchain TXs', () => { const res2 = await getWithAttempts( gaiaClient, () => - stakingQuerier.DelegatorDelegations({ + gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress2, }), async (delegations) => delegations.delegationResponses?.length == 0, @@ -303,7 +301,7 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1 }), + gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1 }), async (delegations) => delegations.delegationResponses?.length == 1, ); expect(res1.delegationResponses).toEqual([ @@ -317,7 +315,7 @@ describe('Neutron / Interchain TXs', () => { }, }, ]); - const res2 = await stakingQuerier.DelegatorDelegations({ + const res2 = await gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress2, }); expect(res2.delegationResponses).toEqual([]); @@ -565,7 +563,7 @@ describe('Neutron / Interchain TXs', () => { }); }); test('check validator state after ICA recreation', async () => { - const res = await stakingQuerier.DelegatorDelegations({ + const res = await gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1, }); expect(res.delegationResponses).toEqual([ diff --git a/src/testcases/run_in_band/tokenfactory.test.ts b/src/testcases/run_in_band/tokenfactory.test.ts index 1863a613..d5267de2 100644 --- a/src/testcases/run_in_band/tokenfactory.test.ts +++ b/src/testcases/run_in_band/tokenfactory.test.ts @@ -2,7 +2,7 @@ import { updateTokenfactoryParamsProposal } from '@neutron-org/neutronjsplus/dis import '@neutron-org/neutronjsplus'; import { getEventAttribute } from '@neutron-org/neutronjsplus/dist/cosmos'; import { LocalState } from '../../helpers/local_state'; -import { Suite, inject } from 'vitest'; +import { RunnerTestSuite, inject } from 'vitest'; import { Dao, DaoMember, @@ -92,7 +92,7 @@ describe('Neutron / Tokenfactory', () => { let bankQuerier: BankQueryClient; let chainManagerAddress: string; - beforeAll(async (suite: Suite) => { + beforeAll(async (suite: RunnerTestSuite) => { testState = await LocalState.create(config, inject('mnemonics'), suite); neutronWallet = await testState.nextWallet('neutron'); neutronClient = await SigningNeutronClient.connectWithSigner( From 017b22316f4d8cfc42d22f1e24cb15b6380dc215 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Thu, 8 Aug 2024 09:02:25 -0300 Subject: [PATCH 08/40] upd njs --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f509d9b3..391ae037 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "0.1.0-rc4", + "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#32a88946f8544c128997dca232bac88dd024dd45", "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/yarn.lock b/yarn.lock index 0de4795b..6ea29087 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,10 +1307,9 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@0.1.0-rc4": +"@neutron-org/neutronjs@https://github.com/neutron-org/neutronjs.git#32a88946f8544c128997dca232bac88dd024dd45": version "0.1.0-rc4" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc4.tgz#5e6e56dcc3ffdc5a6421674195a6c15010fdd4f5" - integrity sha512-LXK+OkrwD81bApE8KBv6F7f7kMM28w5cfnuZmz8b4r7KrROZrxlWxsd7vzTlBhO8Dzups0LdUo1NYBoNc9oY2Q== + resolved "https://github.com/neutron-org/neutronjs.git#32a88946f8544c128997dca232bac88dd024dd45" "@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b": version "0.4.0-rc21" From f86752d2348f7f81baac702ce93aac9ff87930d0 Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 8 Aug 2024 16:15:24 +0400 Subject: [PATCH 09/40] format --- .../run_in_band/interchaintx.test.ts | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index d7638ab4..46dfca55 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -1,15 +1,17 @@ -/* eslint-disable prettier/prettier */ import { IndexedTx, JsonObject } from '@cosmjs/cosmwasm-stargate'; import '@neutron-org/neutronjsplus'; import { getSequenceId } from '@neutron-org/neutronjsplus/dist/cosmos'; import { defaultRegistryTypes } from '@cosmjs/stargate'; import { Registry } from '@cosmjs/proto-signing'; -import { CONTRACTS, COSMOS_DENOM, NEUTRON_DENOM } from '../../helpers/constants'; +import { + CONTRACTS, + COSMOS_DENOM, + NEUTRON_DENOM, +} from '../../helpers/constants'; import { LocalState } from '../../helpers/local_state'; import { RunnerTestSuite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { SigningStargateClient } from '@cosmjs/stargate'; - import { QueryClientImpl as StakingQueryClient, QueryDelegatorDelegationsResponse, @@ -23,14 +25,18 @@ import { QueryFailuresResponse, } from '@neutron-org/cosmjs-types/neutron/contractmanager/query'; import { getWithAttempts } from '../../helpers/misc'; - -import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; -import { AcknowledgementResult, cleanAckResults, getAck, getAcks, waitForAck } from '../../helpers/interchaintxs'; +import { + AcknowledgementResult, + cleanAckResults, + getAck, + getAcks, + waitForAck, +} from '../../helpers/interchaintxs'; +import config from '../../config.json'; describe('Neutron / Interchain TXs', () => { let testState: LocalState; - let contractAddress: string; let icaAddress1: string; let icaAddress2: string; @@ -301,7 +307,9 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1 }), + gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: icaAddress1, + }), async (delegations) => delegations.delegationResponses?.length == 1, ); expect(res1.delegationResponses).toEqual([ @@ -832,17 +840,17 @@ describe('Neutron / Interchain TXs', () => { expect.objectContaining({ address: contractAddress, id: 0n, - error: 'codespace: wasm, code: 5', // execute wasm contract failer + error: 'codespace: wasm, code: 5', // execute wasm contract failed }), expect.objectContaining({ address: contractAddress, id: 1n, - error: 'codespace: wasm, code: 5', // execute wasm contract failer + error: 'codespace: wasm, code: 5', // execute wasm contract failed }), expect.objectContaining({ address: contractAddress, id: 2n, - error: 'codespace: wasm, code: 5', // execute wasm contract failer + error: 'codespace: wasm, code: 5', // execute wasm contract failed }), expect.objectContaining({ address: contractAddress, @@ -937,8 +945,8 @@ describe('Neutron / Interchain TXs', () => { const acks = await getAcks(neutronClient, contractAddress); expect(acks.length).toEqual(1); expect(acks[0].sequence_id).toEqual( - +JSON.parse(Buffer.from(failure.sudoPayload).toString()) - .response.request.sequence, + +JSON.parse(Buffer.from(failure.sudoPayload).toString()).response + .request.sequence, ); }); }); From 2662b8f1c11e7d85c5a672dc54cfffd18094e6d3 Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 8 Aug 2024 16:56:49 +0400 Subject: [PATCH 10/40] feat: unordered ica check --- .../run_in_band/interchaintx.test.ts | 107 +++++++++++++++++- 1 file changed, 101 insertions(+), 6 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 46dfca55..655a0777 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -40,6 +40,7 @@ describe('Neutron / Interchain TXs', () => { let contractAddress: string; let icaAddress1: string; let icaAddress2: string; + let unorderedIcaAddress: string; let gaiaStakingQuerier: StakingQueryClient; let ibcQuerier: IbcQueryClient; let contractManagerQuerier: ContractManagerQuery; @@ -51,6 +52,7 @@ describe('Neutron / Interchain TXs', () => { const icaId1 = 'test1'; const icaId2 = 'test2'; + const unorderedIcaId = 'test-unordered'; const connectionId = 'connection-0'; beforeAll(async (suite: RunnerTestSuite) => { @@ -117,12 +119,22 @@ describe('Neutron / Interchain TXs', () => { }); expect(res.code).toEqual(0); }); + test('create unordered ICA', async () => { + const res = await neutronClient.execute(contractAddress, { + register: { + connection_id: connectionId, + interchain_account_id: unorderedIcaId, + ordering: 'ORDER_UNORDERED', + }, + }); + expect(res.code).toEqual(0); + }); test('check contract balance', async () => { const balance = await neutronClient.getBalance( contractAddress, NEUTRON_DENOM, ); - expect(balance.amount).toEqual('8000000'); + expect(balance.amount).toEqual('7000000'); }); test('multiple IBC accounts created', async () => { const channels = @@ -132,7 +144,7 @@ describe('Neutron / Interchain TXs', () => { // - one exists already, it is open for IBC transfers; // - two more should appear soon since we are opening them implicitly // through ICA creation. - async (channels) => channels.channels.length == 3, + async (channels) => channels.channels.length == 4, ); expect(channels.channels).toBeArray(); expect(channels.channels).toIncludeAllPartialMembers([ @@ -142,6 +154,9 @@ describe('Neutron / Interchain TXs', () => { { portId: `icacontroller-${contractAddress}.test2`, }, + { + portId: `icacontroller-${contractAddress}.test-unordered`, + }, ]); }); @@ -173,6 +188,20 @@ describe('Neutron / Interchain TXs', () => { expect(ica2.interchain_account_address).toStartWith('cosmos'); expect(ica2.interchain_account_address.length).toEqual(65); icaAddress2 = ica2.interchain_account_address; + + const icaUnordered = await neutronClient.getWithAttempts( + () => + neutronClient.queryContractSmart(contractAddress, { + interchain_account_address: { + interchain_account_id: icaId2, + connection_id: connectionId, + }, + }), + async (data) => data.interchain_account_address != null, + ); + expect(icaUnordered.interchain_account_address).toStartWith('cosmos'); + expect(icaUnordered.interchain_account_address.length).toEqual(65); + unorderedIcaAddress = icaUnordered.interchain_account_address; }); test('set payer fees', async () => { @@ -208,6 +237,17 @@ describe('Neutron / Interchain TXs', () => { }, ); expect(res2.code).toEqual(0); + // unordered ICA + const res3 = await gaiaClient.sendTokens( + gaiaWallet.address, + unorderedIcaAddress, + [{ denom: COSMOS_DENOM, amount: '10000' }], + { + gas: '200000', + amount: [{ denom: COSMOS_DENOM, amount: '1000' }], + }, + ); + expect(res3.code).toEqual(0); }); }); describe('Send Interchain TX', () => { @@ -268,7 +308,7 @@ describe('Neutron / Interchain TXs', () => { contractAddress, NEUTRON_DENOM, ); - expect(balance.amount).toEqual('7998000'); + expect(balance.amount).toEqual('6998000'); }); }); @@ -334,7 +374,7 @@ describe('Neutron / Interchain TXs', () => { NEUTRON_DENOM, ); // two interchain txs inside (2000 * 2 = 4000) - expect(balance.amount).toEqual('7994000'); + expect(balance.amount).toEqual('6994000'); }); }); @@ -457,8 +497,7 @@ describe('Neutron / Interchain TXs', () => { timeout: 1, }, }); - // FIXME - rawLog = res.events.join(''); + rawLog = res.rawLog; } catch (e) { rawLog = e.message; } @@ -523,6 +562,62 @@ describe('Neutron / Interchain TXs', () => { }); }); }); + + describe('Unordered channel', () => { + test('delegate with timeout', async () => { + await cleanAckResults(neutronClient, contractAddress); + const res = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + amount: '10', + denom: COSMOS_DENOM, + timeout: 1, + }, + }); + expect(res.code).toEqual(0); + console.log( + 'unordered ica delegate log: ' + JSON.stringify(res.rawLog), + ); + const sequenceId = getSequenceId(res); + console.log('unordered ica sequenceId: ' + sequenceId); + + // timeout handling may be slow, hence we wait for up to 100 blocks here + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId, + 100, + ); + const ackRes = await getAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId, + ); + expect(ackRes).toMatchObject({ + timeout: 'message', + }); + }); + + test('delegate after the timeout on unordered channel should work as channel should still be open', async () => { + const res = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: icaId1, + validator: testState.wallets.cosmos.val1.valAddress, + amount: '10', + denom: COSMOS_DENOM, + timeout: 1, + }, + }); + console.log( + 'delegate after timeout rawLog: ' + JSON.stringify(res.rawLog), + ); + expect(res.code).toBe(0); + }); + }); + describe('Recreation', () => { test('recreate ICA1', async () => { const res = await neutronClient.execute(contractAddress, { From e08c63231d608fa748b5dda8a63328e9eb92a1d2 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Thu, 8 Aug 2024 09:57:46 -0300 Subject: [PATCH 11/40] refactor queriers imports and usage as well update testsuits accordingly upd njs switch to release usage --- package.json | 2 +- src/helpers/interchainqueries.ts | 7 +- src/testcases/parallel/ibc_transfer.test.ts | 47 +++++-------- .../parallel/stargate_queries.test.ts | 2 +- src/testcases/run_in_band/ibc_hooks.test.ts | 2 +- .../run_in_band/interchain_kv_query.test.ts | 9 +-- .../interchain_tx_query_plain.test.ts | 10 +-- .../run_in_band/interchaintx.test.ts | 67 ++++++++----------- .../run_in_band/tokenfactory.test.ts | 4 +- src/testcases/run_in_band/tokenomics.test.ts | 8 +-- yarn.lock | 7 +- 11 files changed, 74 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 391ae037..a0123f93 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#32a88946f8544c128997dca232bac88dd024dd45", + "@neutron-org/neutronjs": "0.1.0-rc6", "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/src/helpers/interchainqueries.ts b/src/helpers/interchainqueries.ts index 2ec00ea0..c609caee 100644 --- a/src/helpers/interchainqueries.ts +++ b/src/helpers/interchainqueries.ts @@ -18,7 +18,7 @@ import axios, { AxiosResponse } from 'axios'; import { SigningNeutronClient } from './signing_neutron_client'; import { IBC_ATOM_DENOM, IBC_USDC_DENOM, NEUTRON_DENOM } from './constants'; import { Coin } from '@neutron-org/neutronjs/cosmos/base/v1beta1/coin'; -import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; +import { QueryClientImpl as BankQuerier } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; import { MsgRemoveInterchainQueryRequest } from '@neutron-org/neutronjs/neutron/interchainqueries/tx'; export const getKvCallbackStatus = async ( @@ -368,8 +368,9 @@ export const validateBalanceQuery = async ( queryId, ); - const balances = await bankQuerier.AllBalances({ - address: address, + const balances = await bankQuerier.allBalances({ + resolveDenom: false, + address: address }); expect(filterIBCDenoms(res.balances.coins)).toEqual( diff --git a/src/testcases/parallel/ibc_transfer.test.ts b/src/testcases/parallel/ibc_transfer.test.ts index 6d38e1e1..0a98d289 100644 --- a/src/testcases/parallel/ibc_transfer.test.ts +++ b/src/testcases/parallel/ibc_transfer.test.ts @@ -5,12 +5,9 @@ import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { MsgTransfer as GaiaMsgTransfer } from 'cosmjs-types/ibc/applications/transfer/v1/tx'; import { MsgTransfer as NeutronMsgTransfer } from '@neutron-org/neutronjs/ibc/applications/transfer/v1/tx'; import { defaultRegistryTypes } from '@cosmjs/stargate'; -import { - QueryClientImpl as ContractManagerQuery, - QueryFailuresResponse, -} from '@neutron-org/cosmjs-types/neutron/contractmanager/query'; -import { QueryClientImpl as BankQueryClient } from '@neutron-org/cosmjs-types/cosmos/bank/v1beta1/query'; -import { QueryClientImpl as IbcQueryClient } from '@neutron-org/cosmjs-types/ibc/applications/transfer/v1/query'; +import { QueryFailuresResponse } from '@neutron-org/neutronjs/neutron/contractmanager/query'; +import { QueryClientImpl as BankQueryClient } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; +import { QueryClientImpl as IbcQueryClient } from '@neutron-org/neutronjs/ibc/applications/transfer/v1/query.rpc.Query'; import { COSMOS_DENOM, IBC_RELAYER_NEUTRON_ADDRESS, @@ -22,6 +19,7 @@ import { waitBlocks } from '@neutron-org/neutronjsplus/dist/wait'; import { Wallet } from '../../helpers/wallet'; import { getIBCDenom } from '@neutron-org/neutronjsplus/dist/cosmos'; import config from '../../config.json'; +import { QueryClientImpl as ContractManagerQuery } from '@neutron-org/neutronjs/neutron/contractmanager/query.rpc.Query'; const TRANSFER_CHANNEL = 'channel-0'; const IBC_TOKEN_DENOM = @@ -117,7 +115,7 @@ describe('Neutron / IBC transfer', () => { expect(res.code).toEqual(0); }); test('check balance', async () => { - const res = await bankQuerier.AllBalances({ address: ibcContract }); + const res = await bankQuerier.allBalances({resolveDenom: false, address: ibcContract }); expect(res.balances).toEqual([ { amount: '50000', denom: NEUTRON_DENOM }, ]); @@ -191,7 +189,7 @@ describe('Neutron / IBC transfer', () => { expect(balance.amount).toEqual('1000'); }); test('check that weird IBC denom is uatom indeed', async () => { - const res = await ibcQuerier.DenomTrace({ + const res = await ibcQuerier.denomTrace({ hash: '27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2', }); expect(res.denomTrace.baseDenom).toEqual(COSMOS_DENOM); @@ -449,12 +447,9 @@ describe('Neutron / IBC transfer', () => { }); }); test('execute contract with failing sudo', async () => { - const failuresBeforeCall = await contractManagerQuerier.AddressFailures( - { - failureId: 0n, // bug: should not be in query - address: ibcContract, - }, - ); + const failuresBeforeCall = await contractManagerQuerier.failures({ + address: ibcContract, + }); expect(failuresBeforeCall.failures.length).toEqual(0); // Mock sudo handler to fail @@ -500,8 +495,7 @@ describe('Neutron / IBC transfer', () => { const failuresAfterCall = await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + contractManagerQuerier.failures({ address: ibcContract, }), // Wait until there 4 failures in the list @@ -579,8 +573,7 @@ describe('Neutron / IBC transfer', () => { const res = await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + contractManagerQuerier.failures({ address: ibcContract, }), // Wait until there 6 failures in the list @@ -600,8 +593,7 @@ describe('Neutron / IBC transfer', () => { await neutronClient.waitBlocks(2); // Try to resubmit failure - const failuresResBefore = await contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + const failuresResBefore = await contractManagerQuerier.failures({ address: ibcContract, }); @@ -616,8 +608,7 @@ describe('Neutron / IBC transfer', () => { await neutronClient.waitBlocks(5); // check that failures count is the same - const failuresResAfter = await contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + const failuresResAfter = await contractManagerQuerier.failures({ address: ibcContract, }); expect(failuresResAfter.failures.length).toEqual(6); @@ -631,8 +622,7 @@ describe('Neutron / IBC transfer', () => { test('successful resubmit failure', async () => { // Resubmit failure - const failuresResBefore = await contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + const failuresResBefore = await contractManagerQuerier.failures({ address: ibcContract, }); const failure = failuresResBefore.failures[0]; @@ -646,8 +636,7 @@ describe('Neutron / IBC transfer', () => { await neutronClient.waitBlocks(5); // check that failures count is changed - const failuresResAfter = await contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + const failuresResAfter = await contractManagerQuerier.failures({ address: ibcContract, }); expect(failuresResAfter.failures.length).toEqual(5); @@ -663,8 +652,7 @@ describe('Neutron / IBC transfer', () => { countTotal: false, reverse: false, }; - const res = await contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + const res = await contractManagerQuerier.failures({ address: ibcContract, pagination, }); @@ -679,8 +667,7 @@ describe('Neutron / IBC transfer', () => { reverse: false, }; await expect( - contractManagerQuerier.AddressFailures({ - failureId: 0n, // bug: should not be in query + contractManagerQuerier.failures({ address: ibcContract, pagination, }), diff --git a/src/testcases/parallel/stargate_queries.test.ts b/src/testcases/parallel/stargate_queries.test.ts index e07adbd3..69f3325f 100644 --- a/src/testcases/parallel/stargate_queries.test.ts +++ b/src/testcases/parallel/stargate_queries.test.ts @@ -7,7 +7,7 @@ import { Suite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { defaultRegistryTypes, SigningStargateClient } from '@cosmjs/stargate'; import { Registry } from '@cosmjs/proto-signing'; -import { MsgTransfer } from 'cosmjs-types/ibc/applications/transfer/v1/tx'; +import { MsgTransfer } from '@neutron-org/neutronjs/ibc/applications/transfer/v1/tx'; import { MsgCreateDenom } from '@neutron-org/neutronjs/osmosis/tokenfactory/v1beta1/tx'; import { COSMOS_DENOM, NEUTRON_DENOM } from '../../helpers/constants'; import config from '../../config.json'; diff --git a/src/testcases/run_in_band/ibc_hooks.test.ts b/src/testcases/run_in_band/ibc_hooks.test.ts index a5342047..6bc0a5ae 100644 --- a/src/testcases/run_in_band/ibc_hooks.test.ts +++ b/src/testcases/run_in_band/ibc_hooks.test.ts @@ -9,7 +9,7 @@ import { inject, Suite } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { defaultRegistryTypes, SigningStargateClient } from '@cosmjs/stargate'; import { Registry } from '@cosmjs/proto-signing'; -import { MsgTransfer } from 'cosmjs-types/ibc/applications/transfer/v1/tx'; +import { MsgTransfer } from '@neutron-org/neutronjs/ibc/applications/transfer/v1/tx'; import config from '../../config.json'; import { waitBlocks } from '@neutron-org/neutronjsplus/dist/wait'; diff --git a/src/testcases/run_in_band/interchain_kv_query.test.ts b/src/testcases/run_in_band/interchain_kv_query.test.ts index 5a3bffca..5734028b 100644 --- a/src/testcases/run_in_band/interchain_kv_query.test.ts +++ b/src/testcases/run_in_band/interchain_kv_query.test.ts @@ -55,7 +55,7 @@ import { } from '../../helpers/constants'; import { QueryClientImpl as InterchainqQuerier } from '@neutron-org/neutronjs/neutron/interchainqueries/query.rpc.Query'; import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; -import { QueryClientImpl as SlashingQuerier } from 'cosmjs-types/cosmos/slashing/v1beta1/query'; +import { QueryClientImpl as SlashingQuerier } from '@neutron-org/neutronjs/cosmos/slashing/v1beta1/query.rpc.Query'; import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; @@ -205,8 +205,9 @@ describe('Neutron / Interchain KV Query', () => { amount: [{ denom: NEUTRON_DENOM, amount: '1000' }], }, ); - let balances = await bankQuerier.AllBalances({ - address: contractAddress, + let balances = await bankQuerier.allBalances({ + resolveDenom: false, + address: contractAddress }); expect(balances.balances[0].amount).toEqual('1000000'); @@ -219,7 +220,7 @@ describe('Neutron / Interchain KV Query', () => { gaiaWallet.address, ); - balances = await bankQuerier.AllBalances({ address: contractAddress }); + balances = await bankQuerier.allBalances({resolveDenom: false, address: contractAddress }); expect(balances.balances.length).toEqual(0); }); diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index ede4657a..f96bea98 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -19,7 +19,7 @@ import { COSMOS_DENOM, NEUTRON_DENOM, } from '../../helpers/constants'; -import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; +import { QueryClientImpl as BankQuerier } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; @@ -116,9 +116,11 @@ describe('Neutron / Interchain TX Query', () => { test('handle callback on a sending', async () => { addr1ExpectedBalance += amountToAddrFirst1; - let balances = await bankQuerierGaia.AllBalances({ - address: watchedAddr1, - }); + let balances = await bankQuerierGaia.allBalances( + { + resolveDenom: false, + address: watchedAddr1 + }); expect(balances.balances).toEqual([]); const res = await gaiaClient.sendTokens( gaiaWallet.address, diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 84c4bca6..cc3729ba 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -9,20 +9,23 @@ import { LocalState } from '../../helpers/local_state'; import { Suite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { SigningStargateClient } from '@cosmjs/stargate'; - import { - QueryClientImpl as StakingQueryClient, QueryDelegatorDelegationsResponse, -} from '@neutron-org/cosmjs-types/cosmos/staking/v1beta1/query'; +} from '@neutron-org/neutronjs/cosmos/staking/v1beta1/query'; +import {QueryClientImpl as StakingQueryClient} from '@neutron-org/neutronjs/cosmos/staking/v1beta1/query.rpc.Query'; import { - QueryClientImpl as IbcQueryClient, QueryChannelsResponse, -} from '@neutron-org/cosmjs-types/ibc/core/channel/v1/query'; +} from '@neutron-org/neutronjs/ibc/core/channel/v1/query'; +import { + QueryClientImpl as IbcQueryClient +} from '@neutron-org/neutronjs/ibc/core/channel/v1/query.rpc.Query'; import { - QueryClientImpl as ContractManagerQuery, QueryFailuresResponse, -} from '@neutron-org/cosmjs-types/neutron/contractmanager/query'; +} from '@neutron-org/neutronjs/neutron/contractmanager/query'; import { getWithAttempts } from '../../helpers/misc'; +import { + QueryClientImpl as ContractManagerQuery, +} from '@neutron-org/neutronjs/neutron/contractmanager/query.rpc.Query'; import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; @@ -233,7 +236,7 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - stakingQuerier.DelegatorDelegations({ + stakingQuerier.delegatorDelegations({ delegatorAddr: icaAddress1, }), async (delegations) => delegations.delegationResponses?.length == 1, @@ -252,7 +255,7 @@ describe('Neutron / Interchain TXs', () => { const res2 = await getWithAttempts( gaiaClient, () => - stakingQuerier.DelegatorDelegations({ + stakingQuerier.delegatorDelegations({ delegatorAddr: icaAddress2, }), async (delegations) => delegations.delegationResponses?.length == 0, @@ -303,7 +306,7 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1 }), + stakingQuerier.delegatorDelegations({ delegatorAddr: icaAddress1 }), async (delegations) => delegations.delegationResponses?.length == 1, ); expect(res1.delegationResponses).toEqual([ @@ -317,7 +320,7 @@ describe('Neutron / Interchain TXs', () => { }, }, ]); - const res2 = await stakingQuerier.DelegatorDelegations({ + const res2 = await stakingQuerier.delegatorDelegations({ delegatorAddr: icaAddress2, }); expect(res2.delegationResponses).toEqual([]); @@ -527,7 +530,7 @@ describe('Neutron / Interchain TXs', () => { }); expect(res.code).toEqual(0); await neutronClient.getWithAttempts( - async () => ibcQuerier.Channels({}), + async () => ibcQuerier.channels({}), // Wait until there are 4 channels: // - one exists already, it is open for IBC transfers; // - two channels are already opened via ICA registration before @@ -535,7 +538,7 @@ describe('Neutron / Interchain TXs', () => { async (channels) => channels.channels.length == 4, ); await neutronClient.getWithAttempts( - () => ibcQuerier.Channels({}), + () => ibcQuerier.channels({}), async (channels) => channels.channels.find((c) => c.channelId == 'channel-3')?.state == 3, @@ -565,7 +568,7 @@ describe('Neutron / Interchain TXs', () => { }); }); test('check validator state after ICA recreation', async () => { - const res = await stakingQuerier.DelegatorDelegations({ + const res = await stakingQuerier.delegatorDelegations({ delegatorAddr: icaAddress1, }); expect(res.delegationResponses).toEqual([ @@ -586,9 +589,8 @@ describe('Neutron / Interchain TXs', () => { beforeAll(async () => { await cleanAckResults(neutronClient, contractAddress); - const failures = await contractManagerQuerier.AddressFailures({ + const failures = await contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }); expect(failures.failures.length).toEqual(0); @@ -615,9 +617,8 @@ describe('Neutron / Interchain TXs', () => { // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ + contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }), async (data) => data.failures.length == 1, 100, @@ -652,9 +653,8 @@ describe('Neutron / Interchain TXs', () => { // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ + contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }), async (data) => data.failures.length == 2, 100, @@ -689,9 +689,8 @@ describe('Neutron / Interchain TXs', () => { // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ + contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }), async (data) => data.failures.length == 3, 100, @@ -728,9 +727,8 @@ describe('Neutron / Interchain TXs', () => { // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ + contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }), async (data) => data.failures.length == 4, 100, @@ -766,9 +764,8 @@ describe('Neutron / Interchain TXs', () => { // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ + contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }), async (data) => data.failures.length == 5, 100, @@ -806,9 +803,8 @@ describe('Neutron / Interchain TXs', () => { // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( async () => - contractManagerQuerier.AddressFailures({ + contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }), async (data) => data.failures.length == 6, 100, @@ -825,9 +821,8 @@ describe('Neutron / Interchain TXs', () => { }); test('check stored failures and acks', async () => { - const failures = await contractManagerQuerier.AddressFailures({ + const failures = await contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }); // 4 ack failures, 2 timeout failure, just as described in the tests above expect(failures.failures).toEqual([ @@ -879,9 +874,8 @@ describe('Neutron / Interchain TXs', () => { await neutronClient.waitBlocks(5); // Try to resubmit failure - const failuresResBefore = await contractManagerQuerier.AddressFailures({ + const failuresResBefore = await contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }); await expect( neutronClient.execute(contractAddress, { @@ -894,9 +888,8 @@ describe('Neutron / Interchain TXs', () => { await neutronClient.waitBlocks(5); // check that failures count is the same - const failuresResAfter = await contractManagerQuerier.AddressFailures({ + const failuresResAfter = await contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }); expect(failuresResAfter.failures.length).toEqual(6); @@ -913,9 +906,8 @@ describe('Neutron / Interchain TXs', () => { test('successful resubmit failure', async () => { // Resubmit failure - const failuresResBefore = await contractManagerQuerier.AddressFailures({ + const failuresResBefore = await contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }); const failure = failuresResBefore.failures[0]; const failureId = failure.id; @@ -929,9 +921,8 @@ describe('Neutron / Interchain TXs', () => { await neutronClient.waitBlocks(5); // check that failures count is changed - const failuresResAfter = await contractManagerQuerier.AddressFailures({ + const failuresResAfter = await contractManagerQuerier.failures({ address: contractAddress, - failureId: 0n, }); expect(failuresResAfter.failures.length).toEqual(5); diff --git a/src/testcases/run_in_band/tokenfactory.test.ts b/src/testcases/run_in_band/tokenfactory.test.ts index 1863a613..300d132a 100644 --- a/src/testcases/run_in_band/tokenfactory.test.ts +++ b/src/testcases/run_in_band/tokenfactory.test.ts @@ -20,7 +20,7 @@ import { MsgMint, MsgSetBeforeSendHook, } from '@neutron-org/neutronjs/osmosis/tokenfactory/v1beta1/tx'; -import { QueryClientImpl as BankQueryClient } from '@neutron-org/cosmjs-types/cosmos/bank/v1beta1/query'; +import { QueryClientImpl as BankQueryClient } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; import { createRPCQueryClient as createOsmosisClient } from '@neutron-org/neutronjs/osmosis/rpc.query'; import { OsmosisQuerier } from '@neutron-org/neutronjs/querier_types'; import { NEUTRON_DENOM } from '@neutron-org/neutronjsplus/dist/constants'; @@ -709,7 +709,7 @@ describe('Neutron / Tokenfactory', () => { }, }); - const metadata = await bankQuerier.DenomMetadata({ denom: denom }); + const metadata = await bankQuerier.denomMetadata({ denom: denom }); expect(metadata.metadata.base).toEqual(denom); expect(metadata.metadata.uri).toEqual(denom); expect(metadata.metadata.display).toEqual(denom); diff --git a/src/testcases/run_in_band/tokenomics.test.ts b/src/testcases/run_in_band/tokenomics.test.ts index 63851ca7..5c48bbda 100644 --- a/src/testcases/run_in_band/tokenomics.test.ts +++ b/src/testcases/run_in_band/tokenomics.test.ts @@ -5,11 +5,11 @@ import { LocalState } from '../../helpers/local_state'; import { QueryClientImpl as FeeburnerQueryClient } from '@neutron-org/neutronjs/neutron/feeburner/query.rpc.Query'; import { Registry } from '@cosmjs/proto-signing'; import { defaultRegistryTypes, SigningStargateClient } from '@cosmjs/stargate'; -import { QueryClientImpl as BankQueryClient } from '@neutron-org/cosmjs-types/cosmos/bank/v1beta1/query'; +import { QueryClientImpl as BankQueryClient } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; import { QueryTotalBurnedNeutronsAmountResponse } from '@neutron-org/neutronjs/neutron/feeburner/query'; import { QuerySupplyOfResponse } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; -import { MsgTransfer } from 'cosmjs-types/ibc/applications/transfer/v1/tx'; +import { MsgTransfer } from '@neutron-org/neutronjs/ibc/applications/transfer/v1/tx'; import { Wallet } from '../../helpers/wallet'; import config from '../../config.json'; @@ -90,7 +90,7 @@ describe('Neutron / Tokenomics', () => { let totalSupplyBefore: QuerySupplyOfResponse; test('Read total supply', async () => { - totalSupplyBefore = await bankQuerier.SupplyOf({ denom: NEUTRON_DENOM }); + totalSupplyBefore = await bankQuerier.supplyOf({ denom: NEUTRON_DENOM }); }); test('Perform tx with a very big neutron fee', async () => { @@ -107,7 +107,7 @@ describe('Neutron / Tokenomics', () => { }); test('Total supply of neutrons has decreased', async () => { - const totalSupplyAfter = await bankQuerier.SupplyOf({ + const totalSupplyAfter = await bankQuerier.supplyOf({ denom: NEUTRON_DENOM, }); const diff = diff --git a/yarn.lock b/yarn.lock index 6ea29087..1080bac5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,9 +1307,10 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@https://github.com/neutron-org/neutronjs.git#32a88946f8544c128997dca232bac88dd024dd45": - version "0.1.0-rc4" - resolved "https://github.com/neutron-org/neutronjs.git#32a88946f8544c128997dca232bac88dd024dd45" +"@neutron-org/neutronjs@0.1.0-rc6": + version "0.1.0-rc6" + resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc6.tgz#7196f37836a01566074ede0e04a61ce50fa89453" + integrity sha512-cqqhdxWsvnj9cn1I3Y7Mc+GqcdJvah3nvXVuWw0Ec1xUXTtoo7pC2fen1OWZ6QPKipnmH7Vd0wZegnCSUncWZw== "@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b": version "0.4.0-rc21" From 99dd79e1c56f76739e4ed81813137d9228cb599b Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Thu, 8 Aug 2024 13:48:15 -0300 Subject: [PATCH 12/40] lint --- src/helpers/interchainqueries.ts | 2 +- src/testcases/parallel/ibc_transfer.test.ts | 5 ++++- src/testcases/run_in_band/interchain_kv_query.test.ts | 7 +++++-- .../run_in_band/interchain_tx_query_plain.test.ts | 9 ++++----- src/testcases/run_in_band/interchaintx.test.ts | 2 +- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/helpers/interchainqueries.ts b/src/helpers/interchainqueries.ts index c609caee..b3faf2dc 100644 --- a/src/helpers/interchainqueries.ts +++ b/src/helpers/interchainqueries.ts @@ -370,7 +370,7 @@ export const validateBalanceQuery = async ( const balances = await bankQuerier.allBalances({ resolveDenom: false, - address: address + address: address, }); expect(filterIBCDenoms(res.balances.coins)).toEqual( diff --git a/src/testcases/parallel/ibc_transfer.test.ts b/src/testcases/parallel/ibc_transfer.test.ts index 0a98d289..15091942 100644 --- a/src/testcases/parallel/ibc_transfer.test.ts +++ b/src/testcases/parallel/ibc_transfer.test.ts @@ -115,7 +115,10 @@ describe('Neutron / IBC transfer', () => { expect(res.code).toEqual(0); }); test('check balance', async () => { - const res = await bankQuerier.allBalances({resolveDenom: false, address: ibcContract }); + const res = await bankQuerier.allBalances({ + resolveDenom: false, + address: ibcContract, + }); expect(res.balances).toEqual([ { amount: '50000', denom: NEUTRON_DENOM }, ]); diff --git a/src/testcases/run_in_band/interchain_kv_query.test.ts b/src/testcases/run_in_band/interchain_kv_query.test.ts index 5734028b..cfcaca47 100644 --- a/src/testcases/run_in_band/interchain_kv_query.test.ts +++ b/src/testcases/run_in_band/interchain_kv_query.test.ts @@ -207,7 +207,7 @@ describe('Neutron / Interchain KV Query', () => { ); let balances = await bankQuerier.allBalances({ resolveDenom: false, - address: contractAddress + address: contractAddress, }); expect(balances.balances[0].amount).toEqual('1000000'); @@ -220,7 +220,10 @@ describe('Neutron / Interchain KV Query', () => { gaiaWallet.address, ); - balances = await bankQuerier.allBalances({resolveDenom: false, address: contractAddress }); + balances = await bankQuerier.allBalances({ + resolveDenom: false, + address: contractAddress, + }); expect(balances.balances.length).toEqual(0); }); diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index f96bea98..4af2073d 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -116,11 +116,10 @@ describe('Neutron / Interchain TX Query', () => { test('handle callback on a sending', async () => { addr1ExpectedBalance += amountToAddrFirst1; - let balances = await bankQuerierGaia.allBalances( - { - resolveDenom: false, - address: watchedAddr1 - }); + let balances = await bankQuerierGaia.allBalances({ + resolveDenom: false, + address: watchedAddr1, + }); expect(balances.balances).toEqual([]); const res = await gaiaClient.sendTokens( gaiaWallet.address, diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index cc3729ba..aa3d4562 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -126,7 +126,7 @@ describe('Neutron / Interchain TXs', () => { test('multiple IBC accounts created', async () => { const channels = await neutronClient.getWithAttempts( - () => ibcQuerier.Channels({}), + () => ibcQuerier.channels({}), // Wait until there are 3 channels: // - one exists already, it is open for IBC transfers; // - two more should appear soon since we are opening them implicitly From 1ab453781ba98bb1ee8657c483d5b96926a71b13 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Thu, 8 Aug 2024 17:11:11 -0300 Subject: [PATCH 13/40] use old querier --- src/helpers/interchainqueries.ts | 5 ++--- .../run_in_band/interchain_kv_query.test.ts | 8 +++----- .../run_in_band/interchain_tx_query_plain.test.ts | 2 +- src/testcases/run_in_band/interchaintx.test.ts | 14 +++++++------- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/helpers/interchainqueries.ts b/src/helpers/interchainqueries.ts index b3faf2dc..2ec00ea0 100644 --- a/src/helpers/interchainqueries.ts +++ b/src/helpers/interchainqueries.ts @@ -18,7 +18,7 @@ import axios, { AxiosResponse } from 'axios'; import { SigningNeutronClient } from './signing_neutron_client'; import { IBC_ATOM_DENOM, IBC_USDC_DENOM, NEUTRON_DENOM } from './constants'; import { Coin } from '@neutron-org/neutronjs/cosmos/base/v1beta1/coin'; -import { QueryClientImpl as BankQuerier } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; +import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; import { MsgRemoveInterchainQueryRequest } from '@neutron-org/neutronjs/neutron/interchainqueries/tx'; export const getKvCallbackStatus = async ( @@ -368,8 +368,7 @@ export const validateBalanceQuery = async ( queryId, ); - const balances = await bankQuerier.allBalances({ - resolveDenom: false, + const balances = await bankQuerier.AllBalances({ address: address, }); diff --git a/src/testcases/run_in_band/interchain_kv_query.test.ts b/src/testcases/run_in_band/interchain_kv_query.test.ts index cfcaca47..3fe14fc7 100644 --- a/src/testcases/run_in_band/interchain_kv_query.test.ts +++ b/src/testcases/run_in_band/interchain_kv_query.test.ts @@ -55,7 +55,7 @@ import { } from '../../helpers/constants'; import { QueryClientImpl as InterchainqQuerier } from '@neutron-org/neutronjs/neutron/interchainqueries/query.rpc.Query'; import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; -import { QueryClientImpl as SlashingQuerier } from '@neutron-org/neutronjs/cosmos/slashing/v1beta1/query.rpc.Query'; +import { QueryClientImpl as SlashingQuerier } from 'cosmjs-types/cosmos/slashing/v1beta1/query'; import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; @@ -205,8 +205,7 @@ describe('Neutron / Interchain KV Query', () => { amount: [{ denom: NEUTRON_DENOM, amount: '1000' }], }, ); - let balances = await bankQuerier.allBalances({ - resolveDenom: false, + let balances = await bankQuerier.AllBalances({ address: contractAddress, }); expect(balances.balances[0].amount).toEqual('1000000'); @@ -220,8 +219,7 @@ describe('Neutron / Interchain KV Query', () => { gaiaWallet.address, ); - balances = await bankQuerier.allBalances({ - resolveDenom: false, + balances = await bankQuerier.AllBalances({ address: contractAddress, }); diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index 4af2073d..b6166441 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -19,7 +19,7 @@ import { COSMOS_DENOM, NEUTRON_DENOM, } from '../../helpers/constants'; -import { QueryClientImpl as BankQuerier } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/query.rpc.Query'; +import { QueryClientImpl as BankQuerier } from 'cosmjs-types/cosmos/bank/v1beta1/query'; import config from '../../config.json'; import { Wallet } from '../../helpers/wallet'; diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index aa3d4562..1b040c40 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -10,9 +10,9 @@ import { Suite, inject } from 'vitest'; import { SigningNeutronClient } from '../../helpers/signing_neutron_client'; import { SigningStargateClient } from '@cosmjs/stargate'; import { + QueryClientImpl as StakingQueryClient, QueryDelegatorDelegationsResponse, -} from '@neutron-org/neutronjs/cosmos/staking/v1beta1/query'; -import {QueryClientImpl as StakingQueryClient} from '@neutron-org/neutronjs/cosmos/staking/v1beta1/query.rpc.Query'; +} from '@neutron-org/cosmjs-types/cosmos/staking/v1beta1/query'; import { QueryChannelsResponse, } from '@neutron-org/neutronjs/ibc/core/channel/v1/query'; @@ -236,7 +236,7 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - stakingQuerier.delegatorDelegations({ + stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1, }), async (delegations) => delegations.delegationResponses?.length == 1, @@ -255,7 +255,7 @@ describe('Neutron / Interchain TXs', () => { const res2 = await getWithAttempts( gaiaClient, () => - stakingQuerier.delegatorDelegations({ + stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress2, }), async (delegations) => delegations.delegationResponses?.length == 0, @@ -306,7 +306,7 @@ describe('Neutron / Interchain TXs', () => { const res1 = await getWithAttempts( gaiaClient, () => - stakingQuerier.delegatorDelegations({ delegatorAddr: icaAddress1 }), + stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1 }), async (delegations) => delegations.delegationResponses?.length == 1, ); expect(res1.delegationResponses).toEqual([ @@ -320,7 +320,7 @@ describe('Neutron / Interchain TXs', () => { }, }, ]); - const res2 = await stakingQuerier.delegatorDelegations({ + const res2 = await stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress2, }); expect(res2.delegationResponses).toEqual([]); @@ -568,7 +568,7 @@ describe('Neutron / Interchain TXs', () => { }); }); test('check validator state after ICA recreation', async () => { - const res = await stakingQuerier.delegatorDelegations({ + const res = await stakingQuerier.DelegatorDelegations({ delegatorAddr: icaAddress1, }); expect(res.delegationResponses).toEqual([ From 34ae5b9251e4d6b2f431ad6ab9fe0aae121fcbdc Mon Sep 17 00:00:00 2001 From: nhpd Date: Tue, 13 Aug 2024 11:49:20 +0400 Subject: [PATCH 14/40] check ordering of newly created channels --- src/testcases/run_in_band/interchaintx.test.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 655a0777..6b3cfd25 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -34,6 +34,7 @@ import { waitForAck, } from '../../helpers/interchaintxs'; import config from '../../config.json'; +import { Order } from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; describe('Neutron / Interchain TXs', () => { let testState: LocalState; @@ -150,12 +151,15 @@ describe('Neutron / Interchain TXs', () => { expect(channels.channels).toIncludeAllPartialMembers([ { portId: `icacontroller-${contractAddress}.test1`, + ordering: Order.ORDER_ORDERED, }, { portId: `icacontroller-${contractAddress}.test2`, + ordering: Order.ORDER_ORDERED, }, { portId: `icacontroller-${contractAddress}.test-unordered`, + ordering: Order.ORDER_UNORDERED, }, ]); }); From 241c9577f92b79e3d3c164aaff6e558428fc7886 Mon Sep 17 00:00:00 2001 From: nhpd Date: Tue, 13 Aug 2024 16:53:48 +0400 Subject: [PATCH 15/40] add unordered two tx's one not relayed case --- .../run_in_band/interchaintx.test.ts | 120 +++++++++++++++--- 1 file changed, 103 insertions(+), 17 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 6b3cfd25..e577eb71 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -33,6 +33,7 @@ import { getAcks, waitForAck, } from '../../helpers/interchaintxs'; +import { execSync } from 'child_process'; import config from '../../config.json'; import { Order } from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; @@ -568,7 +569,7 @@ describe('Neutron / Interchain TXs', () => { }); describe('Unordered channel', () => { - test('delegate with timeout', async () => { + test('delegate with timeout does not close unordered channel', async () => { await cleanAckResults(neutronClient, contractAddress); const res = await neutronClient.execute(contractAddress, { delegate: { @@ -603,12 +604,14 @@ describe('Neutron / Interchain TXs', () => { expect(ackRes).toMatchObject({ timeout: 'message', }); + + // TODO: check that channel is opened }); test('delegate after the timeout on unordered channel should work as channel should still be open', async () => { const res = await neutronClient.execute(contractAddress, { delegate: { - interchain_account_id: icaId1, + interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, amount: '10', denom: COSMOS_DENOM, @@ -620,6 +623,74 @@ describe('Neutron / Interchain TXs', () => { ); expect(res.code).toBe(0); }); + + test('try two delegates with first one when relayer is paused, so only second delegate passed through', async () => { + const delegationsBefore = await gaiaStakingQuerier.ValidatorDelegations( + { validatorAddr: testState.wallets.cosmos.val1.valAddress }, + ); + + const pauseRes = execSync('docker pause setup-hermes-1'); + console.log('pauseRes: ' + pauseRes.toString()); + + // this should get through without relaying + const res1 = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + denom: COSMOS_DENOM, + amount: '15', + }, + }); + expect(res1.code).toEqual(0); + const sequenceId1 = getSequenceId(res1); + + // TODO: check that delegated did not change + // TODO: check that operation not acknowledged + + const unpauseRes = execSync('docker unpause setup-hermes-1'); + console.log('pauseRes: ' + unpauseRes.toString()); + + // this should be relayed first, even thought it has later sequence. + const res2 = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + denom: COSMOS_DENOM, + amount: '49', + }, + }); + expect(res2.code).toEqual(0); + const sequenceId2 = getSequenceId(res2); + expect(sequenceId1).toBe(sequenceId2 - 1); + + // timeout handling may be slow, hence we wait for up to 100 blocks here + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId2, + 100, + ); + + const delegationsAfter = await gaiaStakingQuerier.ValidatorDelegations({ + validatorAddr: testState.wallets.cosmos.val1.valAddress, + }); + console.log( + 'before: ' + + JSON.stringify( + delegationsBefore.delegationResponses.map((d) => d.balance), + ), + ); + console.log( + 'after: ' + + JSON.stringify( + delegationsAfter.delegationResponses.map((d) => d.balance), + ), + ); + + // TODO: compare + // delegationsBefore.delegationResponses[0]. + }); }); describe('Recreation', () => { @@ -637,7 +708,7 @@ describe('Neutron / Interchain TXs', () => { // - one exists already, it is open for IBC transfers; // - two channels are already opened via ICA registration before // - one more, we are opening it right now - async (channels) => channels.channels.length == 4, + async (channels) => channels.channels.length == 5, ); await neutronClient.getWithAttempts( () => ibcQuerier.Channels({}), @@ -857,16 +928,21 @@ describe('Neutron / Interchain TXs', () => { integration_tests_set_sudo_failure_mock: { state: 'enabled' }, }); - // Testing timeout failure - await neutronClient.execute(contractAddress, { - delegate: { - interchain_account_id: icaId1, - validator: testState.wallets.cosmos.val1.valAddress, - amount: '10', - denom: COSMOS_DENOM, - timeout: 1, - }, - }); + try { + // Testing timeout failure + const kekw = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: icaId1, + validator: testState.wallets.cosmos.val1.valAddress, + amount: '10', + denom: COSMOS_DENOM, + timeout: 1, + }, + }); + console.log('result: ' + kekw.rawLog); + } catch (e) { + console.log('exception: ' + e.toString()); + } // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( @@ -875,7 +951,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }), - async (data) => data.failures.length == 5, + async (data) => data.failures.length == 6, 100, ); @@ -915,7 +991,12 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }), - async (data) => data.failures.length == 6, + async (data) => { + console.log( + 'data.failures.length : ' + data.failures.length.toString(), + ); + return data.failures.length == 7; + }, 100, ); @@ -964,6 +1045,11 @@ describe('Neutron / Interchain TXs', () => { expect.objectContaining({ address: contractAddress, id: 5n, + error: 'codespace: wasm, code: 5', // contractmanager sudo limit exceeded + }), + expect.objectContaining({ + address: contractAddress, + id: 6n, error: 'codespace: contractmanager, code: 1103', // contractmanager sudo limit exceeded }), ]); @@ -1003,7 +1089,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }); - expect(failuresResAfter.failures.length).toEqual(6); + expect(failuresResAfter.failures.length).toEqual(7); // make sure contract's state hasn't been changed const acks = await getAcks(neutronClient, contractAddress); @@ -1038,7 +1124,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }); - expect(failuresResAfter.failures.length).toEqual(5); + expect(failuresResAfter.failures.length).toEqual(6); // make sure contract's state has been changed const acks = await getAcks(neutronClient, contractAddress); From 4222e26f2fd070b45ed699edea30e85d6519437b Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 13 Aug 2024 10:33:35 -0300 Subject: [PATCH 16/40] fix typo aftermerge --- src/testcases/run_in_band/interchain_tx_query_plain.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts index b6166441..ede4657a 100644 --- a/src/testcases/run_in_band/interchain_tx_query_plain.test.ts +++ b/src/testcases/run_in_band/interchain_tx_query_plain.test.ts @@ -116,8 +116,7 @@ describe('Neutron / Interchain TX Query', () => { test('handle callback on a sending', async () => { addr1ExpectedBalance += amountToAddrFirst1; - let balances = await bankQuerierGaia.allBalances({ - resolveDenom: false, + let balances = await bankQuerierGaia.AllBalances({ address: watchedAddr1, }); expect(balances.balances).toEqual([]); From 866213fb72e2e29c557b49d4786ed9c73735e1ff Mon Sep 17 00:00:00 2001 From: nhpd Date: Wed, 14 Aug 2024 14:53:02 +0400 Subject: [PATCH 17/40] tmp: try out manual relaying --- package.json | 2 + src/global_setup.ts | 4 + .../run_in_band/interchaintx.test.ts | 198 +++++++-- yarn.lock | 416 +++++++++++++++++- 4 files changed, 566 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index beaa1981..5acd65aa 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "license": "Apache-2.0", "dependencies": { "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@confio/relayer": "^0.12.0", "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", @@ -53,6 +54,7 @@ "lodash": "^4.17.21", "long": "^5.2.1", "merkletreejs": "^0.3.9", + "sinon": "^18.0.0", "yesno": "^0.4.0" }, "devDependencies": { diff --git a/src/global_setup.ts b/src/global_setup.ts index d7389389..f30ce149 100644 --- a/src/global_setup.ts +++ b/src/global_setup.ts @@ -118,3 +118,7 @@ declare module 'vitest' { mnemonics: string[]; } } + +(BigInt.prototype as any).toJSON = function () { + return this.toString(); +}; diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index e577eb71..6bfc42dc 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -34,8 +34,10 @@ import { waitForAck, } from '../../helpers/interchaintxs'; import { execSync } from 'child_process'; +import { IbcClient, Link, NoopLogger } from '@confio/relayer/build'; import config from '../../config.json'; import { Order } from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; +import { GasPrice } from '@cosmjs/stargate/build/fee'; describe('Neutron / Interchain TXs', () => { let testState: LocalState; @@ -198,7 +200,7 @@ describe('Neutron / Interchain TXs', () => { () => neutronClient.queryContractSmart(contractAddress, { interchain_account_address: { - interchain_account_id: icaId2, + interchain_account_id: unorderedIcaId, connection_id: connectionId, }, }), @@ -569,21 +571,21 @@ describe('Neutron / Interchain TXs', () => { }); describe('Unordered channel', () => { - test('delegate with timeout does not close unordered channel', async () => { + test.skip('delegate with timeout does not close unordered channel', async () => { await cleanAckResults(neutronClient, contractAddress); const res = await neutronClient.execute(contractAddress, { delegate: { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, - amount: '10', + amount: '100', denom: COSMOS_DENOM, timeout: 1, }, }); expect(res.code).toEqual(0); - console.log( - 'unordered ica delegate log: ' + JSON.stringify(res.rawLog), - ); + // console.log( + // 'unordered ica delegate log: ' + JSON.stringify(res.rawLog), + // ); const sequenceId = getSequenceId(res); console.log('unordered ica sequenceId: ' + sequenceId); @@ -608,25 +610,60 @@ describe('Neutron / Interchain TXs', () => { // TODO: check that channel is opened }); - test('delegate after the timeout on unordered channel should work as channel should still be open', async () => { + test.skip('delegate after the timeout on unordered channel should work as channel should still be open', async () => { const res = await neutronClient.execute(contractAddress, { delegate: { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, - amount: '10', + amount: '770', denom: COSMOS_DENOM, - timeout: 1, }, }); + const sequenceId = getSequenceId(res); + await getAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId, + ); console.log( 'delegate after timeout rawLog: ' + JSON.stringify(res.rawLog), ); - expect(res.code).toBe(0); + expect(res.code).toBe(0); // works as channel is still open }); test('try two delegates with first one when relayer is paused, so only second delegate passed through', async () => { - const delegationsBefore = await gaiaStakingQuerier.ValidatorDelegations( - { validatorAddr: testState.wallets.cosmos.val1.valAddress }, + const neutronIbcClient = await IbcClient.connectWithSigner( + 'http://localhost:26657', + testState.wallets.neutron.demo1.directwallet, + testState.wallets.neutron.demo1.address, + { + gasPrice: GasPrice.fromString('0.05untrn'), + estimatedBlockTime: 3, // FIXME + estimatedIndexerTime: 100, + }, + ); + const gaiaIbcClient = await IbcClient.connectWithSigner( + 'http://localhost:16657', + testState.wallets.cosmos.demo1.directwallet, + testState.wallets.cosmos.demo1.address, + { + gasPrice: GasPrice.fromString('0.05uatom'), + estimatedBlockTime: 3, + estimatedIndexerTime: 100, + }, + ); + + const link = await Link.createWithExistingConnections( + neutronIbcClient, + gaiaIbcClient, + 'connection-0', + 'connection-0', + new NoopLogger(), + ); + + const delegationsBefore = await gaiaStakingQuerier.DelegatorDelegations( + { delegatorAddr: unorderedIcaAddress }, ); const pauseRes = execSync('docker pause setup-hermes-1'); @@ -638,17 +675,25 @@ describe('Neutron / Interchain TXs', () => { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, denom: COSMOS_DENOM, - amount: '15', + amount: '583', }, }); expect(res1.code).toEqual(0); const sequenceId1 = getSequenceId(res1); + console.log( + 'paused sequenceId (TO BE RELAYED ONLY LATER): ' + sequenceId1, + ); // TODO: check that delegated did not change // TODO: check that operation not acknowledged - const unpauseRes = execSync('docker unpause setup-hermes-1'); - console.log('pauseRes: ' + unpauseRes.toString()); + // const unpauseRes = execSync('docker unpause setup-hermes-1'); + // console.log('unpauseRes: ' + unpauseRes.toString()); + + const delegationsBefore2 = + await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, + }); // this should be relayed first, even thought it has later sequence. const res2 = await neutronClient.execute(contractAddress, { @@ -656,14 +701,37 @@ describe('Neutron / Interchain TXs', () => { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, denom: COSMOS_DENOM, - amount: '49', + amount: '490', }, }); expect(res2.code).toEqual(0); const sequenceId2 = getSequenceId(res2); expect(sequenceId1).toBe(sequenceId2 - 1); + console.log('unpaused sequenceId: ' + sequenceId2); + + const pendingPackets = await link.getPendingPackets('A'); + console.log( + 'Pending packets to relay manually: ' + + JSON.stringify( + pendingPackets.map((p) => p.packet.sequence.toString()), + ), + ); + const res = await link.relayPackets('A', pendingPackets); + console.log( + 'Manual relay result: ' + + JSON.stringify( + res.map((p) => p.originalPacket.sequence.toString()), + ), + ); // timeout handling may be slow, hence we wait for up to 100 blocks here + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId1, + 100, + ); await waitForAck( neutronClient, contractAddress, @@ -671,25 +739,59 @@ describe('Neutron / Interchain TXs', () => { sequenceId2, 100, ); + console.log( + 'should not get to this point! as were waiting for tx that was sent when relayer was paused', + ); - const delegationsAfter = await gaiaStakingQuerier.ValidatorDelegations({ - validatorAddr: testState.wallets.cosmos.val1.valAddress, + const delegationsAfter = await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, }); console.log( - 'before: ' + - JSON.stringify( - delegationsBefore.delegationResponses.map((d) => d.balance), - ), + 'before: ' + JSON.stringify(delegationsBefore.delegationResponses), ); console.log( - 'after: ' + - JSON.stringify( - delegationsAfter.delegationResponses.map((d) => d.balance), - ), + 'before2: ' + JSON.stringify(delegationsBefore2.delegationResponses), + ); + console.log( + 'after : ' + JSON.stringify(delegationsAfter.delegationResponses), ); // TODO: compare // delegationsBefore.delegationResponses[0]. + + // TODO: clear first packet. Should be successful + const channel = (await ibcQuerier.Channels({})).channels.find( + (c) => c.ordering === Order.ORDER_UNORDERED, + ); + const clearPacketsCmd = + "docker exec setup-hermes-1 hermes --config /app/network/hermes/config.toml clear packets --chain 'test-1' --port " + + channel.portId + + ' --channel ' + + channel.channelId; + console.log('clearPacketsCmd: ' + clearPacketsCmd); + const clearPacketsRes = execSync(clearPacketsCmd); + console.log('clearPacketsRes: ' + clearPacketsRes.toString()); + + // timeout handling may be slow, hence we wait for up to 100 blocks here + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId1, + 100, + ); + + // TODO: wait for ack sequenceId1 + // console.log( + // 'after2 : ' + + // JSON.stringify( + // delegationsAfter.delegationResponses.map((d) => d.balance), + // ), + // ); + + // unpause hermes for tests below + const unpauseRes = execSync('docker unpause setup-hermes-1'); + console.log('unpauseRes: ' + unpauseRes.toString()); }); }); @@ -758,7 +860,7 @@ describe('Neutron / Interchain TXs', () => { }); }); - describe('delegate with sudo failure', () => { + describe('Delegate with sudo failure', () => { beforeAll(async () => { await cleanAckResults(neutronClient, contractAddress); @@ -951,7 +1053,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }), - async (data) => data.failures.length == 6, + async (data) => data.failures.length == 5, 100, ); @@ -991,12 +1093,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }), - async (data) => { - console.log( - 'data.failures.length : ' + data.failures.length.toString(), - ); - return data.failures.length == 7; - }, + async (data) => data.failures.length == 6, 100, ); @@ -1045,13 +1142,13 @@ describe('Neutron / Interchain TXs', () => { expect.objectContaining({ address: contractAddress, id: 5n, - error: 'codespace: wasm, code: 5', // contractmanager sudo limit exceeded - }), - expect.objectContaining({ - address: contractAddress, - id: 6n, error: 'codespace: contractmanager, code: 1103', // contractmanager sudo limit exceeded }), + // expect.objectContaining({ + // address: contractAddress, + // id: 6n, + // // error: 'codespace: contractmanager, code: 1103', // contractmanager sudo limit exceeded + // }), ]); const acks = await getAcks(neutronClient, contractAddress); @@ -1137,3 +1234,26 @@ describe('Neutron / Interchain TXs', () => { }); }); }); + +function logger() { + return { + log: (msg) => { + console.log('LOG: ' + msg); + }, + info: (msg) => { + console.log('INFO: ' + msg); + }, + error: (msg) => { + console.log('ERROR: ' + msg); + }, + warn: (msg) => { + console.log('WARN: ' + msg); + }, + verbose: (msg) => { + console.log('VERBOSE: ' + msg); + }, + debug: (msg) => { + console.log('DEBUG: ' + msg); + }, + }; +} diff --git a/yarn.lock b/yarn.lock index 862ec492..97e2a7ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -946,6 +946,11 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@colors/colors@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + "@confio/ics23@^0.6.8": version "0.6.8" resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" @@ -954,6 +959,32 @@ "@noble/hashes" "^1.0.0" protobufjs "^6.8.8" +"@confio/relayer@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@confio/relayer/-/relayer-0.12.0.tgz#c63ec1aae7c6f14518a7958d491d135b39bb91c8" + integrity sha512-oLoE0VbW0TNt5RWQ7m87b5NfZ8ffY2O80OIM9y1G8S1CV7oNUi0iw0/yZRT0thSmSzHVTMGxTu1YB+jy0CqmVw== + dependencies: + "@cosmjs/cosmwasm-stargate" "^0.32.1" + "@cosmjs/crypto" "^0.32.1" + "@cosmjs/encoding" "^0.32.1" + "@cosmjs/faucet-client" "^0.32.1" + "@cosmjs/math" "^0.32.1" + "@cosmjs/proto-signing" "^0.32.1" + "@cosmjs/stargate" "^0.32.1" + "@cosmjs/stream" "^0.32.1" + "@cosmjs/tendermint-rpc" "^0.32.1" + "@cosmjs/utils" "^0.32.1" + ajv "7.1.1" + axios "^1.6.7" + commander "7.1.0" + cosmjs-types "^0.9.0" + fast-safe-stringify "2.0.4" + js-yaml "4.0.0" + prom-client "13.1.0" + table "^6.7.1" + triple-beam "1.3.0" + winston "3.3.3" + "@cosmjs/amino@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.32.4.tgz#3908946c0394e6d431694c8992c5147079a1c860" @@ -964,7 +995,7 @@ "@cosmjs/math" "^0.32.4" "@cosmjs/utils" "^0.32.4" -"@cosmjs/cosmwasm-stargate@^0.32.4": +"@cosmjs/cosmwasm-stargate@^0.32.1", "@cosmjs/cosmwasm-stargate@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz#2ee93f2cc0b1c146ac369b2bf8ef9ee2e159fd50" integrity sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA== @@ -980,7 +1011,7 @@ cosmjs-types "^0.9.0" pako "^2.0.2" -"@cosmjs/crypto@^0.32.4": +"@cosmjs/crypto@^0.32.1", "@cosmjs/crypto@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.32.4.tgz#5d29633b661eaf092ddb3e7ea6299cfd6f4507a2" integrity sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw== @@ -993,7 +1024,7 @@ elliptic "^6.5.4" libsodium-wrappers-sumo "^0.7.11" -"@cosmjs/encoding@^0.32.4": +"@cosmjs/encoding@^0.32.1", "@cosmjs/encoding@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.32.4.tgz#646e0e809f7f4f1414d8fa991fb0ffe6c633aede" integrity sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw== @@ -1002,6 +1033,13 @@ bech32 "^1.1.4" readonly-date "^1.0.0" +"@cosmjs/faucet-client@^0.32.1": + version "0.32.4" + resolved "https://registry.yarnpkg.com/@cosmjs/faucet-client/-/faucet-client-0.32.4.tgz#33eb5922e5e2955a6029cd29318ae3f40dbf071c" + integrity sha512-ahbuoyI0lZBpK7nKSvmFywc+qodiIwOCnUuMLN9CWGQguqkC808ewCz4NWiMPPX3dj46SG7Y71n979YIlguUuw== + dependencies: + axios "^1.6.0" + "@cosmjs/json-rpc@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz#be91eb89ea78bd5dc02d0a9fa184dd6790790f0b" @@ -1010,14 +1048,14 @@ "@cosmjs/stream" "^0.32.4" xstream "^11.14.0" -"@cosmjs/math@^0.32.4": +"@cosmjs/math@^0.32.1", "@cosmjs/math@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.32.4.tgz#87ac9eadc06696e30a30bdb562a495974bfd0a1a" integrity sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw== dependencies: bn.js "^5.2.0" -"@cosmjs/proto-signing@^0.32.4": +"@cosmjs/proto-signing@^0.32.1", "@cosmjs/proto-signing@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz#5a06e087c6d677439c8c9b25b5223d5e72c4cd93" integrity sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ== @@ -1039,7 +1077,7 @@ ws "^7" xstream "^11.14.0" -"@cosmjs/stargate@0.32.4", "@cosmjs/stargate@^0.32.4": +"@cosmjs/stargate@0.32.4", "@cosmjs/stargate@^0.32.1", "@cosmjs/stargate@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.32.4.tgz#bd0e4d3bf613b629addbf5f875d3d3b50f640af1" integrity sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ== @@ -1055,14 +1093,14 @@ cosmjs-types "^0.9.0" xstream "^11.14.0" -"@cosmjs/stream@^0.32.4": +"@cosmjs/stream@^0.32.1", "@cosmjs/stream@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.32.4.tgz#83e1f2285807467c56d9ea0e1113f79d9fa63802" integrity sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A== dependencies: xstream "^11.14.0" -"@cosmjs/tendermint-rpc@^0.32.4": +"@cosmjs/tendermint-rpc@^0.32.1", "@cosmjs/tendermint-rpc@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz#b36f9ec657498e42c97e21bb7368798ef6279752" integrity sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw== @@ -1078,11 +1116,20 @@ readonly-date "^1.0.0" xstream "^11.14.0" -"@cosmjs/utils@^0.32.4": +"@cosmjs/utils@^0.32.1", "@cosmjs/utils@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.32.4.tgz#a9a717c9fd7b1984d9cefdd0ef6c6f254060c671" integrity sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w== +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + "@esbuild/aix-ppc64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" @@ -1524,6 +1571,41 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/samsam@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" + integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== + dependencies: + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" + integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== + "@types/body-parser@*": version "1.19.5" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" @@ -1628,6 +1710,11 @@ "@types/node" "*" "@types/send" "*" +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + "@typescript-eslint/eslint-plugin@^5.19.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -1807,6 +1894,16 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" + integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -1817,6 +1914,16 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1895,6 +2002,11 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1918,6 +2030,15 @@ axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.6.7: + version "1.7.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2" + integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-plugin-polyfill-corejs2@^0.4.10: version "0.4.11" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" @@ -1962,6 +2083,11 @@ bignumber.js@^9.0.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + bip39@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" @@ -2139,7 +2265,7 @@ cli-truncate@^3.1.0: slice-ansi "^5.0.0" string-width "^5.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -2158,16 +2284,40 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + colorette@^2.0.16: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2175,6 +2325,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== + commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -2327,6 +2482,11 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2379,6 +2539,11 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2700,6 +2865,16 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-safe-stringify@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.4.tgz#4fe828718aa61dbcf9119c3c24e79cc4dea973b2" + integrity sha512-mNlGUdKOeGNleyrmgbKYtbnCr9KZkZXU7eM89JRo8vY10f7Ul1Fbj07hUBW3N4fC0xM+fmfFfa2zM7mIizhpNQ== + +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -2707,6 +2882,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + fflate@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" @@ -2761,6 +2941,11 @@ flatted@^3.2.9, flatted@^3.3.1: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + follow-redirects@^1.15.0, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -3016,6 +3201,11 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-core-module@^2.13.0: version "2.15.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" @@ -3108,6 +3298,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -3143,11 +3340,21 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -3155,6 +3362,11 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -3226,11 +3438,21 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3246,6 +3468,18 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +logform@^2.2.0, logform@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.1.tgz#71403a7d8cae04b2b734147963236205db9b3df0" + integrity sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -3402,7 +3636,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3427,6 +3661,17 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +nise@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-6.0.0.tgz#ae56fccb5d912037363c3b3f29ebbfa28bde8b48" + integrity sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/text-encoding" "^0.7.2" + just-extend "^6.2.0" + path-to-regexp "^6.2.1" + node-releases@^2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" @@ -3483,6 +3728,13 @@ once@^1.3.0: dependencies: wrappy "1" +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -3577,6 +3829,11 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" + integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -3642,6 +3899,13 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prom-client@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-13.1.0.tgz#1185caffd8691e28d32e373972e662964e3dba45" + integrity sha512-jT9VccZCWrJWXdyEtQddCDszYsiuWj5T0ekrPszi/WEegj3IZy6Mm09iOOVM86A4IKMWq8hZkT2dD9MaSe+sng== + dependencies: + tdigest "^0.1.1" + protobufjs@^6.8.8: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" @@ -3718,6 +3982,15 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +readable-stream@^3.4.0, readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readonly-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" @@ -3771,6 +4044,11 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -3849,11 +4127,16 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@5.2.1, safe-buffer@^5.1.0: +safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3957,6 +4240,25 @@ signal-exit@^4.1.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sinon@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.0.tgz#69ca293dbc3e82590a8b0d46c97f63ebc1e5fc01" + integrity sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" + sirv@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" @@ -4020,6 +4322,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + stackback@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -4040,7 +4347,7 @@ string-argv@^0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4058,6 +4365,13 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -4101,7 +4415,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -4123,6 +4437,29 @@ symbol-observable@^2.0.3: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== +table@^6.7.1: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tdigest@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== + dependencies: + bintrees "1.0.2" + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4180,6 +4517,16 @@ treeify@^1.1.0: resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== +triple-beam@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + ts-node@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" @@ -4242,6 +4589,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-detect@^4.0.8: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -4318,6 +4675,11 @@ utf8@3.0.0: resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -4404,6 +4766,30 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" +winston-transport@^4.4.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.1.tgz#52ff1bcfe452ad89991a0aaff9c3b18e7f392569" + integrity sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA== + dependencies: + logform "^2.6.1" + readable-stream "^3.6.2" + triple-beam "^1.3.0" + +winston@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" + integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== + dependencies: + "@dabh/diagnostics" "^2.0.2" + async "^3.1.0" + is-stream "^2.0.0" + logform "^2.2.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.4.0" + word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" From 39a0e5d34f3cc38b158790291af0e796ac187402 Mon Sep 17 00:00:00 2001 From: nhpd Date: Wed, 14 Aug 2024 21:27:39 +0400 Subject: [PATCH 18/40] extract into constants --- src/global_setup.ts | 10 ++++------ src/helpers/constants.ts | 5 +++++ src/helpers/local_state.ts | 20 ++++++++++++++------ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/global_setup.ts b/src/global_setup.ts index f30ce149..64c3f354 100644 --- a/src/global_setup.ts +++ b/src/global_setup.ts @@ -8,9 +8,9 @@ import { Input, Output } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/bank'; import ch from 'child_process'; import { COSMOS_DENOM, - COSMOS_PREFIX, + COSMOS_PREFIX, GAIA_RPC, NEUTRON_DENOM, - NEUTRON_PREFIX, + NEUTRON_PREFIX, NEUTRON_RPC, } from './helpers/constants'; import config from './config.json'; @@ -31,11 +31,9 @@ export default async function ({ provide }: GlobalSetupContext) { mnemonics.push(generateMnemonic()); } - const rpcNeutron = process.env.NODE1_RPC || 'http://localhost:26657'; - const rpcGaia = process.env.NODE2_RPC || 'http://localhost:16657'; // fund a lot or preallocated wallets for testing purposes - await fundWallets(mnemonics, rpcNeutron, NEUTRON_PREFIX, NEUTRON_DENOM); - await fundWallets(mnemonics, rpcGaia, COSMOS_PREFIX, COSMOS_DENOM); + await fundWallets(mnemonics, NEUTRON_RPC, NEUTRON_PREFIX, NEUTRON_DENOM); + await fundWallets(mnemonics, GAIA_RPC, COSMOS_PREFIX, COSMOS_DENOM); provide('mnemonics', mnemonics); diff --git a/src/helpers/constants.ts b/src/helpers/constants.ts index 2bceff41..0be79ef5 100644 --- a/src/helpers/constants.ts +++ b/src/helpers/constants.ts @@ -78,3 +78,8 @@ export const CONTRACTS = { export const NEUTRON_PREFIX = process.env.NEUTRON_ADDRESS_PREFIX || 'neutron'; export const COSMOS_PREFIX = process.env.COSMOS_ADDRESS_PREFIX || 'cosmos'; +export const NEUTRON_RPC = process.env.NODE1_RPC || 'http://localhost:26657'; +export const GAIA_RPC = process.env.NODE2_RPC || 'http://localhost:16657'; +export const NEUTRON_REST = process.env.NODE1_URL || 'http://localhost:1317'; +export const GAIA_REST = process.env.NODE2_URL || 'http://localhost:1316'; +export const IBC_WEB_HOST = process.env.ICQ_WEB_HOST || 'http://localhost:9999'; diff --git a/src/helpers/local_state.ts b/src/helpers/local_state.ts index d60fd116..0b142266 100644 --- a/src/helpers/local_state.ts +++ b/src/helpers/local_state.ts @@ -7,7 +7,15 @@ import { import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; import { RunnerTestSuite } from 'vitest'; import { connectComet } from '@cosmjs/tendermint-rpc'; -import { COSMOS_PREFIX, NEUTRON_PREFIX } from './constants'; +import { + COSMOS_PREFIX, + GAIA_REST, + GAIA_RPC, + IBC_WEB_HOST, + NEUTRON_PREFIX, + NEUTRON_REST, + NEUTRON_RPC, +} from './constants'; import { Wallet } from './wallet'; // limit of wallets precreated for one test @@ -47,13 +55,13 @@ export class LocalState { private mnemonics: string[], private suite?: RunnerTestSuite | undefined, ) { - this.rpcNeutron = process.env.NODE1_RPC || 'http://localhost:26657'; - this.rpcGaia = process.env.NODE2_RPC || 'http://localhost:16657'; + this.rpcNeutron = NEUTRON_RPC; + this.rpcGaia = GAIA_RPC; - this.restNeutron = process.env.NODE1_URL || 'http://localhost:1317'; - this.restGaia = process.env.NODE2_URL || 'http://localhost:1316'; + this.restNeutron = NEUTRON_REST; + this.restGaia = GAIA_REST; - this.icqWebHost = process.env.ICQ_WEB_HOST || 'http://localhost:9999'; + this.icqWebHost = IBC_WEB_HOST; this.walletIndexes = { neutron: 0, cosmos: 0 }; } From 8fa11c644a365ea2f707b4e3ad4ed957eba81b61 Mon Sep 17 00:00:00 2001 From: nhpd Date: Wed, 14 Aug 2024 21:28:00 +0400 Subject: [PATCH 19/40] use conflio relayer to manually control relaying of ibc packets --- .../run_in_band/interchaintx.test.ts | 205 +++++++++--------- 1 file changed, 104 insertions(+), 101 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 6bfc42dc..7d178024 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -34,9 +34,12 @@ import { waitForAck, } from '../../helpers/interchaintxs'; import { execSync } from 'child_process'; -import { IbcClient, Link, NoopLogger } from '@confio/relayer/build'; +import { IbcClient, Link } from '@confio/relayer/build'; import config from '../../config.json'; -import { Order } from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; +import { + Order, + State, +} from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; import { GasPrice } from '@cosmjs/stargate/build/fee'; describe('Neutron / Interchain TXs', () => { @@ -583,11 +586,7 @@ describe('Neutron / Interchain TXs', () => { }, }); expect(res.code).toEqual(0); - // console.log( - // 'unordered ica delegate log: ' + JSON.stringify(res.rawLog), - // ); const sequenceId = getSequenceId(res); - console.log('unordered ica sequenceId: ' + sequenceId); // timeout handling may be slow, hence we wait for up to 100 blocks here await waitForAck( @@ -607,18 +606,22 @@ describe('Neutron / Interchain TXs', () => { timeout: 'message', }); - // TODO: check that channel is opened + const channel = (await ibcQuerier.Channels({})).channels.find( + (c) => c.ordering === Order.ORDER_UNORDERED, + ); + expect(channel.state).toEqual(State.STATE_OPEN); }); - test.skip('delegate after the timeout on unordered channel should work as channel should still be open', async () => { + test('delegate after the timeout on unordered channel should work as channel should still be open', async () => { const res = await neutronClient.execute(contractAddress, { delegate: { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, - amount: '770', + amount: '100', denom: COSMOS_DENOM, }, }); + expect(res.code).toBe(0); // works as channel is still open const sequenceId = getSequenceId(res); await getAck( neutronClient, @@ -626,25 +629,21 @@ describe('Neutron / Interchain TXs', () => { unorderedIcaId, sequenceId, ); - console.log( - 'delegate after timeout rawLog: ' + JSON.stringify(res.rawLog), - ); - expect(res.code).toBe(0); // works as channel is still open }); test('try two delegates with first one when relayer is paused, so only second delegate passed through', async () => { const neutronIbcClient = await IbcClient.connectWithSigner( - 'http://localhost:26657', + testState.rpcNeutron, testState.wallets.neutron.demo1.directwallet, testState.wallets.neutron.demo1.address, { gasPrice: GasPrice.fromString('0.05untrn'), - estimatedBlockTime: 3, // FIXME + estimatedBlockTime: 3, estimatedIndexerTime: 100, }, ); const gaiaIbcClient = await IbcClient.connectWithSigner( - 'http://localhost:16657', + testState.rpcGaia, testState.wallets.cosmos.demo1.directwallet, testState.wallets.cosmos.demo1.address, { @@ -657,32 +656,31 @@ describe('Neutron / Interchain TXs', () => { const link = await Link.createWithExistingConnections( neutronIbcClient, gaiaIbcClient, - 'connection-0', - 'connection-0', - new NoopLogger(), + connectionId, + connectionId, ); const delegationsBefore = await gaiaStakingQuerier.DelegatorDelegations( { delegatorAddr: unorderedIcaAddress }, ); - const pauseRes = execSync('docker pause setup-hermes-1'); - console.log('pauseRes: ' + pauseRes.toString()); + // We pause hermes container, so that we can use manual relaying of the packets. + // That needed in order to ack ibc packets in backwards order + execSync('docker pause setup-hermes-1'); - // this should get through without relaying const res1 = await neutronClient.execute(contractAddress, { delegate: { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, denom: COSMOS_DENOM, - amount: '583', + amount: '200', }, }); expect(res1.code).toEqual(0); const sequenceId1 = getSequenceId(res1); - console.log( - 'paused sequenceId (TO BE RELAYED ONLY LATER): ' + sequenceId1, - ); + // console.log( + // 'paused sequenceId (TO BE RELAYED ONLY LATER): ' + sequenceId1, + // ); // TODO: check that delegated did not change // TODO: check that operation not acknowledged @@ -695,50 +693,62 @@ describe('Neutron / Interchain TXs', () => { delegatorAddr: unorderedIcaAddress, }); - // this should be relayed first, even thought it has later sequence. + // this should be relayed first, even thought it has a later sequence. const res2 = await neutronClient.execute(contractAddress, { delegate: { interchain_account_id: unorderedIcaId, validator: testState.wallets.cosmos.val1.valAddress, denom: COSMOS_DENOM, - amount: '490', + amount: '400', }, }); expect(res2.code).toEqual(0); const sequenceId2 = getSequenceId(res2); expect(sequenceId1).toBe(sequenceId2 - 1); - console.log('unpaused sequenceId: ' + sequenceId2); const pendingPackets = await link.getPendingPackets('A'); - console.log( - 'Pending packets to relay manually: ' + - JSON.stringify( - pendingPackets.map((p) => p.packet.sequence.toString()), - ), - ); - const res = await link.relayPackets('A', pendingPackets); - console.log( - 'Manual relay result: ' + - JSON.stringify( - res.map((p) => p.originalPacket.sequence.toString()), - ), + // console.log( + // 'Pending packets to relay manually: ' + + // JSON.stringify( + // pendingPackets.map((p) => p.packet.sequence.toString()), + // ), + // ); + const lastPacket = pendingPackets.find( + (p) => p.packet.sequence === BigInt(sequenceId2), ); + await link.relayPackets('A', [lastPacket]); + // console.log( + // 'Manual relay result: ' + + // JSON.stringify( + // res.map((p) => p.originalPacket.sequence.toString()), + // ) + + // ', events: \n' + + // JSON.stringify(res.map((p) => p.txEvents)), + // ); + const [acksA, acksB] = await Promise.all([ + link.getPendingAcks('A'), + link.getPendingAcks('B'), + ]); + const [acksResA, acksResB] = await Promise.all([ + link.relayAcks('A', acksA), + link.relayAcks('B', acksB), + ]); + console.log('acksResA: ' + JSON.stringify(acksResA)); + console.log('acksResB: ' + JSON.stringify(acksResB)); // timeout handling may be slow, hence we wait for up to 100 blocks here - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId1, - 100, - ); - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId2, - 100, - ); + try { + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId2, + 100, + ); + console.log('got ack!'); + } catch (_) { + console.log('continue after error waiting for sequenceId2'); + } console.log( 'should not get to this point! as were waiting for tx that was sent when relayer was paused', ); @@ -760,26 +770,26 @@ describe('Neutron / Interchain TXs', () => { // delegationsBefore.delegationResponses[0]. // TODO: clear first packet. Should be successful - const channel = (await ibcQuerier.Channels({})).channels.find( - (c) => c.ordering === Order.ORDER_UNORDERED, - ); - const clearPacketsCmd = - "docker exec setup-hermes-1 hermes --config /app/network/hermes/config.toml clear packets --chain 'test-1' --port " + - channel.portId + - ' --channel ' + - channel.channelId; - console.log('clearPacketsCmd: ' + clearPacketsCmd); - const clearPacketsRes = execSync(clearPacketsCmd); - console.log('clearPacketsRes: ' + clearPacketsRes.toString()); + // const channel = (await ibcQuerier.Channels({})).channels.find( + // (c) => c.ordering === Order.ORDER_UNORDERED, + // ); + // const clearPacketsCmd = + // "docker exec setup-hermes-1 hermes --config /app/network/hermes/config.toml clear packets --chain 'test-1' --port " + + // channel.portId + + // ' --channel ' + + // channel.channelId; + // console.log('clearPacketsCmd: ' + clearPacketsCmd); + // const clearPacketsRes = execSync(clearPacketsCmd); + // console.log('clearPacketsRes: ' + clearPacketsRes.toString()); // timeout handling may be slow, hence we wait for up to 100 blocks here - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId1, - 100, - ); + // await waitForAck( + // neutronClient, + // contractAddress, + // unorderedIcaId, + // sequenceId1, + // 100, + // ); // TODO: wait for ack sequenceId1 // console.log( @@ -797,6 +807,13 @@ describe('Neutron / Interchain TXs', () => { describe('Recreation', () => { test('recreate ICA1', async () => { + // debug + const beforeChannels = await ibcQuerier.Channels({}); + console.log('beforeChannels: ' + beforeChannels.channels.length); + console.log( + 'kekw: ' + + JSON.stringify(beforeChannels.channels.map((c) => c.channelId)), + ); const res = await neutronClient.execute(contractAddress, { register: { connection_id: connectionId, @@ -806,17 +823,26 @@ describe('Neutron / Interchain TXs', () => { expect(res.code).toEqual(0); await neutronClient.getWithAttempts( async () => ibcQuerier.Channels({}), - // Wait until there are 4 channels: + // Wait until there are 5 channels: // - one exists already, it is open for IBC transfers; - // - two channels are already opened via ICA registration before + // - three channels are already opened via ICA registration before // - one more, we are opening it right now async (channels) => channels.channels.length == 5, ); await neutronClient.getWithAttempts( () => ibcQuerier.Channels({}), - async (channels) => - channels.channels.find((c) => c.channelId == 'channel-3')?.state == - 3, + async (channels) => { + console.log( + 'channel-4: ' + + JSON.stringify( + channels.channels.find((c) => c.channelId == 'channel-3'), + ), + ); + return ( + channels.channels.find((c) => c.channelId == 'channel-4') + ?.state == State.STATE_OPEN + ); + }, ); }); test('delegate from first ICA after ICA recreation', async () => { @@ -1234,26 +1260,3 @@ describe('Neutron / Interchain TXs', () => { }); }); }); - -function logger() { - return { - log: (msg) => { - console.log('LOG: ' + msg); - }, - info: (msg) => { - console.log('INFO: ' + msg); - }, - error: (msg) => { - console.log('ERROR: ' + msg); - }, - warn: (msg) => { - console.log('WARN: ' + msg); - }, - verbose: (msg) => { - console.log('VERBOSE: ' + msg); - }, - debug: (msg) => { - console.log('DEBUG: ' + msg); - }, - }; -} From 8d16d3b737c1a1bb79ea4d67dbe4f4b9549bb518 Mon Sep 17 00:00:00 2001 From: nhpd Date: Wed, 14 Aug 2024 22:00:58 +0400 Subject: [PATCH 20/40] cleanup --- .../run_in_band/interchaintx.test.ts | 217 ++++++------------ 1 file changed, 75 insertions(+), 142 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 7d178024..49192d5d 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -41,6 +41,20 @@ import { State, } from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; import { GasPrice } from '@cosmjs/stargate/build/fee'; +import { PacketWithMetadata } from '@confio/relayer/build/lib/endpoint'; + +async function relayPacket(link: Link, lastPacket: PacketWithMetadata) { + await link.relayPackets('A', [lastPacket]); + const [acksA, acksB] = await Promise.all([ + link.getPendingAcks('A'), + link.getPendingAcks('B'), + ]); + const [acksResA, acksResB] = await Promise.all([ + link.relayAcks('A', acksA), + link.relayAcks('B', acksB), + ]); + return { acksResA, acksResB }; +} describe('Neutron / Interchain TXs', () => { let testState: LocalState; @@ -660,10 +674,6 @@ describe('Neutron / Interchain TXs', () => { connectionId, ); - const delegationsBefore = await gaiaStakingQuerier.DelegatorDelegations( - { delegatorAddr: unorderedIcaAddress }, - ); - // We pause hermes container, so that we can use manual relaying of the packets. // That needed in order to ack ibc packets in backwards order execSync('docker pause setup-hermes-1'); @@ -678,20 +688,6 @@ describe('Neutron / Interchain TXs', () => { }); expect(res1.code).toEqual(0); const sequenceId1 = getSequenceId(res1); - // console.log( - // 'paused sequenceId (TO BE RELAYED ONLY LATER): ' + sequenceId1, - // ); - - // TODO: check that delegated did not change - // TODO: check that operation not acknowledged - - // const unpauseRes = execSync('docker unpause setup-hermes-1'); - // console.log('unpauseRes: ' + unpauseRes.toString()); - - const delegationsBefore2 = - await gaiaStakingQuerier.DelegatorDelegations({ - delegatorAddr: unorderedIcaAddress, - }); // this should be relayed first, even thought it has a later sequence. const res2 = await neutronClient.execute(contractAddress, { @@ -706,114 +702,68 @@ describe('Neutron / Interchain TXs', () => { const sequenceId2 = getSequenceId(res2); expect(sequenceId1).toBe(sequenceId2 - 1); + // should be delegated 100 coins from before + const delegationsQ1 = await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, + }); + expect(delegationsQ1.delegationResponses[0].balance.amount).toEqual( + '100', + ); + const pendingPackets = await link.getPendingPackets('A'); - // console.log( - // 'Pending packets to relay manually: ' + - // JSON.stringify( - // pendingPackets.map((p) => p.packet.sequence.toString()), - // ), - // ); + + // relay lastPacket const lastPacket = pendingPackets.find( (p) => p.packet.sequence === BigInt(sequenceId2), ); - await link.relayPackets('A', [lastPacket]); - // console.log( - // 'Manual relay result: ' + - // JSON.stringify( - // res.map((p) => p.originalPacket.sequence.toString()), - // ) + - // ', events: \n' + - // JSON.stringify(res.map((p) => p.txEvents)), - // ); - const [acksA, acksB] = await Promise.all([ - link.getPendingAcks('A'), - link.getPendingAcks('B'), - ]); - const [acksResA, acksResB] = await Promise.all([ - link.relayAcks('A', acksA), - link.relayAcks('B', acksB), - ]); - console.log('acksResA: ' + JSON.stringify(acksResA)); - console.log('acksResB: ' + JSON.stringify(acksResB)); - - // timeout handling may be slow, hence we wait for up to 100 blocks here - try { - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId2, - 100, - ); - console.log('got ack!'); - } catch (_) { - console.log('continue after error waiting for sequenceId2'); - } - console.log( - 'should not get to this point! as were waiting for tx that was sent when relayer was paused', + expect(lastPacket).not.toBeNull(); + await relayPacket(link, lastPacket); + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId2, + 100, ); - const delegationsAfter = await gaiaStakingQuerier.DelegatorDelegations({ + // should be delegated 100 + 400 (lastPacket) coins after relaying last packet + const delegationsQ2 = await gaiaStakingQuerier.DelegatorDelegations({ delegatorAddr: unorderedIcaAddress, }); - console.log( - 'before: ' + JSON.stringify(delegationsBefore.delegationResponses), + expect(delegationsQ2.delegationResponses[0].balance.amount).toEqual( + '500', ); - console.log( - 'before2: ' + JSON.stringify(delegationsBefore2.delegationResponses), - ); - console.log( - 'after : ' + JSON.stringify(delegationsAfter.delegationResponses), + + // relay firstPacket + const firstPacket = pendingPackets.find( + (p) => p.packet.sequence === BigInt(sequenceId1), ); + expect(firstPacket).not.toBeNull(); + await relayPacket(link, firstPacket); - // TODO: compare - // delegationsBefore.delegationResponses[0]. - - // TODO: clear first packet. Should be successful - // const channel = (await ibcQuerier.Channels({})).channels.find( - // (c) => c.ordering === Order.ORDER_UNORDERED, - // ); - // const clearPacketsCmd = - // "docker exec setup-hermes-1 hermes --config /app/network/hermes/config.toml clear packets --chain 'test-1' --port " + - // channel.portId + - // ' --channel ' + - // channel.channelId; - // console.log('clearPacketsCmd: ' + clearPacketsCmd); - // const clearPacketsRes = execSync(clearPacketsCmd); - // console.log('clearPacketsRes: ' + clearPacketsRes.toString()); + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId1, + 100, + ); - // timeout handling may be slow, hence we wait for up to 100 blocks here - // await waitForAck( - // neutronClient, - // contractAddress, - // unorderedIcaId, - // sequenceId1, - // 100, - // ); - - // TODO: wait for ack sequenceId1 - // console.log( - // 'after2 : ' + - // JSON.stringify( - // delegationsAfter.delegationResponses.map((d) => d.balance), - // ), - // ); + // should be delegated 100 + 400 + 200 (lastPacket + firstPacket) coins after relaying last packet + const delegationsQ3 = await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, + }); + expect(delegationsQ3.delegationResponses[0].balance.amount).toEqual( + '700', + ); // unpause hermes for tests below - const unpauseRes = execSync('docker unpause setup-hermes-1'); - console.log('unpauseRes: ' + unpauseRes.toString()); + execSync('docker unpause setup-hermes-1'); }); }); describe('Recreation', () => { test('recreate ICA1', async () => { - // debug - const beforeChannels = await ibcQuerier.Channels({}); - console.log('beforeChannels: ' + beforeChannels.channels.length); - console.log( - 'kekw: ' + - JSON.stringify(beforeChannels.channels.map((c) => c.channelId)), - ); const res = await neutronClient.execute(contractAddress, { register: { connection_id: connectionId, @@ -831,18 +781,11 @@ describe('Neutron / Interchain TXs', () => { ); await neutronClient.getWithAttempts( () => ibcQuerier.Channels({}), - async (channels) => { - console.log( - 'channel-4: ' + - JSON.stringify( - channels.channels.find((c) => c.channelId == 'channel-3'), - ), - ); - return ( - channels.channels.find((c) => c.channelId == 'channel-4') - ?.state == State.STATE_OPEN - ); - }, + async (channels) => + channels.channels.findLast( + (c) => c.portId === `icacontroller-${contractAddress}.test1`, + )?.state == State.STATE_OPEN, + 100, ); }); test('delegate from first ICA after ICA recreation', async () => { @@ -1056,21 +999,16 @@ describe('Neutron / Interchain TXs', () => { integration_tests_set_sudo_failure_mock: { state: 'enabled' }, }); - try { - // Testing timeout failure - const kekw = await neutronClient.execute(contractAddress, { - delegate: { - interchain_account_id: icaId1, - validator: testState.wallets.cosmos.val1.valAddress, - amount: '10', - denom: COSMOS_DENOM, - timeout: 1, - }, - }); - console.log('result: ' + kekw.rawLog); - } catch (e) { - console.log('exception: ' + e.toString()); - } + const res = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: icaId1, + validator: testState.wallets.cosmos.val1.valAddress, + amount: '10', + denom: COSMOS_DENOM, + timeout: 1, + }, + }); + expect(res.code).toEqual(0); // wait until sudo is called and processed and failure is recorder await neutronClient.getWithAttempts( @@ -1163,18 +1101,13 @@ describe('Neutron / Interchain TXs', () => { expect.objectContaining({ address: contractAddress, id: 4n, - error: 'codespace: wasm, code: 5', // execute wasm contract failer + error: 'codespace: wasm, code: 5', // execute wasm contract failed }), expect.objectContaining({ address: contractAddress, id: 5n, error: 'codespace: contractmanager, code: 1103', // contractmanager sudo limit exceeded }), - // expect.objectContaining({ - // address: contractAddress, - // id: 6n, - // // error: 'codespace: contractmanager, code: 1103', // contractmanager sudo limit exceeded - // }), ]); const acks = await getAcks(neutronClient, contractAddress); @@ -1212,7 +1145,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }); - expect(failuresResAfter.failures.length).toEqual(7); + expect(failuresResAfter.failures.length).toEqual(6); // make sure contract's state hasn't been changed const acks = await getAcks(neutronClient, contractAddress); @@ -1247,7 +1180,7 @@ describe('Neutron / Interchain TXs', () => { address: contractAddress, failureId: 0n, }); - expect(failuresResAfter.failures.length).toEqual(6); + expect(failuresResAfter.failures.length).toEqual(5); // make sure contract's state has been changed const acks = await getAcks(neutronClient, contractAddress); From 62c1906dd59a033fe3430f75739b81c2300a8ac3 Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 15 Aug 2024 01:34:35 +0400 Subject: [PATCH 21/40] fmt --- src/global_setup.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/global_setup.ts b/src/global_setup.ts index 64c3f354..32cc3291 100644 --- a/src/global_setup.ts +++ b/src/global_setup.ts @@ -8,9 +8,11 @@ import { Input, Output } from '@neutron-org/neutronjs/cosmos/bank/v1beta1/bank'; import ch from 'child_process'; import { COSMOS_DENOM, - COSMOS_PREFIX, GAIA_RPC, + COSMOS_PREFIX, + GAIA_RPC, NEUTRON_DENOM, - NEUTRON_PREFIX, NEUTRON_RPC, + NEUTRON_PREFIX, + NEUTRON_RPC, } from './helpers/constants'; import config from './config.json'; From b2b3086baca23ca0888c65b0737efc10adc20af5 Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 15 Aug 2024 02:09:17 +0400 Subject: [PATCH 22/40] cleanup --- src/helpers/constants.ts | 1 + src/helpers/interchaintxs.ts | 17 ++++++ src/helpers/local_state.ts | 38 +++++++++++++ .../run_in_band/interchaintx.test.ts | 56 +++---------------- 4 files changed, 65 insertions(+), 47 deletions(-) diff --git a/src/helpers/constants.ts b/src/helpers/constants.ts index 75e24ac5..62f61fd2 100644 --- a/src/helpers/constants.ts +++ b/src/helpers/constants.ts @@ -83,3 +83,4 @@ export const GAIA_RPC = process.env.NODE2_RPC || 'http://localhost:16657'; export const NEUTRON_REST = process.env.NODE1_URL || 'http://localhost:1317'; export const GAIA_REST = process.env.NODE2_URL || 'http://localhost:1316'; export const IBC_WEB_HOST = process.env.ICQ_WEB_HOST || 'http://localhost:9999'; +export const GAIA_CONNECTION = 'connection-0'; diff --git a/src/helpers/interchaintxs.ts b/src/helpers/interchaintxs.ts index 01b3fbb8..58e18dbd 100644 --- a/src/helpers/interchaintxs.ts +++ b/src/helpers/interchaintxs.ts @@ -1,5 +1,7 @@ import { SigningNeutronClient } from './signing_neutron_client'; import { JsonObject } from '@cosmjs/cosmwasm-stargate'; +import { Link } from '@confio/relayer/build'; +import { PacketWithMetadata } from '@confio/relayer/build/lib/endpoint'; export type AcknowledgementResult = | { success: string[] } @@ -56,3 +58,18 @@ export const getAcks = ( client.queryContractSmart(contractAddress, { acknowledgement_results: {}, }); + +// relays given packet from A side, and it's acknowledgement +// note that it does not relay the timeout if it happens +export async function relayPacketFromA(link: Link, packet: PacketWithMetadata) { + await link.relayPackets('A', [packet]); + const [acksA, acksB] = await Promise.all([ + link.getPendingAcks('A'), + link.getPendingAcks('B'), + ]); + const [acksResA, acksResB] = await Promise.all([ + link.relayAcks('A', acksA), + link.relayAcks('B', acksB), + ]); + return { acksResA, acksResB }; +} diff --git a/src/helpers/local_state.ts b/src/helpers/local_state.ts index 0b142266..747dcbad 100644 --- a/src/helpers/local_state.ts +++ b/src/helpers/local_state.ts @@ -9,6 +9,7 @@ import { RunnerTestSuite } from 'vitest'; import { connectComet } from '@cosmjs/tendermint-rpc'; import { COSMOS_PREFIX, + GAIA_CONNECTION, GAIA_REST, GAIA_RPC, IBC_WEB_HOST, @@ -17,6 +18,8 @@ import { NEUTRON_RPC, } from './constants'; import { Wallet } from './wallet'; +import { IbcClient, Link } from '@confio/relayer'; +import { GasPrice } from '@cosmjs/stargate/build/fee'; // limit of wallets precreated for one test const WALLETS_PER_TEST_FILE = 20; @@ -122,6 +125,41 @@ export class LocalState { throw new Error('rpcClient() called non existent network: ' + network); } } + + // Creates a relayer between neutron and gaia + // This relayer can be used to manually relay packets + // Since hermes don't have manual relay. + async relayerLink(): Promise { + const neutronWallet = await this.nextWallet('neutron'); + const gaiaWallet = await this.nextWallet('cosmos'); + const neutronIbcClient = await IbcClient.connectWithSigner( + this.rpcNeutron, + neutronWallet.directwallet, + neutronWallet.address, + { + gasPrice: GasPrice.fromString('0.05untrn'), + estimatedBlockTime: 3, + estimatedIndexerTime: 100, + }, + ); + const gaiaIbcClient = await IbcClient.connectWithSigner( + this.rpcGaia, + gaiaWallet.directwallet, + gaiaWallet.address, + { + gasPrice: GasPrice.fromString('0.05uatom'), + estimatedBlockTime: 3, + estimatedIndexerTime: 100, + }, + ); + + return await Link.createWithExistingConnections( + neutronIbcClient, + gaiaIbcClient, + GAIA_CONNECTION, + GAIA_CONNECTION, + ); + } } export const mnemonicToWallet = async ( diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 49192d5d..1fdd08d8 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -31,30 +31,16 @@ import { cleanAckResults, getAck, getAcks, + relayPacketFromA, waitForAck, } from '../../helpers/interchaintxs'; import { execSync } from 'child_process'; -import { IbcClient, Link } from '@confio/relayer/build'; +import { Link } from '@confio/relayer/build'; import config from '../../config.json'; import { Order, State, } from '@neutron-org/neutronjs/ibc/core/channel/v1/channel'; -import { GasPrice } from '@cosmjs/stargate/build/fee'; -import { PacketWithMetadata } from '@confio/relayer/build/lib/endpoint'; - -async function relayPacket(link: Link, lastPacket: PacketWithMetadata) { - await link.relayPackets('A', [lastPacket]); - const [acksA, acksB] = await Promise.all([ - link.getPendingAcks('A'), - link.getPendingAcks('B'), - ]); - const [acksResA, acksResB] = await Promise.all([ - link.relayAcks('A', acksA), - link.relayAcks('B', acksB), - ]); - return { acksResA, acksResB }; -} describe('Neutron / Interchain TXs', () => { let testState: LocalState; @@ -71,6 +57,8 @@ describe('Neutron / Interchain TXs', () => { let neutronWallet: Wallet; let gaiaWallet: Wallet; + let link: Link; + const icaId1 = 'test1'; const icaId2 = 'test2'; const unorderedIcaId = 'test-unordered'; @@ -98,6 +86,8 @@ describe('Neutron / Interchain TXs', () => { contractManagerQuerier = new ContractManagerQuery(neutronRpcClient); const gaiaRpcClient = await testState.gaiaRpcClient(); gaiaStakingQuerier = new StakingQueryClient(gaiaRpcClient); + + link = await testState.relayerLink(); }); describe('Interchain Tx with multiple ICAs', () => { @@ -588,7 +578,7 @@ describe('Neutron / Interchain TXs', () => { }); describe('Unordered channel', () => { - test.skip('delegate with timeout does not close unordered channel', async () => { + test('delegate with timeout does not close unordered channel', async () => { await cleanAckResults(neutronClient, contractAddress); const res = await neutronClient.execute(contractAddress, { delegate: { @@ -646,34 +636,6 @@ describe('Neutron / Interchain TXs', () => { }); test('try two delegates with first one when relayer is paused, so only second delegate passed through', async () => { - const neutronIbcClient = await IbcClient.connectWithSigner( - testState.rpcNeutron, - testState.wallets.neutron.demo1.directwallet, - testState.wallets.neutron.demo1.address, - { - gasPrice: GasPrice.fromString('0.05untrn'), - estimatedBlockTime: 3, - estimatedIndexerTime: 100, - }, - ); - const gaiaIbcClient = await IbcClient.connectWithSigner( - testState.rpcGaia, - testState.wallets.cosmos.demo1.directwallet, - testState.wallets.cosmos.demo1.address, - { - gasPrice: GasPrice.fromString('0.05uatom'), - estimatedBlockTime: 3, - estimatedIndexerTime: 100, - }, - ); - - const link = await Link.createWithExistingConnections( - neutronIbcClient, - gaiaIbcClient, - connectionId, - connectionId, - ); - // We pause hermes container, so that we can use manual relaying of the packets. // That needed in order to ack ibc packets in backwards order execSync('docker pause setup-hermes-1'); @@ -717,7 +679,7 @@ describe('Neutron / Interchain TXs', () => { (p) => p.packet.sequence === BigInt(sequenceId2), ); expect(lastPacket).not.toBeNull(); - await relayPacket(link, lastPacket); + await relayPacketFromA(link, lastPacket); await waitForAck( neutronClient, contractAddress, @@ -739,7 +701,7 @@ describe('Neutron / Interchain TXs', () => { (p) => p.packet.sequence === BigInt(sequenceId1), ); expect(firstPacket).not.toBeNull(); - await relayPacket(link, firstPacket); + await relayPacketFromA(link, firstPacket); await waitForAck( neutronClient, From 3e09e86e4d1ac67eb2621c6364b4f61f0e451c17 Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 15 Aug 2024 23:53:47 +0400 Subject: [PATCH 23/40] wait longer for ICA recreation --- src/testcases/run_in_band/interchaintx.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 1fdd08d8..c5d0d339 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -747,7 +747,7 @@ describe('Neutron / Interchain TXs', () => { channels.channels.findLast( (c) => c.portId === `icacontroller-${contractAddress}.test1`, )?.state == State.STATE_OPEN, - 100, + 200, ); }); test('delegate from first ICA after ICA recreation', async () => { From eccb062a33de7f2aa138c8b7818aa512f193d89f Mon Sep 17 00:00:00 2001 From: nhpd Date: Fri, 16 Aug 2024 00:06:48 +0400 Subject: [PATCH 24/40] reorder test to avoid clashing --- .../run_in_band/interchaintx.test.ts | 295 +++++++++--------- 1 file changed, 148 insertions(+), 147 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index c5d0d339..e6d60d92 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -577,153 +577,6 @@ describe('Neutron / Interchain TXs', () => { }); }); - describe('Unordered channel', () => { - test('delegate with timeout does not close unordered channel', async () => { - await cleanAckResults(neutronClient, contractAddress); - const res = await neutronClient.execute(contractAddress, { - delegate: { - interchain_account_id: unorderedIcaId, - validator: testState.wallets.cosmos.val1.valAddress, - amount: '100', - denom: COSMOS_DENOM, - timeout: 1, - }, - }); - expect(res.code).toEqual(0); - const sequenceId = getSequenceId(res); - - // timeout handling may be slow, hence we wait for up to 100 blocks here - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId, - 100, - ); - const ackRes = await getAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId, - ); - expect(ackRes).toMatchObject({ - timeout: 'message', - }); - - const channel = (await ibcQuerier.Channels({})).channels.find( - (c) => c.ordering === Order.ORDER_UNORDERED, - ); - expect(channel.state).toEqual(State.STATE_OPEN); - }); - - test('delegate after the timeout on unordered channel should work as channel should still be open', async () => { - const res = await neutronClient.execute(contractAddress, { - delegate: { - interchain_account_id: unorderedIcaId, - validator: testState.wallets.cosmos.val1.valAddress, - amount: '100', - denom: COSMOS_DENOM, - }, - }); - expect(res.code).toBe(0); // works as channel is still open - const sequenceId = getSequenceId(res); - await getAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId, - ); - }); - - test('try two delegates with first one when relayer is paused, so only second delegate passed through', async () => { - // We pause hermes container, so that we can use manual relaying of the packets. - // That needed in order to ack ibc packets in backwards order - execSync('docker pause setup-hermes-1'); - - const res1 = await neutronClient.execute(contractAddress, { - delegate: { - interchain_account_id: unorderedIcaId, - validator: testState.wallets.cosmos.val1.valAddress, - denom: COSMOS_DENOM, - amount: '200', - }, - }); - expect(res1.code).toEqual(0); - const sequenceId1 = getSequenceId(res1); - - // this should be relayed first, even thought it has a later sequence. - const res2 = await neutronClient.execute(contractAddress, { - delegate: { - interchain_account_id: unorderedIcaId, - validator: testState.wallets.cosmos.val1.valAddress, - denom: COSMOS_DENOM, - amount: '400', - }, - }); - expect(res2.code).toEqual(0); - const sequenceId2 = getSequenceId(res2); - expect(sequenceId1).toBe(sequenceId2 - 1); - - // should be delegated 100 coins from before - const delegationsQ1 = await gaiaStakingQuerier.DelegatorDelegations({ - delegatorAddr: unorderedIcaAddress, - }); - expect(delegationsQ1.delegationResponses[0].balance.amount).toEqual( - '100', - ); - - const pendingPackets = await link.getPendingPackets('A'); - - // relay lastPacket - const lastPacket = pendingPackets.find( - (p) => p.packet.sequence === BigInt(sequenceId2), - ); - expect(lastPacket).not.toBeNull(); - await relayPacketFromA(link, lastPacket); - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId2, - 100, - ); - - // should be delegated 100 + 400 (lastPacket) coins after relaying last packet - const delegationsQ2 = await gaiaStakingQuerier.DelegatorDelegations({ - delegatorAddr: unorderedIcaAddress, - }); - expect(delegationsQ2.delegationResponses[0].balance.amount).toEqual( - '500', - ); - - // relay firstPacket - const firstPacket = pendingPackets.find( - (p) => p.packet.sequence === BigInt(sequenceId1), - ); - expect(firstPacket).not.toBeNull(); - await relayPacketFromA(link, firstPacket); - - await waitForAck( - neutronClient, - contractAddress, - unorderedIcaId, - sequenceId1, - 100, - ); - - // should be delegated 100 + 400 + 200 (lastPacket + firstPacket) coins after relaying last packet - const delegationsQ3 = await gaiaStakingQuerier.DelegatorDelegations({ - delegatorAddr: unorderedIcaAddress, - }); - expect(delegationsQ3.delegationResponses[0].balance.amount).toEqual( - '700', - ); - - // unpause hermes for tests below - execSync('docker unpause setup-hermes-1'); - }); - }); - describe('Recreation', () => { test('recreate ICA1', async () => { const res = await neutronClient.execute(contractAddress, { @@ -1153,5 +1006,153 @@ describe('Neutron / Interchain TXs', () => { ); }); }); + + + describe('Unordered channel', () => { + test('delegate with timeout does not close unordered channel', async () => { + await cleanAckResults(neutronClient, contractAddress); + const res = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + amount: '100', + denom: COSMOS_DENOM, + timeout: 1, + }, + }); + expect(res.code).toEqual(0); + const sequenceId = getSequenceId(res); + + // timeout handling may be slow, hence we wait for up to 100 blocks here + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId, + 100, + ); + const ackRes = await getAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId, + ); + expect(ackRes).toMatchObject({ + timeout: 'message', + }); + + const channel = (await ibcQuerier.Channels({})).channels.find( + (c) => c.ordering === Order.ORDER_UNORDERED, + ); + expect(channel.state).toEqual(State.STATE_OPEN); + }); + + test('delegate after the timeout on unordered channel should work as channel should still be open', async () => { + const res = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + amount: '100', + denom: COSMOS_DENOM, + }, + }); + expect(res.code).toBe(0); // works as channel is still open + const sequenceId = getSequenceId(res); + await getAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId, + ); + }); + + test('try two delegates with first one when relayer is paused, so only second delegate passed through', async () => { + // We pause hermes container, so that we can use manual relaying of the packets. + // That needed in order to ack ibc packets in backwards order + execSync('docker pause setup-hermes-1'); + + const res1 = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + denom: COSMOS_DENOM, + amount: '200', + }, + }); + expect(res1.code).toEqual(0); + const sequenceId1 = getSequenceId(res1); + + // this should be relayed first, even thought it has a later sequence. + const res2 = await neutronClient.execute(contractAddress, { + delegate: { + interchain_account_id: unorderedIcaId, + validator: testState.wallets.cosmos.val1.valAddress, + denom: COSMOS_DENOM, + amount: '400', + }, + }); + expect(res2.code).toEqual(0); + const sequenceId2 = getSequenceId(res2); + expect(sequenceId1).toBe(sequenceId2 - 1); + + // should be delegated 100 coins from before + const delegationsQ1 = await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, + }); + expect(delegationsQ1.delegationResponses[0].balance.amount).toEqual( + '100', + ); + + const pendingPackets = await link.getPendingPackets('A'); + + // relay lastPacket + const lastPacket = pendingPackets.find( + (p) => p.packet.sequence === BigInt(sequenceId2), + ); + expect(lastPacket).not.toBeNull(); + await relayPacketFromA(link, lastPacket); + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId2, + 100, + ); + + // should be delegated 100 + 400 (lastPacket) coins after relaying last packet + const delegationsQ2 = await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, + }); + expect(delegationsQ2.delegationResponses[0].balance.amount).toEqual( + '500', + ); + + // relay firstPacket + const firstPacket = pendingPackets.find( + (p) => p.packet.sequence === BigInt(sequenceId1), + ); + expect(firstPacket).not.toBeNull(); + await relayPacketFromA(link, firstPacket); + + await waitForAck( + neutronClient, + contractAddress, + unorderedIcaId, + sequenceId1, + 100, + ); + + // should be delegated 100 + 400 + 200 (lastPacket + firstPacket) coins after relaying last packet + const delegationsQ3 = await gaiaStakingQuerier.DelegatorDelegations({ + delegatorAddr: unorderedIcaAddress, + }); + expect(delegationsQ3.delegationResponses[0].balance.amount).toEqual( + '700', + ); + + // unpause hermes for tests below + execSync('docker unpause setup-hermes-1'); + }); + }); }); }); From 4fdbf2cea92a07583b55242f76c2f62fcedd3382 Mon Sep 17 00:00:00 2001 From: nhpd Date: Fri, 16 Aug 2024 00:22:05 +0400 Subject: [PATCH 25/40] cleanup --- src/helpers/local_state.ts | 4 ++-- src/testcases/run_in_band/interchaintx.test.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/helpers/local_state.ts b/src/helpers/local_state.ts index 747dcbad..ef76e61d 100644 --- a/src/helpers/local_state.ts +++ b/src/helpers/local_state.ts @@ -126,9 +126,9 @@ export class LocalState { } } - // Creates a relayer between neutron and gaia + // Creates an IBC relayer between neutron and gaia // This relayer can be used to manually relay packets - // Since hermes don't have manual relay. + // since hermes don't have manual relay. async relayerLink(): Promise { const neutronWallet = await this.nextWallet('neutron'); const gaiaWallet = await this.nextWallet('cosmos'); diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index e6d60d92..010d6925 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -1150,7 +1150,7 @@ describe('Neutron / Interchain TXs', () => { '700', ); - // unpause hermes for tests below + // unpause hermes back execSync('docker unpause setup-hermes-1'); }); }); From c4c485649861abe0f3f3c903bc6cf9b55e9a5d7d Mon Sep 17 00:00:00 2001 From: nhpd Date: Thu, 22 Aug 2024 18:16:52 +0400 Subject: [PATCH 26/40] cleanup --- src/testcases/run_in_band/tokenfactory.test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/testcases/run_in_band/tokenfactory.test.ts b/src/testcases/run_in_band/tokenfactory.test.ts index c4750e5b..2b84f329 100644 --- a/src/testcases/run_in_band/tokenfactory.test.ts +++ b/src/testcases/run_in_band/tokenfactory.test.ts @@ -445,8 +445,6 @@ describe('Neutron / Tokenfactory', () => { ); expect(burnRes.code).toBe(0); - // TODO: test burn from different address? - const balanceAfter = parseInt( (await neutronClient.getBalance(neutronWallet.address, newTokenDenom)) .amount, From ffd2cc6ca007f7166b437634945e89c83e4c6e11 Mon Sep 17 00:00:00 2001 From: nhpd Date: Mon, 26 Aug 2024 20:44:12 +0400 Subject: [PATCH 27/40] add consensus parameters test --- package.json | 2 +- src/testcases/run_in_band/parameters.test.ts | 53 +++ yarn.lock | 463 +++++++++---------- 3 files changed, 285 insertions(+), 233 deletions(-) diff --git a/package.json b/package.json index d5898c53..c92dafa5 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", "@neutron-org/neutronjs": "4.2.0", - "@neutron-org/neutronjsplus": "0.5.0", + "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#88b4e5391a8b80c90a7c7e25b8f6948b7cdd2e7c", "@types/lodash": "^4.14.182", "axios": "1.6.0", "commander": "^10.0.0", diff --git a/src/testcases/run_in_band/parameters.test.ts b/src/testcases/run_in_band/parameters.test.ts index ea73330a..9d48481f 100644 --- a/src/testcases/run_in_band/parameters.test.ts +++ b/src/testcases/run_in_band/parameters.test.ts @@ -21,6 +21,7 @@ import { QueryParamsResponse } from '@neutron-org/neutronjs/neutron/interchainqu import { createRPCQueryClient as createNeutronClient } from '@neutron-org/neutronjs/neutron/rpc.query'; import { createRPCQueryClient as createIbcClient } from '@neutron-org/neutronjs/ibc/rpc.query'; import { createRPCQueryClient as createOsmosisClient } from '@neutron-org/neutronjs/osmosis/rpc.query'; +import { QueryClientImpl as ConsensusClient } from '@neutron-org/neutronjs/cosmos/consensus/v1/query.rpc.Query'; import { IbcQuerier, NeutronQuerier, @@ -46,6 +47,7 @@ describe('Neutron / Parameters', () => { let neutronQuerier: NeutronQuerier; let ibcQuerier: IbcQuerier; let osmosisQuerier: OsmosisQuerier; + let consensusQuerier: ConsensusClient; beforeAll(async () => { testState = await LocalState.create(config, inject('mnemonics')); @@ -72,6 +74,8 @@ describe('Neutron / Parameters', () => { rpcEndpoint: testState.rpcNeutron, }); + consensusQuerier = new ConsensusClient(await testState.neutronRpcClient()); + const admins = await neutronQuerier.cosmos.adminmodule.adminmodule.admins(); chainManagerAddress = admins.admins[0]; @@ -490,4 +494,53 @@ describe('Neutron / Parameters', () => { }); }); }); + + describe('Consensus params proposal', () => { + let proposalId: number; + test('create proposal', async () => { + proposalId = await daoMember1.submitUpdateParamsConsensusProposal( + chainManagerAddress, + 'Proposal #9', + 'Update consensus params', + { + abci: { + vote_extensions_enable_height: 1, + }, + evidence: { + max_age_duration: '1000h', + max_age_num_blocks: 100000, + max_bytes: 1048576, + }, + validator: { + pub_key_types: ['ed25519'], + }, + block: { + max_gas: 30_000_000, + max_bytes: 14_857_600, + }, + }, + '1000', + ); + }); + + describe('vote for proposal', () => { + test('vote YES', async () => { + await daoMember1.voteYes(proposalId); + }); + }); + + describe('execute proposal', () => { + test('check if proposal is passed', async () => { + await dao.checkPassedProposal(proposalId); + }); + test('execute passed proposal', async () => { + await daoMember1.executeProposalWithAttempts(proposalId); + }); + test('check if params changed after proposal execution', async () => { + const paramsRes = await consensusQuerier.params(); + expect(paramsRes.params.block.maxGas).toEqual(30_000_000n); + expect(paramsRes.params.block.maxBytes).toEqual(14_857_600n); + }); + }); + }); }); diff --git a/yarn.lock b/yarn.lock index 862ec492..d2bbd6d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,17 +18,17 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" - integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2", "@babel/compat-data@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== -"@babel/generator@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" - integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== +"@babel/generator@^7.25.4": + version "7.25.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.5.tgz#b31cf05b3fe8c32d206b6dad03bb0aacbde73450" + integrity sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w== dependencies: - "@babel/types" "^7.25.0" + "@babel/types" "^7.25.4" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -59,20 +59,20 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" - integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== +"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0", "@babel/helper-create-class-features-plugin@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14" + integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== dependencies: "@babel/helper-annotate-as-pure" "^7.24.7" "@babel/helper-member-expression-to-functions" "^7.24.8" "@babel/helper-optimise-call-expression" "^7.24.7" "@babel/helper-replace-supers" "^7.25.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/traverse" "^7.25.0" + "@babel/traverse" "^7.25.4" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0", "@babel/helper-create-regexp-features-plugin@^7.25.2": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== @@ -198,12 +198,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.25.0", "@babel/parser@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" - integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.4.tgz#af4f2df7d02440286b7de57b1c21acfb2a6f257a" + integrity sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA== dependencies: - "@babel/types" "^7.25.2" + "@babel/types" "^7.25.4" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": version "7.25.3" @@ -376,11 +376,11 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" - integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz#04db9ce5a9043d9c635e75ae7969a2cd50ca97ff" + integrity sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -397,15 +397,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" - integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== +"@babel/plugin-transform-async-generator-functions@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz#2afd4e639e2d055776c9f091b6c0c180ed8cf083" + integrity sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg== dependencies: "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-remap-async-to-generator" "^7.25.0" "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/traverse" "^7.25.0" + "@babel/traverse" "^7.25.4" "@babel/plugin-transform-async-to-generator@^7.24.7": version "7.24.7" @@ -430,13 +430,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-class-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" - integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== +"@babel/plugin-transform-class-properties@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz#bae7dbfcdcc2e8667355cd1fb5eda298f05189fd" + integrity sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.4" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-transform-class-static-block@^7.24.7": version "7.24.7" @@ -447,16 +447,16 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" - integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== +"@babel/plugin-transform-classes@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz#d29dbb6a72d79f359952ad0b66d88518d65ef89a" + integrity sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg== dependencies: "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-compilation-targets" "^7.25.2" "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-replace-supers" "^7.25.0" - "@babel/traverse" "^7.25.0" + "@babel/traverse" "^7.25.4" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.24.7": @@ -676,13 +676,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" - integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== +"@babel/plugin-transform-private-methods@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz#9bbefbe3649f470d681997e0b64a4b254d877242" + integrity sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.4" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-transform-private-property-in-object@^7.24.7": version "7.24.7" @@ -786,20 +786,20 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" - integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== +"@babel/plugin-transform-unicode-sets-regex@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz#be664c2a0697ffacd3423595d5edef6049e8946c" + integrity sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/preset-env@^7.20.2": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" - integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.4.tgz#be23043d43a34a2721cd0f676c7ba6f1481f6af6" + integrity sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw== dependencies: - "@babel/compat-data" "^7.25.2" + "@babel/compat-data" "^7.25.4" "@babel/helper-compilation-targets" "^7.25.2" "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-validator-option" "^7.24.8" @@ -828,13 +828,13 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.0" + "@babel/plugin-transform-async-generator-functions" "^7.25.4" "@babel/plugin-transform-async-to-generator" "^7.24.7" "@babel/plugin-transform-block-scoped-functions" "^7.24.7" "@babel/plugin-transform-block-scoping" "^7.25.0" - "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.25.4" "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.25.0" + "@babel/plugin-transform-classes" "^7.25.4" "@babel/plugin-transform-computed-properties" "^7.24.7" "@babel/plugin-transform-destructuring" "^7.24.8" "@babel/plugin-transform-dotall-regex" "^7.24.7" @@ -862,7 +862,7 @@ "@babel/plugin-transform-optional-catch-binding" "^7.24.7" "@babel/plugin-transform-optional-chaining" "^7.24.8" "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.25.4" "@babel/plugin-transform-private-property-in-object" "^7.24.7" "@babel/plugin-transform-property-literals" "^7.24.7" "@babel/plugin-transform-regenerator" "^7.24.7" @@ -875,10 +875,10 @@ "@babel/plugin-transform-unicode-escapes" "^7.24.7" "@babel/plugin-transform-unicode-property-regex" "^7.24.7" "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.4" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" core-js-compat "^3.37.1" semver "^6.3.1" @@ -909,9 +909,9 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.21.0", "@babel/runtime@^7.8.4": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" - integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.4.tgz#6ef37d678428306e7d75f054d5b1bdb8cf8aa8ee" + integrity sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w== dependencies: regenerator-runtime "^0.14.0" @@ -924,23 +924,23 @@ "@babel/parser" "^7.25.0" "@babel/types" "^7.25.0" -"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" - integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.4.tgz#648678046990f2957407e3086e97044f13c3e18e" + integrity sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg== dependencies: "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/parser" "^7.25.3" + "@babel/generator" "^7.25.4" + "@babel/parser" "^7.25.4" "@babel/template" "^7.25.0" - "@babel/types" "^7.25.2" + "@babel/types" "^7.25.4" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" - integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== +"@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.4", "@babel/types@^7.4.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.4.tgz#6bcb46c72fdf1012a209d016c07f769e10adcb5f" + integrity sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ== dependencies: "@babel/helper-string-parser" "^7.24.8" "@babel/helper-validator-identifier" "^7.24.7" @@ -1312,10 +1312,9 @@ resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-4.2.0.tgz#7d98d4bc1568f22c015736d6fbe768ddfba14798" integrity sha512-l3ILkT8H6bO522RoNb37NMQkqlp8qvKNm7v6QlzORtClqbM7VbRv2/INgy8wn8USV5AmcnCdl9M4KfvvGw5k9w== -"@neutron-org/neutronjsplus@0.5.0": +"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#88b4e5391a8b80c90a7c7e25b8f6948b7cdd2e7c": version "0.5.0" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjsplus/-/neutronjsplus-0.5.0.tgz#d68afb8142ee0bd2d3eee21916901507503360a3" - integrity sha512-dzWL9hTVorMskWzW/ZEUK3Cruw0AkOlC8fk6pFIyli4XkNooJKL/H7V8PSxiwIyx3k+EpIZ0I5FpzCL9EitNMg== + resolved "https://github.com/neutron-org/neutronjsplus.git#88b4e5391a8b80c90a7c7e25b8f6948b7cdd2e7c" dependencies: "@cosmjs/cosmwasm-stargate" "^0.32.4" "@cosmjs/proto-signing" "^0.32.4" @@ -1417,85 +1416,85 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@rollup/rollup-android-arm-eabi@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz#c3f5660f67030c493a981ac1d34ee9dfe1d8ec0f" - integrity sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA== - -"@rollup/rollup-android-arm64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz#64161f0b67050023a3859e723570af54a82cff5c" - integrity sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ== - -"@rollup/rollup-darwin-arm64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz#25f3d57b1da433097cfebc89341b355901615763" - integrity sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q== - -"@rollup/rollup-darwin-x64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz#d8ddaffb636cc2f59222c50316e27771e48966df" - integrity sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz#41bd4fcffa20fb84f3dbac6c5071638f46151885" - integrity sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA== - -"@rollup/rollup-linux-arm-musleabihf@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz#842077c5113a747eb5686f19f2f18c33ecc0acc8" - integrity sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw== - -"@rollup/rollup-linux-arm64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz#65d1d5b6778848f55b7823958044bf3e8737e5b7" - integrity sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ== - -"@rollup/rollup-linux-arm64-musl@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz#50eef7d6e24d0fe3332200bb666cad2be8afcf86" - integrity sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q== - -"@rollup/rollup-linux-powerpc64le-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz#8837e858f53c84607f05ad0602943e96d104c6b4" - integrity sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw== - -"@rollup/rollup-linux-riscv64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz#c894ade2300caa447757ddf45787cca246e816a4" - integrity sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA== - -"@rollup/rollup-linux-s390x-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz#5841e5390d4c82dd5cdf7b2c95a830e3c2f47dd3" - integrity sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg== - -"@rollup/rollup-linux-x64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz#cc1f26398bf777807a99226dc13f47eb0f6c720d" - integrity sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew== - -"@rollup/rollup-linux-x64-musl@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz#1507465d9056e0502a590d4c1a00b4d7b1fda370" - integrity sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg== - -"@rollup/rollup-win32-arm64-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz#86a221f01a2c248104dd0defb4da119f2a73642e" - integrity sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA== - -"@rollup/rollup-win32-ia32-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz#8bc8f77e02760aa664694b4286d6fbea7f1331c5" - integrity sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A== - -"@rollup/rollup-win32-x64-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz#601fffee719a1e8447f908aca97864eec23b2784" - integrity sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg== +"@rollup/rollup-android-arm-eabi@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz#c3a7938551273a2b72820cf5d22e54cf41dc206e" + integrity sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg== + +"@rollup/rollup-android-arm64@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz#fa3693e4674027702c42fcbbb86bbd0c635fd3b9" + integrity sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g== + +"@rollup/rollup-darwin-arm64@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz#e19922f4ac1e4552a230ff8f49d5688c5c07d284" + integrity sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA== + +"@rollup/rollup-darwin-x64@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz#897f8d47b115ea84692a29cf2366899499d4d915" + integrity sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg== + +"@rollup/rollup-linux-arm-gnueabihf@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz#7d1e2a542f3a5744f5c24320067bd5af99ec9d62" + integrity sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ== + +"@rollup/rollup-linux-arm-musleabihf@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz#88bec1c9df85fc5e24d49f783e19934717dd69b5" + integrity sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew== + +"@rollup/rollup-linux-arm64-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz#6dc60f0fe7bd49ed07a2d4d9eab15e671b3bd59d" + integrity sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow== + +"@rollup/rollup-linux-arm64-musl@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz#a03b78775c129e8333aca9e1e420e8e217ee99b9" + integrity sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz#ee3810647faf2c105a5a4e71260bb90b96bf87bc" + integrity sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ== + +"@rollup/rollup-linux-riscv64-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz#385d76a088c27db8054d9f3f28d64d89294f838e" + integrity sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg== + +"@rollup/rollup-linux-s390x-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz#daa2b62a6e6f737ebef6700a12a93c9764e18583" + integrity sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA== + +"@rollup/rollup-linux-x64-gnu@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz#790ae96118cc892464e9f10da358c0c8a6b9acdd" + integrity sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w== + +"@rollup/rollup-linux-x64-musl@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz#d613147f7ac15fafe2a0b6249e8484e161ca2847" + integrity sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA== + +"@rollup/rollup-win32-arm64-msvc@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz#18349db8250559a5460d59eb3575f9781be4ab98" + integrity sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g== + +"@rollup/rollup-win32-ia32-msvc@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz#199648b68271f7ab9d023f5c077725d51d12d466" + integrity sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw== + +"@rollup/rollup-win32-x64-msvc@4.21.1": + version "4.21.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz#4d3ec02dbf280c20bfeac7e50cd5669b66f9108f" + integrity sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg== "@scure/base@~1.1.6": version "1.1.7" @@ -1590,11 +1589,11 @@ integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/node@*", "@types/node@>=13.7.0": - version "22.2.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.2.0.tgz#7cf046a99f0ba4d628ad3088cb21f790df9b0c5b" - integrity sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ== + version "22.5.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.0.tgz#10f01fe9465166b4cab72e75f60d8b99d019f958" + integrity sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg== dependencies: - undici-types "~6.13.0" + undici-types "~6.19.2" "@types/qs@*": version "6.9.15" @@ -1910,9 +1909,9 @@ axios@1.6.0: proxy-from-env "^1.1.0" axios@^1.6.0: - version "1.7.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.3.tgz#a1125f2faf702bc8e8f2104ec3a76fab40257d85" - integrity sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw== + version "1.7.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.5.tgz#21eed340eb5daf47d29b6e002424b3e88c8c54b1" + integrity sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -1927,7 +1926,7 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.4: +babel-plugin-polyfill-corejs3@^0.10.6: version "0.10.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== @@ -2074,9 +2073,9 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001646: - version "1.0.30001651" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" - integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== + version "1.0.30001653" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56" + integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw== chai@^5.1.1: version "5.1.1" @@ -2218,16 +2217,16 @@ cookie@0.6.0: integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== core-js-compat@^3.37.1, core-js-compat@^3.38.0: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" - integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== + version "3.38.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" + integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== dependencies: browserslist "^4.23.3" core-js@^3.23.5: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.0.tgz#8acb7c050bf2ccbb35f938c0d040132f6110f636" - integrity sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug== + version "3.38.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.1.tgz#aa375b79a286a670388a1a363363d53677c0383e" + integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw== cosmjs-types@^0.9.0: version "0.9.0" @@ -2352,14 +2351,14 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.4: - version "1.5.6" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz#c81d9938b5a877314ad370feb73b4e5409b36abd" - integrity sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw== + version "1.5.13" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" + integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== elliptic@^6.5.4: - version "6.5.6" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.6.tgz#ee5f7c3a00b98a2144ac84d67d01f04d438fa53e" - integrity sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ== + version "6.5.7" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" + integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -3017,9 +3016,9 @@ ipaddr.js@1.9.1: integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-core-module@^2.13.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" - integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== dependencies: hasown "^2.0.2" @@ -3163,17 +3162,17 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -libsodium-sumo@^0.7.14: - version "0.7.14" - resolved "https://registry.yarnpkg.com/libsodium-sumo/-/libsodium-sumo-0.7.14.tgz#9a53e09944f092f603a1e1d4446414de0b3fb0fc" - integrity sha512-2nDge6qlAjcwyslAhWfVumlkeSNK5+WCfKa2/VEq9prvlT5vP2FR0m0o5hmKaYqfsZ4TQVj5czQsimZvXDB1CQ== +libsodium-sumo@^0.7.15: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz#91c1d863fe3fbce6d6b9db1aadaa622733a1d007" + integrity sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw== libsodium-wrappers-sumo@^0.7.11: - version "0.7.14" - resolved "https://registry.yarnpkg.com/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.14.tgz#86301f14b37a77d847eb0396f2b83cdb1c47c480" - integrity sha512-0lm7ZwN5a95J2yUi8R1rgQeeaVDIWnvNzgVmXmZswis4mC+bQtbDrB+QpJlL4qklaKx3hVpJjoc6ubzJFiv64Q== + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz#0ef2a99b4b17e8385aa7e6850593660dbaf5fb40" + integrity sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA== dependencies: - libsodium-sumo "^0.7.14" + libsodium-sumo "^0.7.15" lilconfig@2.0.5: version "2.0.5" @@ -3324,9 +3323,9 @@ micro-ftch@^0.3.1: integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" @@ -3607,7 +3606,7 @@ pidtree@^0.5.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== -postcss@^8.4.40: +postcss@^8.4.41: version "8.4.41" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== @@ -3810,29 +3809,29 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@^4.13.0: - version "4.20.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.20.0.tgz#f9d602161d29e178f0bf1d9f35f0a26f83939492" - integrity sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw== +rollup@^4.20.0: + version "4.21.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.1.tgz#65b9b9e9de9a64604fab083fb127f3e9eac2935d" + integrity sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.20.0" - "@rollup/rollup-android-arm64" "4.20.0" - "@rollup/rollup-darwin-arm64" "4.20.0" - "@rollup/rollup-darwin-x64" "4.20.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.20.0" - "@rollup/rollup-linux-arm-musleabihf" "4.20.0" - "@rollup/rollup-linux-arm64-gnu" "4.20.0" - "@rollup/rollup-linux-arm64-musl" "4.20.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.20.0" - "@rollup/rollup-linux-riscv64-gnu" "4.20.0" - "@rollup/rollup-linux-s390x-gnu" "4.20.0" - "@rollup/rollup-linux-x64-gnu" "4.20.0" - "@rollup/rollup-linux-x64-musl" "4.20.0" - "@rollup/rollup-win32-arm64-msvc" "4.20.0" - "@rollup/rollup-win32-ia32-msvc" "4.20.0" - "@rollup/rollup-win32-x64-msvc" "4.20.0" + "@rollup/rollup-android-arm-eabi" "4.21.1" + "@rollup/rollup-android-arm64" "4.21.1" + "@rollup/rollup-darwin-arm64" "4.21.1" + "@rollup/rollup-darwin-x64" "4.21.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.21.1" + "@rollup/rollup-linux-arm-musleabihf" "4.21.1" + "@rollup/rollup-linux-arm64-gnu" "4.21.1" + "@rollup/rollup-linux-arm64-musl" "4.21.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.21.1" + "@rollup/rollup-linux-riscv64-gnu" "4.21.1" + "@rollup/rollup-linux-s390x-gnu" "4.21.1" + "@rollup/rollup-linux-x64-gnu" "4.21.1" + "@rollup/rollup-linux-x64-musl" "4.21.1" + "@rollup/rollup-win32-arm64-msvc" "4.21.1" + "@rollup/rollup-win32-ia32-msvc" "4.21.1" + "@rollup/rollup-win32-x64-msvc" "4.21.1" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -4139,9 +4138,9 @@ tinybench@^2.8.0: integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== tinypool@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.0.tgz#a68965218e04f4ad9de037d2a1cd63cda9afb238" - integrity sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe" + integrity sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA== tinyrainbow@^1.2.0: version "1.2.0" @@ -4198,9 +4197,9 @@ tslib@^1.8.0, tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== tslint@^5.20.1: version "5.20.1" @@ -4265,10 +4264,10 @@ typescript@^5.1.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== -undici-types@~6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" - integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -4340,13 +4339,13 @@ vite-node@2.0.5: vite "^5.0.0" vite@^5.0.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.0.tgz#11dca8a961369ba8b5cae42d068c7ad684d5370f" - integrity sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg== + version "5.4.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.2.tgz#8acb6ec4bfab823cdfc1cb2d6c53ed311bc4e47e" + integrity sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA== dependencies: esbuild "^0.21.3" - postcss "^8.4.40" - rollup "^4.13.0" + postcss "^8.4.41" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" From e720c9f0c61ebd37f2978e3be05de6983ecaa0eb Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 27 Aug 2024 11:11:28 -0300 Subject: [PATCH 28/40] upd njs --- package.json | 2 +- src/testcases/run_in_band/interchaintx.test.ts | 1 + yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a0123f93..19d74a65 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "0.1.0-rc6", + "@neutron-org/neutronjs": "0.1.0-rc7", "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 1b040c40..7b92c6c3 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -21,6 +21,7 @@ import { } from '@neutron-org/neutronjs/ibc/core/channel/v1/query.rpc.Query'; import { QueryFailuresResponse, + QueryFailureResponse, } from '@neutron-org/neutronjs/neutron/contractmanager/query'; import { getWithAttempts } from '../../helpers/misc'; import { diff --git a/yarn.lock b/yarn.lock index 1080bac5..a621bffc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,10 +1307,10 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@0.1.0-rc6": - version "0.1.0-rc6" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc6.tgz#7196f37836a01566074ede0e04a61ce50fa89453" - integrity sha512-cqqhdxWsvnj9cn1I3Y7Mc+GqcdJvah3nvXVuWw0Ec1xUXTtoo7pC2fen1OWZ6QPKipnmH7Vd0wZegnCSUncWZw== +"@neutron-org/neutronjs@0.1.0-rc7": + version "0.1.0-rc7" + resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc7.tgz#7ff19073d495c07f9cd665190bc2fa18a5f132fa" + integrity sha512-7Uqhel68nq/dfTK0MKfc/yDj1gnp4RG/GqT7ljTs/6SaugNf35+niY2rYJXMcQM5EZ5AB0TEQT7bG6RSOZH/lA== "@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b": version "0.4.0-rc21" From 04f18482aa3675dbcea7f7af4f57c20d430913ec Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 27 Aug 2024 11:15:50 -0300 Subject: [PATCH 29/40] resolve conflicts --- yarn.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a621bffc..0e193400 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1312,9 +1312,10 @@ resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc7.tgz#7ff19073d495c07f9cd665190bc2fa18a5f132fa" integrity sha512-7Uqhel68nq/dfTK0MKfc/yDj1gnp4RG/GqT7ljTs/6SaugNf35+niY2rYJXMcQM5EZ5AB0TEQT7bG6RSOZH/lA== -"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b": - version "0.4.0-rc21" - resolved "https://github.com/neutron-org/neutronjsplus.git#6c4fb9db879d7cf29074ddc9fafc0d06f77acb7b" +"@neutron-org/neutronjsplus@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@neutron-org/neutronjsplus/-/neutronjsplus-0.5.0.tgz#d68afb8142ee0bd2d3eee21916901507503360a3" + integrity sha512-dzWL9hTVorMskWzW/ZEUK3Cruw0AkOlC8fk6pFIyli4XkNooJKL/H7V8PSxiwIyx3k+EpIZ0I5FpzCL9EitNMg== dependencies: "@cosmjs/cosmwasm-stargate" "^0.32.4" "@cosmjs/proto-signing" "^0.32.4" From 90e0407ac6c803dab2e5b1cd9aa2f445a9e5b095 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 27 Aug 2024 11:18:40 -0300 Subject: [PATCH 30/40] rm unused import --- src/testcases/run_in_band/interchaintx.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 7b92c6c3..1b040c40 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -21,7 +21,6 @@ import { } from '@neutron-org/neutronjs/ibc/core/channel/v1/query.rpc.Query'; import { QueryFailuresResponse, - QueryFailureResponse, } from '@neutron-org/neutronjs/neutron/contractmanager/query'; import { getWithAttempts } from '../../helpers/misc'; import { From eba6fe964e979afb6d707d05b19260fd053e64a9 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 27 Aug 2024 16:07:02 -0300 Subject: [PATCH 31/40] upd njs --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0974d3ef..2f50417d 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "0.1.0-rc7", + "@neutron-org/neutronjs": "0.1.0-rc8", "@neutron-org/neutronjsplus": "0.5.0", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/yarn.lock b/yarn.lock index 0e193400..eb09a212 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,10 +1307,10 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@0.1.0-rc7": - version "0.1.0-rc7" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc7.tgz#7ff19073d495c07f9cd665190bc2fa18a5f132fa" - integrity sha512-7Uqhel68nq/dfTK0MKfc/yDj1gnp4RG/GqT7ljTs/6SaugNf35+niY2rYJXMcQM5EZ5AB0TEQT7bG6RSOZH/lA== +"@neutron-org/neutronjs@0.1.0-rc8": + version "0.1.0-rc8" + resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc8.tgz#5d38ce8c737b5fcb24c57ca015f9e628eff25b58" + integrity sha512-tBT/XWY7/uFUivADrPKuohoyCEvspqhgbTCIOcvn6DGw8UmZU+kwRcOtxZ7Hr4zb0k2cI81vOFiJRTrcgnSr2g== "@neutron-org/neutronjsplus@0.5.0": version "0.5.0" From 0c137c219ed8e587fd7a511a2bc476b6de30fd90 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 30 Aug 2024 12:26:03 +0300 Subject: [PATCH 32/40] install neutronjs by commit --- package.json | 6 ++++-- yarn.lock | 5 ++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d5f1ef2f..f4a09460 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,9 @@ "test:feemarket": "NO_WAIT_CHANNEL1=1 NO_WAIT_HTTP2=1 NO_WAIT_CHANNEL2=1 NO_WAIT_DELAY=1 vitest --run src/testcases/run_in_band/feemarket --bail 1", "lint": "eslint ./src", "fmt": "eslint ./src --fix", - "postinstall": "[ -d './node_modules/@neutron-org/neutronjsplus/dist' ] || tsc -p ./node_modules/@neutron-org/neutronjsplus/tsconfig.json" + "build:neutronjsplus": "[ -d './node_modules/@neutron-org/neutronjsplus/dist' ] || tsc -p ./node_modules/@neutron-org/neutronjsplus/tsconfig.json", + "build:neutronjs": "[ -d './node_modules/@neutron-org/neutronjs/dist' ] || tsc -p ./node_modules/@neutron-org/neutronjs/tsconfig.json", + "postinstall": "yarn build:neutronjs && yarn build:neutronjsplus" }, "author": "Neutron", "license": "Apache-2.0", @@ -41,7 +43,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "0.1.0-rc5", + "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#f5334307decfa549283d03e626cd45582667c13f", "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/yarn.lock b/yarn.lock index 4c3b4956..949a00dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,10 +1307,9 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@0.1.0-rc5": +"@neutron-org/neutronjs@https://github.com/neutron-org/neutronjs.git#f5334307decfa549283d03e626cd45582667c13f": version "0.1.0-rc5" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc5.tgz#ebdafe6951ad4b1c752b102e444dbe9dee8a0de9" - integrity sha512-9VGdDNMICs6oljsA96CloCz8/5ocnSTZyNpxkpC/AnZxl1QxukQp5+WatLAK0c5a0814RPOJ5+0L2mPvcINHDQ== + resolved "https://github.com/neutron-org/neutronjs.git#f5334307decfa549283d03e626cd45582667c13f" "@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d": version "0.4.0-rc21" From e740eaf4ceca7cd8bcc6f42352b81230d4168236 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 30 Aug 2024 12:34:59 +0300 Subject: [PATCH 33/40] updated neutronjsplus --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f4a09460..cc5317c5 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#f5334307decfa549283d03e626cd45582667c13f", - "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d", + "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54", "@types/lodash": "^4.14.182", "axios": "1.6.0", "commander": "^10.0.0", diff --git a/yarn.lock b/yarn.lock index 949a00dc..72ba7fd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1311,9 +1311,9 @@ version "0.1.0-rc5" resolved "https://github.com/neutron-org/neutronjs.git#f5334307decfa549283d03e626cd45582667c13f" -"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d": - version "0.4.0-rc21" - resolved "https://github.com/neutron-org/neutronjsplus.git#cf53a61bd7d4aa1e9204c41b2c2ea36cb024ae7d" +"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54": + version "0.5.0" + resolved "https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54" dependencies: "@cosmjs/cosmwasm-stargate" "^0.32.4" "@cosmjs/proto-signing" "^0.32.4" From c7f65c326f96aff5fb773f93132531511d25f0a1 Mon Sep 17 00:00:00 2001 From: swelf Date: Fri, 30 Aug 2024 12:53:24 +0300 Subject: [PATCH 34/40] install neutronjs by commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cc5317c5..0d181db1 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "lint": "eslint ./src", "fmt": "eslint ./src --fix", "build:neutronjsplus": "[ -d './node_modules/@neutron-org/neutronjsplus/dist' ] || tsc -p ./node_modules/@neutron-org/neutronjsplus/tsconfig.json", - "build:neutronjs": "[ -d './node_modules/@neutron-org/neutronjs/dist' ] || tsc -p ./node_modules/@neutron-org/neutronjs/tsconfig.json", + "build:neutronjs": "[ -d './node_modules/@neutron-org/neutronjs/dist' ] || { tsc -p ./node_modules/@neutron-org/neutronjs/tsconfig.json && cp -R ./node_modules/@neutron-org/neutronjs/build/* ./node_modules/@neutron-org/neutronjs/ ; }", "postinstall": "yarn build:neutronjs && yarn build:neutronjsplus" }, "author": "Neutron", From f45f76bb3bd0743100115ed5638c5adb5ef09597 Mon Sep 17 00:00:00 2001 From: nhpd Date: Mon, 2 Sep 2024 14:26:11 +0400 Subject: [PATCH 35/40] fix lint --- src/testcases/run_in_band/interchaintx.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 010d6925..392efe82 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -1007,7 +1007,6 @@ describe('Neutron / Interchain TXs', () => { }); }); - describe('Unordered channel', () => { test('delegate with timeout does not close unordered channel', async () => { await cleanAckResults(neutronClient, contractAddress); From ac1695c27b51ea31c5b39345f707d324004750ee Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Mon, 2 Sep 2024 09:19:13 -0300 Subject: [PATCH 36/40] switch njs to commit usage --- package.json | 2 +- yarn.lock | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 6752b8cf..4748de63 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "0.1.0-rc8", + "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#8a5c86d41ccba794a4a978d3b493b0c0503495f2", "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/yarn.lock b/yarn.lock index eb09a212..7018caef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,15 +1307,13 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@0.1.0-rc8": - version "0.1.0-rc8" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjs/-/neutronjs-0.1.0-rc8.tgz#5d38ce8c737b5fcb24c57ca015f9e628eff25b58" - integrity sha512-tBT/XWY7/uFUivADrPKuohoyCEvspqhgbTCIOcvn6DGw8UmZU+kwRcOtxZ7Hr4zb0k2cI81vOFiJRTrcgnSr2g== +"@neutron-org/neutronjs@https://github.com/neutron-org/neutronjs.git#8a5c86d41ccba794a4a978d3b493b0c0503495f2": + version "4.2.0" + resolved "https://github.com/neutron-org/neutronjs.git#8a5c86d41ccba794a4a978d3b493b0c0503495f2" -"@neutron-org/neutronjsplus@0.5.0": +"@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54": version "0.5.0" - resolved "https://registry.yarnpkg.com/@neutron-org/neutronjsplus/-/neutronjsplus-0.5.0.tgz#d68afb8142ee0bd2d3eee21916901507503360a3" - integrity sha512-dzWL9hTVorMskWzW/ZEUK3Cruw0AkOlC8fk6pFIyli4XkNooJKL/H7V8PSxiwIyx3k+EpIZ0I5FpzCL9EitNMg== + resolved "https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54" dependencies: "@cosmjs/cosmwasm-stargate" "^0.32.4" "@cosmjs/proto-signing" "^0.32.4" From 7282b1f1bc4f9d8068ba38c59484d125effdbe6b Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Mon, 2 Sep 2024 10:13:13 -0300 Subject: [PATCH 37/40] merge main everywhere --- package.json | 2 +- yarn.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 4748de63..41c159c4 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@cosmjs/cosmwasm-stargate": "^0.32.4", "@cosmjs/stargate": "0.32.4", "@cosmjs/tendermint-rpc": "^0.32.4", - "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#8a5c86d41ccba794a4a978d3b493b0c0503495f2", + "@neutron-org/neutronjs": "https://github.com/neutron-org/neutronjs.git#1e70c1f68e997857f42bab7647227c8ca9dc8aa1", "@neutron-org/neutronjsplus": "https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54", "@types/lodash": "^4.14.182", "axios": "1.6.0", diff --git a/yarn.lock b/yarn.lock index 7018caef..53f83c9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,9 +1307,9 @@ resolved "https://registry.yarnpkg.com/@neutron-org/cosmjs-types/-/cosmjs-types-0.9.2-rc1.tgz#ca1fc1dc9566858dbd765e8f82c8a70097bcc84b" integrity sha512-ju2AqJ14yO4+JF8RwY4ZVy7f2HVjhdf66SfhS6y4ucBZm997/E/yYVMnpWmUncVg8ARooISOKaOYNagqz0am6Q== -"@neutron-org/neutronjs@https://github.com/neutron-org/neutronjs.git#8a5c86d41ccba794a4a978d3b493b0c0503495f2": +"@neutron-org/neutronjs@https://github.com/neutron-org/neutronjs.git#1e70c1f68e997857f42bab7647227c8ca9dc8aa1": version "4.2.0" - resolved "https://github.com/neutron-org/neutronjs.git#8a5c86d41ccba794a4a978d3b493b0c0503495f2" + resolved "https://github.com/neutron-org/neutronjs.git#1e70c1f68e997857f42bab7647227c8ca9dc8aa1" "@neutron-org/neutronjsplus@https://github.com/neutron-org/neutronjsplus.git#1e4527ef6971f4dc2c202cb3cc2a50b0a4491f54": version "0.5.0" From 18aef19bbd2eb5513ca21c01cea53ed44e68c9e7 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 3 Sep 2024 12:52:18 -0300 Subject: [PATCH 38/40] lint --- src/testcases/run_in_band/interchaintx.test.ts | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index 92ba79dd..ec3b24da 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -16,19 +16,11 @@ import { QueryClientImpl as StakingQueryClient, QueryDelegatorDelegationsResponse, } from '@neutron-org/cosmjs-types/cosmos/staking/v1beta1/query'; -import { - QueryChannelsResponse, -} from '@neutron-org/neutronjs/ibc/core/channel/v1/query'; -import { - QueryClientImpl as IbcQueryClient -} from '@neutron-org/neutronjs/ibc/core/channel/v1/query.rpc.Query'; -import { - QueryFailuresResponse, -} from '@neutron-org/neutronjs/neutron/contractmanager/query'; +import { QueryChannelsResponse } from '@neutron-org/neutronjs/ibc/core/channel/v1/query'; +import { QueryClientImpl as IbcQueryClient } from '@neutron-org/neutronjs/ibc/core/channel/v1/query.rpc.Query'; +import { QueryFailuresResponse } from '@neutron-org/neutronjs/neutron/contractmanager/query'; import { getWithAttempts } from '../../helpers/misc'; -import { - QueryClientImpl as ContractManagerQuery, -} from '@neutron-org/neutronjs/neutron/contractmanager/query.rpc.Query'; +import { QueryClientImpl as ContractManagerQuery } from '@neutron-org/neutronjs/neutron/contractmanager/query.rpc.Query'; import { Wallet } from '../../helpers/wallet'; import { From 97abf70032c542c1ae17d8e5fa48129d3ffc4e61 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Tue, 3 Sep 2024 13:02:06 -0300 Subject: [PATCH 39/40] commit new yarnlock --- yarn.lock | 416 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 401 insertions(+), 15 deletions(-) diff --git a/yarn.lock b/yarn.lock index 53f83c9f..3284c3a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -946,6 +946,11 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@colors/colors@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + "@confio/ics23@^0.6.8": version "0.6.8" resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" @@ -954,6 +959,32 @@ "@noble/hashes" "^1.0.0" protobufjs "^6.8.8" +"@confio/relayer@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@confio/relayer/-/relayer-0.12.0.tgz#c63ec1aae7c6f14518a7958d491d135b39bb91c8" + integrity sha512-oLoE0VbW0TNt5RWQ7m87b5NfZ8ffY2O80OIM9y1G8S1CV7oNUi0iw0/yZRT0thSmSzHVTMGxTu1YB+jy0CqmVw== + dependencies: + "@cosmjs/cosmwasm-stargate" "^0.32.1" + "@cosmjs/crypto" "^0.32.1" + "@cosmjs/encoding" "^0.32.1" + "@cosmjs/faucet-client" "^0.32.1" + "@cosmjs/math" "^0.32.1" + "@cosmjs/proto-signing" "^0.32.1" + "@cosmjs/stargate" "^0.32.1" + "@cosmjs/stream" "^0.32.1" + "@cosmjs/tendermint-rpc" "^0.32.1" + "@cosmjs/utils" "^0.32.1" + ajv "7.1.1" + axios "^1.6.7" + commander "7.1.0" + cosmjs-types "^0.9.0" + fast-safe-stringify "2.0.4" + js-yaml "4.0.0" + prom-client "13.1.0" + table "^6.7.1" + triple-beam "1.3.0" + winston "3.3.3" + "@cosmjs/amino@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.32.4.tgz#3908946c0394e6d431694c8992c5147079a1c860" @@ -964,7 +995,7 @@ "@cosmjs/math" "^0.32.4" "@cosmjs/utils" "^0.32.4" -"@cosmjs/cosmwasm-stargate@^0.32.4": +"@cosmjs/cosmwasm-stargate@^0.32.1", "@cosmjs/cosmwasm-stargate@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz#2ee93f2cc0b1c146ac369b2bf8ef9ee2e159fd50" integrity sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA== @@ -980,7 +1011,7 @@ cosmjs-types "^0.9.0" pako "^2.0.2" -"@cosmjs/crypto@^0.32.4": +"@cosmjs/crypto@^0.32.1", "@cosmjs/crypto@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.32.4.tgz#5d29633b661eaf092ddb3e7ea6299cfd6f4507a2" integrity sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw== @@ -993,7 +1024,7 @@ elliptic "^6.5.4" libsodium-wrappers-sumo "^0.7.11" -"@cosmjs/encoding@^0.32.4": +"@cosmjs/encoding@^0.32.1", "@cosmjs/encoding@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.32.4.tgz#646e0e809f7f4f1414d8fa991fb0ffe6c633aede" integrity sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw== @@ -1002,6 +1033,13 @@ bech32 "^1.1.4" readonly-date "^1.0.0" +"@cosmjs/faucet-client@^0.32.1": + version "0.32.4" + resolved "https://registry.yarnpkg.com/@cosmjs/faucet-client/-/faucet-client-0.32.4.tgz#33eb5922e5e2955a6029cd29318ae3f40dbf071c" + integrity sha512-ahbuoyI0lZBpK7nKSvmFywc+qodiIwOCnUuMLN9CWGQguqkC808ewCz4NWiMPPX3dj46SG7Y71n979YIlguUuw== + dependencies: + axios "^1.6.0" + "@cosmjs/json-rpc@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz#be91eb89ea78bd5dc02d0a9fa184dd6790790f0b" @@ -1010,14 +1048,14 @@ "@cosmjs/stream" "^0.32.4" xstream "^11.14.0" -"@cosmjs/math@^0.32.4": +"@cosmjs/math@^0.32.1", "@cosmjs/math@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.32.4.tgz#87ac9eadc06696e30a30bdb562a495974bfd0a1a" integrity sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw== dependencies: bn.js "^5.2.0" -"@cosmjs/proto-signing@^0.32.4": +"@cosmjs/proto-signing@^0.32.1", "@cosmjs/proto-signing@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz#5a06e087c6d677439c8c9b25b5223d5e72c4cd93" integrity sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ== @@ -1039,7 +1077,7 @@ ws "^7" xstream "^11.14.0" -"@cosmjs/stargate@0.32.4", "@cosmjs/stargate@^0.32.4": +"@cosmjs/stargate@0.32.4", "@cosmjs/stargate@^0.32.1", "@cosmjs/stargate@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.32.4.tgz#bd0e4d3bf613b629addbf5f875d3d3b50f640af1" integrity sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ== @@ -1055,14 +1093,14 @@ cosmjs-types "^0.9.0" xstream "^11.14.0" -"@cosmjs/stream@^0.32.4": +"@cosmjs/stream@^0.32.1", "@cosmjs/stream@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.32.4.tgz#83e1f2285807467c56d9ea0e1113f79d9fa63802" integrity sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A== dependencies: xstream "^11.14.0" -"@cosmjs/tendermint-rpc@^0.32.4": +"@cosmjs/tendermint-rpc@^0.32.1", "@cosmjs/tendermint-rpc@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz#b36f9ec657498e42c97e21bb7368798ef6279752" integrity sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw== @@ -1078,11 +1116,20 @@ readonly-date "^1.0.0" xstream "^11.14.0" -"@cosmjs/utils@^0.32.4": +"@cosmjs/utils@^0.32.1", "@cosmjs/utils@^0.32.4": version "0.32.4" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.32.4.tgz#a9a717c9fd7b1984d9cefdd0ef6c6f254060c671" integrity sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w== +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + "@esbuild/aix-ppc64@0.21.5": version "0.21.5" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" @@ -1522,6 +1569,41 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^11.2.2": + version "11.3.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz#51d6e8d83ca261ff02c0ab0e68e9db23d5cd5999" + integrity sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@sinonjs/samsam@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" + integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== + dependencies: + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.2": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" + integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== + "@types/body-parser@*": version "1.19.5" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" @@ -1626,6 +1708,11 @@ "@types/node" "*" "@types/send" "*" +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + "@typescript-eslint/eslint-plugin@^5.19.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -1805,6 +1892,16 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" + integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -1815,6 +1912,16 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1893,6 +2000,11 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +async@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1916,6 +2028,15 @@ axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +axios@^1.6.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-plugin-polyfill-corejs2@^0.4.10: version "0.4.11" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" @@ -1960,6 +2081,11 @@ bignumber.js@^9.0.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + bip39@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" @@ -2137,7 +2263,7 @@ cli-truncate@^3.1.0: slice-ansi "^5.0.0" string-width "^5.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -2156,16 +2282,40 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + colorette@^2.0.16: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2173,6 +2323,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== + commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -2325,6 +2480,11 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2377,6 +2537,11 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2698,6 +2863,16 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-safe-stringify@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.4.tgz#4fe828718aa61dbcf9119c3c24e79cc4dea973b2" + integrity sha512-mNlGUdKOeGNleyrmgbKYtbnCr9KZkZXU7eM89JRo8vY10f7Ul1Fbj07hUBW3N4fC0xM+fmfFfa2zM7mIizhpNQ== + +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -2705,6 +2880,11 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + fflate@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" @@ -2759,6 +2939,11 @@ flatted@^3.2.9, flatted@^3.3.1: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + follow-redirects@^1.15.0, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -3014,6 +3199,11 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-core-module@^2.13.0: version "2.15.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" @@ -3106,6 +3296,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -3141,11 +3338,21 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -3153,6 +3360,11 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -3224,11 +3436,21 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3244,6 +3466,18 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +logform@^2.2.0, logform@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.1.tgz#71403a7d8cae04b2b734147963236205db9b3df0" + integrity sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -3400,7 +3634,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3425,6 +3659,17 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +nise@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-6.0.0.tgz#ae56fccb5d912037363c3b3f29ebbfa28bde8b48" + integrity sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/text-encoding" "^0.7.2" + just-extend "^6.2.0" + path-to-regexp "^6.2.1" + node-releases@^2.0.14: version "2.0.18" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" @@ -3481,6 +3726,13 @@ once@^1.3.0: dependencies: wrappy "1" +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -3575,6 +3827,11 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" + integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -3640,6 +3897,13 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" +prom-client@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-13.1.0.tgz#1185caffd8691e28d32e373972e662964e3dba45" + integrity sha512-jT9VccZCWrJWXdyEtQddCDszYsiuWj5T0ekrPszi/WEegj3IZy6Mm09iOOVM86A4IKMWq8hZkT2dD9MaSe+sng== + dependencies: + tdigest "^0.1.1" + protobufjs@^6.8.8: version "6.11.4" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" @@ -3716,6 +3980,15 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +readable-stream@^3.4.0, readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readonly-date@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" @@ -3769,6 +4042,11 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -3847,11 +4125,16 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@5.2.1, safe-buffer@^5.1.0: +safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-stable-stringify@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3955,6 +4238,25 @@ signal-exit@^4.1.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sinon@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.0.tgz#69ca293dbc3e82590a8b0d46c97f63ebc1e5fc01" + integrity sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" + sirv@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" @@ -4018,6 +4320,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + stackback@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -4038,7 +4345,7 @@ string-argv@^0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4056,6 +4363,13 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -4099,7 +4413,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -4121,6 +4435,29 @@ symbol-observable@^2.0.3: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== +table@^6.7.1: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tdigest@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== + dependencies: + bintrees "1.0.2" + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4178,6 +4515,16 @@ treeify@^1.1.0: resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== +triple-beam@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + ts-node@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" @@ -4240,6 +4587,16 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-detect@^4.0.8: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -4316,6 +4673,11 @@ utf8@3.0.0: resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -4402,6 +4764,30 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" +winston-transport@^4.4.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.1.tgz#52ff1bcfe452ad89991a0aaff9c3b18e7f392569" + integrity sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA== + dependencies: + logform "^2.6.1" + readable-stream "^3.6.2" + triple-beam "^1.3.0" + +winston@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" + integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== + dependencies: + "@dabh/diagnostics" "^2.0.2" + async "^3.1.0" + is-stream "^2.0.0" + logform "^2.2.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.4.0" + word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" From fd7dd0ca74396ca558037918643304bda96321c7 Mon Sep 17 00:00:00 2001 From: quasisamurai Date: Wed, 4 Sep 2024 02:05:06 -0300 Subject: [PATCH 40/40] fix aftermerge case --- src/testcases/run_in_band/interchaintx.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/testcases/run_in_band/interchaintx.test.ts b/src/testcases/run_in_band/interchaintx.test.ts index ec3b24da..a770dd12 100644 --- a/src/testcases/run_in_band/interchaintx.test.ts +++ b/src/testcases/run_in_band/interchaintx.test.ts @@ -1025,7 +1025,7 @@ describe('Neutron / Interchain TXs', () => { timeout: 'message', }); - const channel = (await ibcQuerier.Channels({})).channels.find( + const channel = (await ibcQuerier.channels({})).channels.find( (c) => c.ordering === Order.ORDER_UNORDERED, ); expect(channel.state).toEqual(State.STATE_OPEN);