diff --git a/.github/workflows/taikoon.yml b/.github/workflows/taikoon.yml index bff54210066..5f3443c2d80 100644 --- a/.github/workflows/taikoon.yml +++ b/.github/workflows/taikoon.yml @@ -39,4 +39,4 @@ jobs: - name: Unit Tests working-directory: ./packages/taikoon - run: pnpm clean && pnpm compile && pnpm test + run: pnpm test diff --git a/packages/relayer/pkg/proof/block_header.go b/packages/relayer/pkg/proof/block_header.go index cc8f6a0fdad..fcb62d21d5e 100644 --- a/packages/relayer/pkg/proof/block_header.go +++ b/packages/relayer/pkg/proof/block_header.go @@ -2,7 +2,6 @@ package proof import ( "context" - "log/slog" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" @@ -27,8 +26,6 @@ func (p *Prover) blockHeader( return encoding.BlockHeader{}, errors.Wrap(err, "blocker.BlockByNumber") } } else { - slog.Info("getting block by hash", "blockHash", blockHash.Hex()) - b, err = blocker.BlockByHash(ctx, blockHash) if err != nil { return encoding.BlockHeader{}, errors.Wrap(err, "blocker.BlockByHash") diff --git a/packages/relayer/pkg/proof/encoded_signal_proof.go b/packages/relayer/pkg/proof/encoded_signal_proof.go index 18dbe317f37..479f8306b83 100644 --- a/packages/relayer/pkg/proof/encoded_signal_proof.go +++ b/packages/relayer/pkg/proof/encoded_signal_proof.go @@ -4,8 +4,6 @@ import ( "context" "math/big" - "log/slog" - "github.com/taikoxyz/taiko-mono/packages/relayer" "github.com/taikoxyz/taiko-mono/packages/relayer/pkg/encoding" @@ -89,12 +87,6 @@ func (p *Prover) getProof( ) (*StorageProof, error) { var ethProof StorageProof - slog.Info("getting proof", - "signalServiceAddress", signalServiceAddress.Hex(), - "key", key, - "blockNum", blockNumber, - ) - err := c.CallContext(ctx, ðProof, "eth_getProof", diff --git a/packages/relayer/processor/is_profitable.go b/packages/relayer/processor/is_profitable.go index 4e1abc43ed5..62d91e875cb 100644 --- a/packages/relayer/processor/is_profitable.go +++ b/packages/relayer/processor/is_profitable.go @@ -5,9 +5,14 @@ import ( "log/slog" + "github.com/pkg/errors" "github.com/taikoxyz/taiko-mono/packages/relayer" ) +var ( + errImpossible = errors.New("impossible to process") +) + // isProfitable determines whether a message is profitable or not. It should // check the processing fee, if one does not exist at all, it is definitely not // profitable. Otherwise, we compare it to the estimated cost. @@ -26,13 +31,13 @@ func (p *Processor) isProfitable( "gasLimit", gasLimit, ) - return shouldProcess, nil + return shouldProcess, errImpossible } // if processing fee is higher than baseFee * gasLimit, // we should process. - res := (destChainBaseFee + gasTipCap) * uint64(gasLimit) - if fee > res { + estimatedOnchainFee := (destChainBaseFee + gasTipCap) * uint64(gasLimit) + if fee > estimatedOnchainFee { shouldProcess = true } @@ -41,7 +46,7 @@ func (p *Processor) isProfitable( "destChainBaseFee", destChainBaseFee, "gasLimit", gasLimit, "shouldProcess", shouldProcess, - "result", res, + "estimatedOnchainFee", estimatedOnchainFee, ) if !shouldProcess { diff --git a/packages/relayer/processor/is_profitable_test.go b/packages/relayer/processor/is_profitable_test.go index f8d34c0b005..639118eac7a 100644 --- a/packages/relayer/processor/is_profitable_test.go +++ b/packages/relayer/processor/is_profitable_test.go @@ -26,7 +26,7 @@ func Test_isProfitable(t *testing.T) { 1, 1, false, - nil, + errImpossible, }, { "profitable", diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index 3bf37492a05..832b965d0f1 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -83,18 +83,10 @@ func (p *Processor) processMessage( return false, nil } - slog.Info("waiting for confirmations", - "msgHash", common.BytesToHash(msgBody.Event.MsgHash[:]).Hex(), - ) - if err := p.waitForConfirmations(ctx, msgBody.Event.Raw.TxHash, msgBody.Event.Raw.BlockNumber); err != nil { return false, err } - slog.Info("done waiting for confirmations", - "msgHash", common.BytesToHash(msgBody.Event.MsgHash[:]).Hex(), - ) - encodedSignalProof, err := p.generateEncodedSignalProof(ctx, msgBody.Event) if err != nil { return false, err @@ -314,11 +306,6 @@ func (p *Processor) sendProcessMessageCall( return nil, err } - slog.Info("message received on dest chain", - "received", received, - "srcTxHash", event.Raw.TxHash.Hex(), - ) - // message will fail when we try to process it if !received { slog.Warn("Message not received on dest chain", @@ -360,6 +347,10 @@ func (p *Processor) sendProcessMessageCall( gasTipCap.Uint64(), ) if err != nil || !profitable { + if err == errImpossible { + return nil, errImpossible + } + return nil, relayer.ErrUnprofitable } // now simulate the transaction and lets confirm @@ -519,9 +510,5 @@ func (p *Processor) getBaseFee(ctx context.Context) (*big.Int, error) { baseFee = eip1559.CalcBaseFee(cfg, blk.Header()) } - slog.Info("destChain base fee", - "baseFee", baseFee.String(), - ) - return baseFee, nil } diff --git a/packages/taikoon/contracts/MerkleWhitelist.sol b/packages/taikoon/contracts/MerkleWhitelist.sol index 83206dfef04..86ac55dbd18 100644 --- a/packages/taikoon/contracts/MerkleWhitelist.sol +++ b/packages/taikoon/contracts/MerkleWhitelist.sol @@ -23,6 +23,11 @@ contract MerkleWhitelist is ContextUpgradeable { uint256[48] private __gap; + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + /// @notice Contract initializer /// @param _root Merkle Tree root function initialize(bytes32 _root) external initializer { diff --git a/packages/taikoon/package.json b/packages/taikoon/package.json index 02384990af3..b324343c68c 100644 --- a/packages/taikoon/package.json +++ b/packages/taikoon/package.json @@ -8,7 +8,7 @@ "eslint": "pnpm exec eslint --ignore-path .eslintignore --ext .js,.ts .", "fmt:sol": "forge fmt", "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol'", - "test": "forge test --match-path 'test/*.t.sol' -vvv", + "test": "pnpm clean && pnpm compile && forge test --match-path 'test/*.t.sol' -vvv", "node": "anvil", "merkle": "node script/js/generate-merkle-tree.js", "deploy:localhost": "forge clean && pnpm compile && forge script script/sol/Deploy.s.sol --rpc-url http://localhost:8545 --broadcast", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4046fa0a3db..d8105ef3220 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -431,7 +431,7 @@ importers: version: github.com/dapphub/ds-test/e282159d5170298eb2455a6c05280ab5a73a4ef0 forge-std: specifier: github:foundry-rs/forge-std - version: github.com/foundry-rs/forge-std/93340e7e6127c817e276bc956b4f4ed13d173449 + version: github.com/foundry-rs/forge-std/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc ipfs-http-client: specifier: ^60.0.1 version: 60.0.1 @@ -510,19 +510,19 @@ importers: version: 2.1.4(typescript@5.4.3) '@wagmi/connectors': specifier: ^4.1.18 - version: 4.1.18(@wagmi/core@2.6.9)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.26) + version: 4.1.18(@wagmi/core@2.6.9)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.27) '@wagmi/core': specifier: ^2.6.9 - version: 2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.26) + version: 2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.27) '@web3modal/common': specifier: ^4.1.1 - version: 4.1.11 + version: 4.1.1 '@web3modal/ui': specifier: ^4.1.1 - version: 4.1.11 + version: 4.1.1 '@web3modal/wagmi': specifier: ^4.1.1 - version: 4.1.11(@wagmi/connectors@4.1.18)(@wagmi/core@2.6.9)(react@18.2.0)(viem@2.9.26) + version: 4.1.1(@wagmi/connectors@4.1.18)(@wagmi/core@2.6.9)(@web3modal/wallet@4.1.1)(typescript@5.4.3)(viem@2.9.27) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.13) @@ -552,7 +552,7 @@ importers: version: 3.4.3 viem: specifier: ^2.9.26 - version: 2.9.26(typescript@5.4.3)(zod@3.22.4) + version: 2.9.27(typescript@5.4.3)(zod@3.22.4) devDependencies: '@chromatic-com/storybook': specifier: ^1.3.1 @@ -5869,7 +5869,7 @@ packages: picocolors: 1.0.0 prettier: 3.2.5 typescript: 5.4.3 - viem: 2.9.26(typescript@5.4.3)(zod@3.22.4) + viem: 2.9.27(typescript@5.4.3)(zod@3.22.4) zod: 3.22.4 transitivePeerDependencies: - bufferutil @@ -5919,7 +5919,7 @@ packages: - zod dev: false - /@wagmi/connectors@4.1.18(@wagmi/core@2.6.9)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.26): + /@wagmi/connectors@4.1.18(@wagmi/core@2.6.9)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.27): resolution: {integrity: sha512-K/iLH/Z8jwvgPAYESU/uCQtQBvcIR1Jrqk+t2uCDSxew/tYtkOo2yOjtaPuOb+xJ5OrMGg+0tVHhGChYXry9Ow==} peerDependencies: '@wagmi/core': 2.6.9 @@ -5933,11 +5933,11 @@ packages: '@metamask/sdk': 0.14.3(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0) '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.3) '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.3) - '@wagmi/core': 2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.26) + '@wagmi/core': 2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.27) '@walletconnect/ethereum-provider': 2.11.2(react@18.2.0) '@walletconnect/modal': 2.6.2(react@18.2.0) typescript: 5.4.3 - viem: 2.9.26(typescript@5.4.3)(zod@3.22.4) + viem: 2.9.27(typescript@5.4.3)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -6015,7 +6015,7 @@ packages: - zod dev: false - /@wagmi/core@2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.26): + /@wagmi/core@2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.27): resolution: {integrity: sha512-AbNbHK+m60mfMTds0flv5YYJGp+JSz8O8ikzX+T7MdemFrYA9tZr6G+iSEnf+JLtcgiaCgQqUwac/WmmTkDiMA==} peerDependencies: '@tanstack/query-core': '>=5.0.0' @@ -6030,7 +6030,7 @@ packages: eventemitter3: 5.0.1 mipd: 0.0.5(typescript@5.4.3) typescript: 5.4.3 - viem: 2.9.26(typescript@5.4.3)(zod@3.22.4) + viem: 2.9.27(typescript@5.4.3)(zod@3.22.4) zustand: 4.4.1(react@18.2.0) transitivePeerDependencies: - '@types/react' @@ -6607,13 +6607,6 @@ packages: dayjs: 1.11.10 dev: false - /@web3modal/common@4.1.11: - resolution: {integrity: sha512-zcoaixcI3dLC/D0QlhpT8MNCd717O1/3r1AemC5/9Wbk2F+YKXkzJZHmWlXoTvlTw9DH07rJzs9YTPxFyn855w==} - dependencies: - bignumber.js: 9.1.2 - dayjs: 1.11.10 - dev: false - /@web3modal/core@4.1.1(react@18.2.0): resolution: {integrity: sha512-+FT73nYHKqF0VlkB9lo6mvfR/WjB4dz24JPwKb2Vq05JVyOcnbt5S06IeTtjI7zgKv3MyKzDzxh6z1ScgbTaRA==} dependencies: @@ -6625,29 +6618,12 @@ packages: - react dev: false - /@web3modal/core@4.1.11(react@18.2.0): - resolution: {integrity: sha512-e475IIWywEtgH1CCB2Pl1C/wgPu0NzAvtTMOPSGNoHsw1ID2n6j/o4CURQb2HJjOoYQjTKKVkzXa44vFh2p9xw==} - dependencies: - '@web3modal/common': 4.1.11 - '@web3modal/wallet': 4.1.11 - valtio: 1.11.2(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react - dev: false - /@web3modal/polyfills@4.1.1: resolution: {integrity: sha512-HQ90relyjjLfTj5XJhhDV9l3Mp10Rvv/MN+GCvzEx/xY7Tz4yhmKZUX3c519pz2BeVYjea+xwwu6OoOwd3GAXQ==} dependencies: buffer: 6.0.3 dev: false - /@web3modal/polyfills@4.1.11: - resolution: {integrity: sha512-+aMmjGrLCKLo4gVAdWgFdOX2ZjExciSLw/YlZ01wLO8Yj3bZbCZ7sjBc9xndHOVMK0QyUzBtpCOpYMJzi+59jg==} - dependencies: - buffer: 6.0.3 - dev: false - /@web3modal/scaffold-react@4.1.1(@web3modal/wallet@4.1.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-g+iVswup3MRlDTnwJoIayLDVhFyCVTNTfVaEYaxvr8ADKNb90t3nzY742ZVQOdYitvrWrAMboVaOB6LuLCvrsA==} peerDependencies: @@ -6662,23 +6638,6 @@ packages: - '@web3modal/wallet' dev: false - /@web3modal/scaffold-react@4.1.11(react@18.2.0): - resolution: {integrity: sha512-vouJHj77ZNKvR/Uyb3Hfc2UFSA4ZrrHmA0vbioCbgIh+V1rYT5XcAZDEu4AAo1qJ5NBRU1pkClVwAmQuWGY43w==} - peerDependencies: - react: '>=17' - react-dom: '>=17' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@web3modal/scaffold': 4.1.11(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - '@types/react' - dev: false - /@web3modal/scaffold-utils@4.1.1(react@18.2.0): resolution: {integrity: sha512-v9TlKchCPTOGitduI3hUm7PReWcxt55aifYHuCFklwgFatBlUZb/JrXpiCUhp6RpOfnSIA5gV65eyEucIbKY5A==} dependencies: @@ -6690,17 +6649,6 @@ packages: - react dev: false - /@web3modal/scaffold-utils@4.1.11(react@18.2.0): - resolution: {integrity: sha512-nsS9yK5tp1N/VfecLLPc8H/dGJCzn0jElWjRS92VfGPhOSiEh5PIrPyCl9o6wUZsp4fH1YUsoSY2EFpPsuCWgw==} - dependencies: - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/polyfills': 4.1.11 - valtio: 1.11.2(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react - dev: false - /@web3modal/scaffold-vue@4.1.1(@web3modal/wallet@4.1.1)(react@18.2.0)(vue@3.4.19): resolution: {integrity: sha512-8qDnRmOR1jMlEB6fuFZ2CiWFYtq6M1OGKcN2DGz4c0dggivsa10cjUXqJqrsic6nUxWKPWou0+osIlJ9hR1YBA==} peerDependencies: @@ -6714,20 +6662,6 @@ packages: - react dev: false - /@web3modal/scaffold-vue@4.1.11(react@18.2.0): - resolution: {integrity: sha512-PmIfD2TlKkZZa6V0sqwDtZ7t62BEk5JjCHd380QaZwGTbPEwS99leTWLKBTaxAPShK2p7+aj2Txss63wIXLRFg==} - peerDependencies: - vue: '>=3' - peerDependenciesMeta: - vue: - optional: true - dependencies: - '@web3modal/scaffold': 4.1.11(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react - dev: false - /@web3modal/scaffold@4.1.1(@web3modal/wallet@4.1.1)(react@18.2.0): resolution: {integrity: sha512-GBryCiyl+taz5DPq0expxzfMVcrpKjWvEBSAqT1tPUSthnzOWnVF77XlUAYgFZqzPsEu9lQ1dHCdqZx7WWMCXA==} peerDependencies: @@ -6748,20 +6682,6 @@ packages: - react dev: false - /@web3modal/scaffold@4.1.11(react@18.2.0): - resolution: {integrity: sha512-n8bP3cJNQxV8OD3s8bSj8QDbZvjn8a1Ui81jo2a3rIxOUAlD/cKRM8ivmNxiUdBMae8GP5CLiWtkIptmSLw40Q==} - dependencies: - '@web3modal/common': 4.1.11 - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/siwe': 4.1.11(react@18.2.0) - '@web3modal/ui': 4.1.11 - '@web3modal/wallet': 4.1.11 - lit: 3.1.0 - transitivePeerDependencies: - - '@types/react' - - react - dev: false - /@web3modal/siwe@4.1.1(react@18.2.0): resolution: {integrity: sha512-qQ4NKxrlD0gcFqh1G3yLlyRYABoBU7uXw3RQqpf1BiJSSMT2ePBfOwsCTJ6OPuT1RjKt9JNBADctua/sqEItCw==} requiresBuild: true @@ -6776,18 +6696,6 @@ packages: dev: false optional: true - /@web3modal/siwe@4.1.11(react@18.2.0): - resolution: {integrity: sha512-gndcNA351mkAR0wUsO4dLS9CbpcFo+AQ2CUXF0Jx83DwaBStCVsX3yllfnYKh/gpVetF3B48mRUt9TTTJJ79dA==} - dependencies: - '@web3modal/core': 4.1.11(react@18.2.0) - '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) - lit: 3.1.0 - valtio: 1.11.2(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react - dev: false - /@web3modal/ui@4.1.1: resolution: {integrity: sha512-6ntwIdi3VHR1HLIiyoannOAcckDs3XYrxxIu8cflba6UyuASJ6AH/AY3ULE88fvE55jM/Lra3uuOYj8yE5QjUw==} dependencies: @@ -6795,13 +6703,6 @@ packages: qrcode: 1.5.3 dev: false - /@web3modal/ui@4.1.11: - resolution: {integrity: sha512-lentHZvUpNjVasvNI8/jrVPIAV1M5zJKZ4Q4AeYwUJdEtlRon1uq10MRylmvlZAjWb98U130uJy245Fz87Th/w==} - dependencies: - lit: 3.1.0 - qrcode: 1.5.3 - dev: false - /@web3modal/wagmi@4.1.1(@wagmi/connectors@4.1.18)(@wagmi/core@2.6.9)(@web3modal/wallet@4.1.1)(typescript@5.4.3)(viem@2.7.11): resolution: {integrity: sha512-XMT+naasTfxmt2ogHO7c2wWL63S9SkfoGEIvd7AaxtqlXZfVKtCqyJJC710WiBUhUCyt9wD6hQNjRB1nWN3TGg==} peerDependencies: @@ -6837,16 +6738,15 @@ packages: - typescript dev: false - /@web3modal/wagmi@4.1.11(@wagmi/connectors@4.1.18)(@wagmi/core@2.6.9)(react@18.2.0)(viem@2.9.26): - resolution: {integrity: sha512-VoXV9idD0yV7jx0F2Xk722VXqQNCDKqDc+LR8WsuOU64TiTLJx9UDQpNcoigbC3bYCi/4Cpw41iSGgs7utbgyQ==} + /@web3modal/wagmi@4.1.1(@wagmi/connectors@4.1.18)(@wagmi/core@2.6.9)(@web3modal/wallet@4.1.1)(typescript@5.4.3)(viem@2.9.27): + resolution: {integrity: sha512-XMT+naasTfxmt2ogHO7c2wWL63S9SkfoGEIvd7AaxtqlXZfVKtCqyJJC710WiBUhUCyt9wD6hQNjRB1nWN3TGg==} peerDependencies: '@wagmi/connectors': '>=4.0.0' '@wagmi/core': '>=2.0.0' - react: '>=17' - react-dom: '>=17' viem: '>=2.0.0' - vue: '>=3' peerDependenciesMeta: + '@web3modal/siwe': + optional: true react: optional: true react-dom: @@ -6854,18 +6754,23 @@ packages: vue: optional: true dependencies: - '@wagmi/connectors': 4.1.18(@wagmi/core@2.6.9)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.26) - '@wagmi/core': 2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.26) - '@web3modal/polyfills': 4.1.11 - '@web3modal/scaffold': 4.1.11(react@18.2.0) - '@web3modal/scaffold-react': 4.1.11(react@18.2.0) - '@web3modal/scaffold-utils': 4.1.11(react@18.2.0) - '@web3modal/scaffold-vue': 4.1.11(react@18.2.0) - '@web3modal/siwe': 4.1.11(react@18.2.0) + '@wagmi/connectors': 4.1.18(@wagmi/core@2.6.9)(react-dom@18.2.0)(react-native@0.73.4)(react@18.2.0)(typescript@5.4.3)(viem@2.9.27) + '@wagmi/core': 2.6.9(react@18.2.0)(typescript@5.4.3)(viem@2.9.27) + '@web3modal/polyfills': 4.1.1 + '@web3modal/scaffold': 4.1.1(@web3modal/wallet@4.1.1)(react@18.2.0) + '@web3modal/scaffold-react': 4.1.1(@web3modal/wallet@4.1.1)(react-dom@18.2.0)(react@18.2.0) + '@web3modal/scaffold-utils': 4.1.1(react@18.2.0) + '@web3modal/scaffold-vue': 4.1.1(@web3modal/wallet@4.1.1)(react@18.2.0)(vue@3.4.19) + viem: 2.9.27(typescript@5.4.3)(zod@3.22.4) + optionalDependencies: + '@web3modal/siwe': 4.1.1(react@18.2.0) react: 18.2.0 - viem: 2.9.26(typescript@5.4.3)(zod@3.22.4) + react-dom: 18.2.0(react@18.2.0) + vue: 3.4.19(typescript@5.4.3) transitivePeerDependencies: - '@types/react' + - '@web3modal/wallet' + - typescript dev: false /@web3modal/wallet@4.1.1: @@ -6874,13 +6779,6 @@ packages: zod: 3.22.4 dev: false - /@web3modal/wallet@4.1.11: - resolution: {integrity: sha512-6eJSpNcrBxufJFEQu9+ZOMUZxPqa8438RvfYKCU9nLXwoBtweo6ecpQw2yhXDlrfG+uJZhFabtPxROabn2M8Kg==} - dependencies: - '@web3modal/polyfills': 4.1.11 - zod: 3.22.4 - dev: false - /@zerodevx/svelte-toast@0.9.5(svelte@4.2.12): resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} peerDependencies: @@ -8942,7 +8840,7 @@ packages: eslint: 8.55.0 eslint-import-resolver-node: 0.3.9 eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) - hasown: 2.0.0 + hasown: 2.0.1 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 @@ -9041,7 +8939,7 @@ packages: eslint: 8.55.0 eslint-plugin-es: 3.0.1(eslint@8.55.0) eslint-utils: 2.1.0 - ignore: 5.3.0 + ignore: 5.3.1 minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 @@ -10115,13 +10013,6 @@ packages: resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} dev: false - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: true - /hasown@2.0.1: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} @@ -15406,8 +15297,8 @@ packages: - zod dev: false - /viem@2.9.26(typescript@5.4.3)(zod@3.22.4): - resolution: {integrity: sha512-WWYsZfxDsvVsbQF9v3i0M7A2TYTtQl+pwiF5UP8/5dr15XEMGB0MJDhH3esU7jJnBd/JMjkJH/DQRAKuqYS23Q==} + /viem@2.9.27(typescript@5.4.3)(zod@3.22.4): + resolution: {integrity: sha512-C+5tispAKzUywf+G5fxNVxThtKrNtvDRvvF34hC10LeSsrd5l4tlKpf0B4xYVcpL0YYZd+YEordLzlWToPjUnQ==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -16231,8 +16122,8 @@ packages: version: 1.7.5 dev: false - github.com/foundry-rs/forge-std/93340e7e6127c817e276bc956b4f4ed13d173449: - resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/93340e7e6127c817e276bc956b4f4ed13d173449} + github.com/foundry-rs/forge-std/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc: + resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/5475f852e3f530d7e25dfb4596aa1f9baa8ffdfc} name: forge-std version: 1.7.6 dev: false