diff --git a/Makefile b/Makefile
index 20469e26f..039c164e6 100644
--- a/Makefile
+++ b/Makefile
@@ -3,11 +3,9 @@
install:
uv sync --frozen --no-install-project --all-extras
uv run pre-commit install
- npm install
update:
uv lock --upgrade
- npm update
format:
uv run ruff format && uv run ruff check --fix --select I
diff --git a/README.md b/README.md
index fdf76692a..8cb372eb1 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ English | 日本語
- [MySQL](https://www.mysql.com/) - Version 8.0
- [GoQuorum](https://github.com/ConsenSys/quorum)
- We support the official GoQuorum node of [ibet-Network](https://github.com/BoostryJP/ibet-Network).
- - We use [hardhat network](https://hardhat.org/hardhat-network/) for local development and unit testing, and we use the latest version.
+ - We use [Anvil](https://www.getfoundry.sh/anvil/) for local development and unit testing.
## Supported contract version
diff --git a/README_JA.md b/README_JA.md
index 980c094c4..c71ebb91e 100644
--- a/README_JA.md
+++ b/README_JA.md
@@ -24,7 +24,7 @@
- [MySQL](https://www.mysql.com/) - バージョン 8.0
- [GoQuorum](https://github.com/ConsenSys/quorum)
- [ibet-Network](https://github.com/BoostryJP/ibet-Network) の公式の GoQuorum をサポートしています。
- - 最新の [hardhat network](https://hardhat.org/hardhat-network/) をローカル開発およびユニットテストで利用しています。
+ - [Anvil](https://www.getfoundry.sh/anvil/) をローカル開発およびユニットテストで利用しています。
## コントラクトのバージョン
diff --git a/app/api/routers/events.py b/app/api/routers/events.py
index 870fbeee4..f107a70d4 100644
--- a/app/api/routers/events.py
+++ b/app/api/routers/events.py
@@ -22,7 +22,7 @@
from eth_typing import HexStr
from fastapi import APIRouter, Depends, Path, Query
from web3.contract.async_contract import AsyncContractEvent
-from web3.exceptions import Web3ValidationError
+from web3.exceptions import Web3RPCError, Web3ValidationError
from web3.types import EventData
from app import config, log
@@ -100,7 +100,7 @@ async def _collect_event_logs(
argument_filters=argument_filters,
)
)
- except Web3ValidationError:
+ except (Web3ValidationError, Web3RPCError):
events = []
for event in events:
block_number = int(event["blockNumber"])
diff --git a/app/config.py b/app/config.py
index 28c3c6f7d..ec25001b1 100644
--- a/app/config.py
+++ b/app/config.py
@@ -182,8 +182,10 @@
# Transaction reception wait
TRANSACTION_WAIT_TIMEOUT = int(os.environ.get("TRANSACTION_WAIT_TIMEOUT") or 5)
+_default_transaction_wait_poll_latency = 0.02 if UNIT_TEST_MODE else 0.5
TRANSACTION_WAIT_POLL_LATENCY = float(
- os.environ.get("TRANSACTION_WAIT_POLL_LATENCY") or 0.5
+ os.environ.get("TRANSACTION_WAIT_POLL_LATENCY")
+ or _default_transaction_wait_poll_latency
)
# Txpool length at which tx sending begins to pause
diff --git a/batch/indexer_Token_Holders.py b/batch/indexer_Token_Holders.py
index 76920045d..aa6570793 100644
--- a/batch/indexer_Token_Holders.py
+++ b/batch/indexer_Token_Holders.py
@@ -25,7 +25,7 @@
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.ext.asyncio import AsyncSession
from web3.contract import AsyncContract as Web3AsyncContract
-from web3.exceptions import ABIEventNotFound
+from web3.exceptions import ABIEventNotFound, Web3RPCError
from web3.types import EventData
from app.config import TOKEN_LIST_CONTRACT_ADDRESS, ZERO_ADDRESS
@@ -317,7 +317,7 @@ async def __process_transfer(self, block_from: int, block_to: int):
to_block=block_to,
argument_filters={"token": self.token_contract.address},
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
holder_changed_events = []
for _event in holder_changed_events:
@@ -339,7 +339,7 @@ async def __process_transfer(self, block_from: int, block_to: int):
] = await self.token_contract.events.Transfer.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
token_transfer_events = []
for _event in token_transfer_events:
@@ -399,7 +399,7 @@ async def __process_issue(self, block_from: int, block_to: int):
events: list[EventData] = await self.token_contract.events.Issue.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -433,7 +433,7 @@ async def __process_redeem(self, block_from: int, block_to: int):
events: list[EventData] = await self.token_contract.events.Redeem.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -466,7 +466,7 @@ async def __process_consume(self, block_from: int, block_to: int):
events: list[EventData] = await self.token_contract.events.Consume.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -493,7 +493,7 @@ async def __process_lock(self, block_from: int, block_to: int):
events: list[EventData] = await self.token_contract.events.Lock.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -525,7 +525,7 @@ async def __process_force_lock(self, block_from: int, block_to: int):
] = await self.token_contract.events.ForceLock.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -555,7 +555,7 @@ async def __process_unlock(self, block_from: int, block_to: int):
events: list[EventData] = await self.token_contract.events.Unlock.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -591,7 +591,7 @@ async def __process_force_unlock(self, block_from: int, block_to: int):
] = await self.token_contract.events.ForceUnlock.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
@@ -629,7 +629,7 @@ async def __process_force_change_locked_account(
] = await self.token_contract.events.ForceChangeLockedAccount.get_logs(
from_block=block_from, to_block=block_to
)
- except ABIEventNotFound:
+ except (ABIEventNotFound, Web3RPCError):
events = []
try:
for event in events:
diff --git a/docker-compose.yml b/docker-compose.yml
index ed75556d0..a8bee0c46 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -23,10 +23,10 @@ services:
mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
tmpfs:
- /var/lib/mysql
- hardhat-network:
+ anvil-network:
build:
context: .
- dockerfile: tests/Dockerfile_hardhat
+ dockerfile: tests/Dockerfile_anvil
ports:
- "8545:8545"
ibet-wallet-api-postgres:
@@ -46,10 +46,10 @@ services:
- SHARE_TOKEN_ENABLED=1
links:
- postgres:postgres
- - hardhat-network:quorum
+ - anvil-network:quorum
depends_on:
- postgres
- - hardhat-network
+ - anvil-network
volumes:
- ./cov:/app/ibet-Wallet-API/cov
ibet-wallet-api-mysql:
@@ -69,9 +69,9 @@ services:
- SHARE_TOKEN_ENABLED=1
links:
- mysql:mysql
- - hardhat-network:quorum
+ - anvil-network:quorum
depends_on:
- mysql
- - hardhat-network
+ - anvil-network
volumes:
- ./cov:/app/ibet-Wallet-API/cov
\ No newline at end of file
diff --git a/hardhat.config.js b/hardhat.config.js
deleted file mode 100644
index eb03d3603..000000000
--- a/hardhat.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/** @type import('hardhat/config').HardhatUserConfig */
-module.exports = {
- networks: {
- hardhat: {
- chainId: 2017,
- gasPrice: 0,
- blockGasLimit: 800000000,
- hardfork: "berlin",
- throwOnTransactionFailures: false,
- throwOnCallFailures: false,
- allowBlocksWithSameTimestamp: true
- },
- },
- solidity: "0.8.23",
-};
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 3c1ba772a..000000000
--- a/package-lock.json
+++ /dev/null
@@ -1,2896 +0,0 @@
-{
- "name": "ibet-Wallet-API",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "devDependencies": {
- "hardhat": "~2.28.6"
- }
- },
- "node_modules/@ethereumjs/rlp": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz",
- "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==",
- "dev": true,
- "license": "MPL-2.0",
- "bin": {
- "rlp": "bin/rlp.cjs"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@ethereumjs/util": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz",
- "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==",
- "dev": true,
- "license": "MPL-2.0",
- "dependencies": {
- "@ethereumjs/rlp": "^5.0.2",
- "ethereum-cryptography": "^2.2.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@ethereumjs/util/node_modules/@noble/curves": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz",
- "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/hashes": "1.4.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@ethereumjs/util/node_modules/@noble/hashes": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
- "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@ethereumjs/util/node_modules/@scure/bip32": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz",
- "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/curves": "~1.4.0",
- "@noble/hashes": "~1.4.0",
- "@scure/base": "~1.1.6"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@ethereumjs/util/node_modules/@scure/bip39": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz",
- "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/hashes": "~1.4.0",
- "@scure/base": "~1.1.6"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz",
- "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/curves": "1.4.2",
- "@noble/hashes": "1.4.0",
- "@scure/bip32": "1.4.0",
- "@scure/bip39": "1.3.0"
- }
- },
- "node_modules/@ethersproject/abi": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz",
- "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/address": "^5.8.0",
- "@ethersproject/bignumber": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/constants": "^5.8.0",
- "@ethersproject/hash": "^5.8.0",
- "@ethersproject/keccak256": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/properties": "^5.8.0",
- "@ethersproject/strings": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/abstract-provider": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz",
- "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bignumber": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/networks": "^5.8.0",
- "@ethersproject/properties": "^5.8.0",
- "@ethersproject/transactions": "^5.8.0",
- "@ethersproject/web": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/abstract-signer": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz",
- "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/abstract-provider": "^5.8.0",
- "@ethersproject/bignumber": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/properties": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/address": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz",
- "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bignumber": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/keccak256": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/rlp": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/base64": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz",
- "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bytes": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/bignumber": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz",
- "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "bn.js": "^5.2.1"
- }
- },
- "node_modules/@ethersproject/bytes": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz",
- "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/logger": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/constants": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz",
- "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bignumber": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/hash": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz",
- "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/abstract-signer": "^5.8.0",
- "@ethersproject/address": "^5.8.0",
- "@ethersproject/base64": "^5.8.0",
- "@ethersproject/bignumber": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/keccak256": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/properties": "^5.8.0",
- "@ethersproject/strings": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/keccak256": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz",
- "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bytes": "^5.8.0",
- "js-sha3": "0.8.0"
- }
- },
- "node_modules/@ethersproject/logger": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz",
- "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT"
- },
- "node_modules/@ethersproject/networks": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz",
- "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/logger": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/properties": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz",
- "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/logger": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/rlp": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz",
- "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/logger": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/signing-key": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz",
- "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/properties": "^5.8.0",
- "bn.js": "^5.2.1",
- "elliptic": "6.6.1",
- "hash.js": "1.1.7"
- }
- },
- "node_modules/@ethersproject/strings": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz",
- "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/constants": "^5.8.0",
- "@ethersproject/logger": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/transactions": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz",
- "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/address": "^5.8.0",
- "@ethersproject/bignumber": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/constants": "^5.8.0",
- "@ethersproject/keccak256": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/properties": "^5.8.0",
- "@ethersproject/rlp": "^5.8.0",
- "@ethersproject/signing-key": "^5.8.0"
- }
- },
- "node_modules/@ethersproject/web": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz",
- "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
- },
- {
- "type": "individual",
- "url": "https://www.buymeacoffee.com/ricmoo"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ethersproject/base64": "^5.8.0",
- "@ethersproject/bytes": "^5.8.0",
- "@ethersproject/logger": "^5.8.0",
- "@ethersproject/properties": "^5.8.0",
- "@ethersproject/strings": "^5.8.0"
- }
- },
- "node_modules/@fastify/busboy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
- "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@noble/curves": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz",
- "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/hashes": "1.7.2"
- },
- "engines": {
- "node": "^14.21.3 || >=16"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@noble/curves/node_modules/@noble/hashes": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz",
- "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.21.3 || >=16"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@noble/hashes": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz",
- "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "license": "MIT"
- },
- "node_modules/@noble/secp256k1": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz",
- "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "license": "MIT"
- },
- "node_modules/@nomicfoundation/edr": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.23.tgz",
- "integrity": "sha512-F2/6HZh8Q9RsgkOIkRrckldbhPjIZY7d4mT9LYuW68miwGQ5l7CkAgcz9fRRiurA0+YJhtsbx/EyrD9DmX9BOw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.23",
- "@nomicfoundation/edr-darwin-x64": "0.12.0-next.23",
- "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.23",
- "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.23",
- "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.23",
- "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.23",
- "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.23"
- },
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-darwin-arm64": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.23.tgz",
- "integrity": "sha512-Amh7mRoDzZyJJ4efqoePqdoZOzharmSOttZuJDlVE5yy07BoE8hL6ZRpa5fNYn0LCqn/KoWs8OHANWxhKDGhvQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-darwin-x64": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.23.tgz",
- "integrity": "sha512-9wn489FIQm7m0UCD+HhktjWx6vskZzeZD9oDc2k9ZvbBzdXwPp5tiDqUBJ+eQpByAzCDfteAJwRn2lQCE0U+Iw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-linux-arm64-gnu": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.23.tgz",
- "integrity": "sha512-nlk5EejSzEUfEngv0Jkhqq3/wINIfF2ED9wAofc22w/V1DV99ASh9l3/e/MIHOQFecIZ9MDqt0Em9/oDyB1Uew==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-linux-arm64-musl": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.23.tgz",
- "integrity": "sha512-SJuPBp3Rc6vM92UtVTUxZQ/QlLhLfwTftt2XUiYohmGKB3RjGzpgduEFMCA0LEnucUckU6UHrJNFHiDm77C4PQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-linux-x64-gnu": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.23.tgz",
- "integrity": "sha512-NU+Qs3u7Qt6t3bJFdmmjd5CsvgI2bPPzO31KifM2Ez96/jsXYho5debtTQnimlb5NAqiHTSlxjh/F8ROcptmeQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-linux-x64-musl": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.23.tgz",
- "integrity": "sha512-F78fZA2h6/ssiCSZOovlgIu0dUeI7ItKPsDDF3UUlIibef052GCXmliMinC90jVPbrjUADMd1BUwjfI0Z8OllQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/edr-win32-x64-msvc": {
- "version": "0.12.0-next.23",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.23.tgz",
- "integrity": "sha512-IfJZQJn7d/YyqhmguBIGoCKjE9dKjbu6V6iNEPApfwf5JyyjHYyyfkLU4rf7hygj57bfH4sl1jtQ6r8HnT62lw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 20"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz",
- "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- },
- "optionalDependencies": {
- "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.2",
- "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.2",
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.2",
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.2",
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.2",
- "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.2",
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.2"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz",
- "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz",
- "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz",
- "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz",
- "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz",
- "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz",
- "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz",
- "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@scure/base": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
- "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/@scure/bip32": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz",
- "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@noble/hashes": "~1.2.0",
- "@noble/secp256k1": "~1.7.0",
- "@scure/base": "~1.1.0"
- }
- },
- "node_modules/@scure/bip39": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz",
- "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@noble/hashes": "~1.2.0",
- "@scure/base": "~1.1.0"
- }
- },
- "node_modules/@sentry/core": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz",
- "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/hub": "5.30.0",
- "@sentry/minimal": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/hub": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz",
- "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/minimal": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz",
- "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/hub": "5.30.0",
- "@sentry/types": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/node": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz",
- "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/core": "5.30.0",
- "@sentry/hub": "5.30.0",
- "@sentry/tracing": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "cookie": "^0.4.1",
- "https-proxy-agent": "^5.0.0",
- "lru_map": "^0.3.3",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/tracing": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz",
- "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sentry/hub": "5.30.0",
- "@sentry/minimal": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/types": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz",
- "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/utils": {
- "version": "5.30.0",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz",
- "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/types": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/adm-zip": {
- "version": "0.4.16",
- "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz",
- "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.3.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-align": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
- "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.1.0"
- }
- },
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/anymatch/node_modules/picomatch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
- "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/bn.js": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz",
- "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/boxen": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
- "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.1.0",
- "cli-boxes": "^2.2.1",
- "string-width": "^4.2.2",
- "type-fest": "^0.20.2",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/boxen/node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/braces": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
- "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/chokidar": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
- "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readdirp": "^4.0.1"
- },
- "engines": {
- "node": ">= 14.16.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-boxes": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
- "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/command-exists": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
- "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/elliptic": {
- "version": "6.6.1",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
- "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/elliptic/node_modules/bn.js": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
- "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/enquirer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
- "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-colors": "^4.1.1",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ethereum-cryptography": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz",
- "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/hashes": "1.2.0",
- "@noble/secp256k1": "1.7.1",
- "@scure/bip32": "1.1.5",
- "@scure/bip39": "1.1.1"
- }
- },
- "node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/fill-range": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
- "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true,
- "license": "BSD-3-Clause",
- "bin": {
- "flat": "cli.js"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.15.11",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/fp-ts": {
- "version": "1.19.3",
- "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz",
- "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/hardhat": {
- "version": "2.28.6",
- "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.28.6.tgz",
- "integrity": "sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@ethereumjs/util": "^9.1.0",
- "@ethersproject/abi": "^5.1.2",
- "@nomicfoundation/edr": "0.12.0-next.23",
- "@nomicfoundation/solidity-analyzer": "^0.1.0",
- "@sentry/node": "^5.18.1",
- "adm-zip": "^0.4.16",
- "aggregate-error": "^3.0.0",
- "ansi-escapes": "^4.3.0",
- "boxen": "^5.1.2",
- "chokidar": "^4.0.0",
- "ci-info": "^2.0.0",
- "debug": "^4.1.1",
- "enquirer": "^2.3.0",
- "env-paths": "^2.2.0",
- "ethereum-cryptography": "^1.0.3",
- "find-up": "^5.0.0",
- "fp-ts": "1.19.3",
- "fs-extra": "^7.0.1",
- "immutable": "^4.0.0-rc.12",
- "io-ts": "1.10.4",
- "json-stream-stringify": "^3.1.4",
- "keccak": "^3.0.2",
- "lodash": "^4.17.11",
- "micro-eth-signer": "^0.14.0",
- "mnemonist": "^0.38.0",
- "mocha": "^10.0.0",
- "p-map": "^4.0.0",
- "picocolors": "^1.1.0",
- "raw-body": "^2.4.1",
- "resolve": "1.17.0",
- "semver": "^6.3.0",
- "solc": "0.8.26",
- "source-map-support": "^0.5.13",
- "stacktrace-parser": "^0.1.10",
- "tinyglobby": "^0.2.6",
- "tsort": "0.0.1",
- "undici": "^5.14.0",
- "uuid": "^8.3.2",
- "ws": "^7.4.6"
- },
- "bin": {
- "hardhat": "internal/cli/bootstrap.js"
- },
- "peerDependencies": {
- "ts-node": "*",
- "typescript": "*"
- },
- "peerDependenciesMeta": {
- "ts-node": {
- "optional": true
- },
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
- "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "depd": "~2.0.0",
- "inherits": "~2.0.4",
- "setprototypeof": "~1.2.0",
- "statuses": "~2.0.2",
- "toidentifier": "~1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/immutable": {
- "version": "4.3.8",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz",
- "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/io-ts": {
- "version": "1.10.4",
- "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz",
- "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fp-ts": "^1.0.0"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/js-sha3": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
- "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/json-stream-stringify": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz",
- "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=7.10.1"
- }
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/keccak": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz",
- "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "node-addon-api": "^2.0.0",
- "node-gyp-build": "^4.2.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.18.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
- "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lru_map": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz",
- "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/memorystream": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
- "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/micro-eth-signer": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz",
- "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@noble/curves": "~1.8.1",
- "@noble/hashes": "~1.7.1",
- "micro-packed": "~0.7.2"
- }
- },
- "node_modules/micro-eth-signer/node_modules/@noble/hashes": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz",
- "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.21.3 || >=16"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/micro-packed": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz",
- "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@scure/base": "~1.2.5"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/micro-packed/node_modules/@scure/base": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
- "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/minimatch": {
- "version": "5.1.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
- "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mnemonist": {
- "version": "0.38.5",
- "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz",
- "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "obliterator": "^2.0.0"
- }
- },
- "node_modules/mocha": {
- "version": "10.8.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz",
- "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-colors": "^4.1.3",
- "browser-stdout": "^1.3.1",
- "chokidar": "^3.5.3",
- "debug": "^4.3.5",
- "diff": "^5.2.0",
- "escape-string-regexp": "^4.0.0",
- "find-up": "^5.0.0",
- "glob": "^8.1.0",
- "he": "^1.2.0",
- "js-yaml": "^4.1.0",
- "log-symbols": "^4.1.0",
- "minimatch": "^5.1.6",
- "ms": "^2.1.3",
- "serialize-javascript": "^6.0.2",
- "strip-json-comments": "^3.1.1",
- "supports-color": "^8.1.1",
- "workerpool": "^6.5.1",
- "yargs": "^16.2.0",
- "yargs-parser": "^20.2.9",
- "yargs-unparser": "^2.0.0"
- },
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha.js"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/mocha/node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/mocha/node_modules/picomatch": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
- "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/mocha/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/mocha/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-addon-api": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz",
- "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-gyp-build": {
- "version": "4.8.4",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
- "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/obliterator": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz",
- "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/raw-body": {
- "version": "2.5.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
- "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bytes": "~3.1.2",
- "http-errors": "~2.0.1",
- "iconv-lite": "~0.4.24",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
- "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14.18.0"
- },
- "funding": {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-parse": "^1.0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/serialize-javascript": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
- "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/solc": {
- "version": "0.8.26",
- "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz",
- "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "command-exists": "^1.2.8",
- "commander": "^8.1.0",
- "follow-redirects": "^1.12.1",
- "js-sha3": "0.8.0",
- "memorystream": "^0.3.1",
- "semver": "^5.5.0",
- "tmp": "0.0.33"
- },
- "bin": {
- "solcjs": "solc.js"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/solc/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/stacktrace-parser": {
- "version": "0.1.11",
- "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz",
- "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.7.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/stacktrace-parser/node_modules/type-fest": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/statuses": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
- "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tinyglobby": {
- "version": "0.2.15",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fdir": "^6.5.0",
- "picomatch": "^4.0.3"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
- }
- },
- "node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "os-tmpdir": "~1.0.2"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true,
- "license": "0BSD"
- },
- "node_modules/tsort": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz",
- "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/undici": {
- "version": "5.29.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
- "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@fastify/busboy": "^2.0.0"
- },
- "engines": {
- "node": ">=14.0"
- }
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/widest-line": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
- "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "string-width": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/workerpool": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz",
- "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
- "dev": true,
- "license": "Apache-2.0"
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/ws": {
- "version": "7.5.10",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
- "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 917ea0201..000000000
--- a/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "devDependencies": {
- "hardhat": "~2.28.6"
- }
-}
diff --git a/tests/Dockerfile_anvil b/tests/Dockerfile_anvil
new file mode 100644
index 000000000..c13a96332
--- /dev/null
+++ b/tests/Dockerfile_anvil
@@ -0,0 +1,7 @@
+FROM ghcr.io/foundry-rs/foundry:latest
+
+WORKDIR /app/ibet-Wallet-API
+
+COPY tests/run_anvil.sh /app/ibet-Wallet-API/tests/run_anvil.sh
+
+ENTRYPOINT ["bash", "/app/ibet-Wallet-API/tests/run_anvil.sh"]
\ No newline at end of file
diff --git a/tests/Dockerfile_hardhat b/tests/Dockerfile_hardhat
deleted file mode 100644
index 0088f7b96..000000000
--- a/tests/Dockerfile_hardhat
+++ /dev/null
@@ -1,17 +0,0 @@
-FROM node:22-alpine
-
-# Make directory
-RUN mkdir -p /hardhat
-
-# Copy files
-COPY package.json /hardhat
-COPY package-lock.json /hardhat
-COPY hardhat.config.js /hardhat
-
-WORKDIR /hardhat
-
-# Install hardhat
-RUN npm install --only=dev
-
-# Run hardhat node
-CMD ["npx", "hardhat", "--config", "./hardhat.config.js", "node"]
\ No newline at end of file
diff --git a/tests/app/admin_Tokens_POST_test.py b/tests/app/admin_Tokens_POST_test.py
index 1708c88cd..c5fac3608 100644
--- a/tests/app/admin_Tokens_POST_test.py
+++ b/tests/app/admin_Tokens_POST_test.py
@@ -209,7 +209,11 @@ def test_normal_1_1(
assert executable_contract is not None
assert executable_contract.contract_address == req_params["contract_address"]
- bond = session.scalars(select(IDXBondToken).limit(1)).first()
+ bond = session.scalars(
+ select(IDXBondToken)
+ .where(IDXBondToken.token_address == bond_token.address)
+ .limit(1)
+ ).first()
assert bond is not None
assert bond.token_address == req_params["contract_address"]
assert bond.owner_address == issuer["account_address"]
@@ -316,7 +320,11 @@ def test_normal_1_2(
assert listing.max_sell_amount is None
assert listing.owner_address == issuer["account_address"]
- bond = session.scalars(select(IDXBondToken).limit(1)).first()
+ bond = session.scalars(
+ select(IDXBondToken)
+ .where(IDXBondToken.token_address == bond_token.address)
+ .limit(1)
+ ).first()
assert bond is not None
assert bond.token_address == bond_token.address
assert bond.owner_address == issuer["account_address"]
@@ -430,7 +438,11 @@ def test_normal_2(
assert listing.max_sell_amount is None
assert listing.owner_address == issuer["account_address"]
- bond = session.scalars(select(IDXBondToken).limit(1)).first()
+ bond = session.scalars(
+ select(IDXBondToken)
+ .where(IDXBondToken.token_address == bond_token.address)
+ .limit(1)
+ ).first()
assert bond is not None
assert bond.token_address == bond_token.address
assert bond.owner_address == issuer["account_address"]
diff --git a/tests/app/config_test.py b/tests/app/config_test.py
index 39ec29bc3..d9b104a69 100644
--- a/tests/app/config_test.py
+++ b/tests/app/config_test.py
@@ -32,12 +32,22 @@ def teardown_method(self):
# <正常系1>: デフォルト値
def test_normal_1(self):
- from app import config
+ with mock.patch.dict(os.environ, {"UNIT_TEST_MODE": "0"}, clear=False):
+ from app import config
- # Reload imported module to initialize with mocked env value
- reload(config)
+ # Reload imported module to initialize with mocked env value
+ reload(config)
+
+ assert config.TRANSACTION_WAIT_POLL_LATENCY == 0.5
+
+ # <正常系1-2>: Unit test mode のデフォルト値
+ def test_normal_1_2(self):
+ with mock.patch.dict(os.environ, {"UNIT_TEST_MODE": "1"}, clear=False):
+ from app import config
+
+ reload(config)
- assert config.TRANSACTION_WAIT_POLL_LATENCY == 0.5
+ assert config.TRANSACTION_WAIT_POLL_LATENCY == 0.02
# <正常系2>: 小数値
def test_normal_2(self):
diff --git a/tests/app/eth_EthereumJsonRpc_test.py b/tests/app/eth_EthereumJsonRpc_test.py
index 545a91625..e59c7e6b6 100644
--- a/tests/app/eth_EthereumJsonRpc_test.py
+++ b/tests/app/eth_EthereumJsonRpc_test.py
@@ -82,17 +82,12 @@ def test_normal_2(self, client: TestClient, session: Session):
# Assertion
assert resp.status_code == 200
- assert resp.json()["meta"] == {"code": 200, "message": "OK"}
- assert resp.json()["data"] == {
- "jsonrpc": "2.0",
- "id": 1,
- "error": {
- "code": -32004,
- "message": "Method eth_sync is not supported",
- "data": {
- "message": "Method eth_sync is not supported",
- "data": {"method": "eth_sync", "params": []},
- },
+ assert resp.json() == {
+ "meta": {"code": 200, "message": "OK"},
+ "data": {
+ "jsonrpc": "2.0",
+ "id": 1,
+ "error": {"code": -32601, "message": "Method not found"},
},
}
diff --git a/tests/app/eth_GetTransactionCount_test.py b/tests/app/eth_GetTransactionCount_test.py
index 42ff93a07..0036c851b 100644
--- a/tests/app/eth_GetTransactionCount_test.py
+++ b/tests/app/eth_GetTransactionCount_test.py
@@ -47,9 +47,9 @@ def test_transactioncount_normal_1(self, client: TestClient, session: Session):
assumed_body = {
"chainid": "2017",
- "gasprice": 8000000000,
+ "gasprice": 1000000000,
"nonce": 0,
- } # hardhat returns a fixed value of 8000000000 for eth_gasPrice
+ } # Returns a fixed value of 1000000000 for eth_gasPrice
assert resp.status_code == 200
assert resp.json()["meta"] == {"code": 200, "message": "OK"}
@@ -70,9 +70,9 @@ def test_transactioncount_normal_2(self, client: TestClient, session: Session):
assumed_body = {
"chainid": "2017",
- "gasprice": 8000000000,
+ "gasprice": 1000000000,
"nonce": nonce,
- } # hardhat returns a fixed value of 8000000000 for eth_gasPrice
+ } # Returns a fixed value of 1000000000 for eth_gasPrice
assert resp.status_code == 200
assert resp.json()["meta"] == {"code": 200, "message": "OK"}
@@ -93,9 +93,9 @@ def test_transactioncount_normal_3(self, client: TestClient, session: Session):
assumed_body = {
"chainid": "2017",
- "gasprice": 8000000000,
+ "gasprice": 1000000000,
"nonce": nonce,
- } # hardhat returns a fixed value of 8000000000 for eth_gasPrice
+ } # Returns a fixed value of 1000000000 for eth_gasPrice
assert resp.status_code == 200
assert resp.json()["meta"] == {"code": 200, "message": "OK"}
diff --git a/tests/app/eth_SendRawTransactionNowait_test.py b/tests/app/eth_SendRawTransactionNowait_test.py
index 06a7110f8..a19412515 100644
--- a/tests/app/eth_SendRawTransactionNowait_test.py
+++ b/tests/app/eth_SendRawTransactionNowait_test.py
@@ -713,7 +713,8 @@ def test_error_7(
pre_tx = coupontoken_1.functions.setStatus(False).build_transaction(
_tx_params(to_checksum_address(issuer["account_address"]))
)
- web3.eth.send_transaction(pre_tx)
+ tx_hash = web3.eth.send_transaction(pre_tx)
+ web3.eth.wait_for_transaction_receipt(tx_hash)
local_account_1 = web3.eth.account.create()
diff --git a/tests/app/eth_SendRawTransaction_test.py b/tests/app/eth_SendRawTransaction_test.py
index df588d525..d1ad73250 100644
--- a/tests/app/eth_SendRawTransaction_test.py
+++ b/tests/app/eth_SendRawTransaction_test.py
@@ -896,7 +896,8 @@ def test_error_8(
pre_tx = coupontoken_1.functions.setStatus(False).build_transaction(
_tx_params(to_checksum_address(issuer["account_address"]))
)
- web3.eth.send_transaction(pre_tx)
+ tx_hash = web3.eth.send_transaction(pre_tx)
+ web3.eth.wait_for_transaction_receipt(tx_hash)
local_account_1 = web3.eth.account.create()
@@ -1286,7 +1287,13 @@ def test_error_10_4(
assert resp.status_code == 200
assert resp.json()["meta"] == {"code": 200, "message": "OK"}
assert resp.json()["data"] == [
- {"id": 1, "status": 0, "transaction_hash": ANY}
+ {
+ "id": 1,
+ "status": 0,
+ "transaction_hash": ANY,
+ "error_code": 130401,
+ "error_msg": "Message sender balance is insufficient.",
+ }
]
#
diff --git a/tests/app/events_IbetSecurityTokenDVPEvents_test.py b/tests/app/events_IbetSecurityTokenDVPEvents_test.py
index a31d9a139..6683af8c0 100644
--- a/tests/app/events_IbetSecurityTokenDVPEvents_test.py
+++ b/tests/app/events_IbetSecurityTokenDVPEvents_test.py
@@ -22,6 +22,7 @@
import pytest
from fastapi.testclient import TestClient
+from hexbytes import HexBytes
from sqlalchemy.orm import Session
from web3 import Web3
from web3.middleware import ExtraDataToPOAMiddleware
@@ -51,6 +52,10 @@ def _get_block_timestamp(block_number: int) -> int:
return timestamp
+def _wait_for_tx(tx_hash: HexBytes) -> None:
+ web3.eth.wait_for_transaction_receipt(tx_hash)
+
+
class TestEventsIbetSecurityTokenDVP:
# Test API
apiurl = "/Events/IbetSecurityTokenDVP"
@@ -116,6 +121,7 @@ def test_normal_2(
dvp_contract["address"],
1000,
)
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -182,17 +188,19 @@ def test_normal_3(
)
# Deposit token to DVP contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Withdraw token from DVP contract
tx_hash = withdraw_from_exchange(
issuer, dvp_contract, {"address": token_contract.address}
) # Withdrawn
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -268,12 +276,13 @@ def test_normal_4(
)
# Deposit token to DVP contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create delivery
tx_hash = create_security_token_delivery(
@@ -284,6 +293,7 @@ def test_normal_4(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -367,15 +377,16 @@ def test_normal_5(
)
# Deposit token to DVP contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create delivery
- create_security_token_delivery(
+ create_tx_hash = create_security_token_delivery(
issuer,
dvp_contract,
{"address": token_contract.address},
@@ -383,12 +394,14 @@ def test_normal_5(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(create_tx_hash)
# Cancel delivery
latest_delivery_id = get_latest_security_delivery_id(dvp_contract)
tx_hash = cancel_security_token_delivery(
issuer, dvp_contract, latest_delivery_id
) # DeliveryCreated
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -469,15 +482,16 @@ def test_normal_6(
)
# Deposit token to DVP contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create delivery
- create_security_token_delivery(
+ create_tx_hash = create_security_token_delivery(
issuer,
dvp_contract,
{"address": token_contract.address},
@@ -485,12 +499,14 @@ def test_normal_6(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(create_tx_hash)
# Confirm delivery
latest_delivery_id = get_latest_security_delivery_id(dvp_contract)
tx_hash = confirm_security_token_delivery(
user1, dvp_contract, latest_delivery_id
) # DeliveryConfirmed
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -571,15 +587,16 @@ def test_normal_7(
)
# Deposit token to DVP contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create delivery
- create_security_token_delivery(
+ create_tx_hash = create_security_token_delivery(
issuer,
dvp_contract,
{"address": token_contract.address},
@@ -587,17 +604,20 @@ def test_normal_7(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(create_tx_hash)
# Confirm delivery
latest_delivery_id = get_latest_security_delivery_id(dvp_contract)
- confirm_security_token_delivery(
+ confirm_tx_hash = confirm_security_token_delivery(
user1, dvp_contract, latest_delivery_id
) # DeliveryConfirmed
+ _wait_for_tx(confirm_tx_hash)
# Finish delivery
tx_hash = finish_security_token_delivery(
agent, dvp_contract, latest_delivery_id
) # DeliveryFinished
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -678,15 +698,16 @@ def test_normal_8(
)
# Deposit token to DVP contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create delivery
- create_security_token_delivery(
+ create_tx_hash = create_security_token_delivery(
issuer,
dvp_contract,
{"address": token_contract.address},
@@ -694,17 +715,20 @@ def test_normal_8(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(create_tx_hash)
# Confirm delivery
latest_delivery_id = get_latest_security_delivery_id(dvp_contract)
- confirm_security_token_delivery(
+ confirm_tx_hash = confirm_security_token_delivery(
user1, dvp_contract, latest_delivery_id
) # DeliveryConfirmed
+ _wait_for_tx(confirm_tx_hash)
# Abort delivery
tx_hash = abort_security_token_delivery(
agent, dvp_contract, latest_delivery_id
) # DeliveryAborted
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -779,6 +803,7 @@ def test_normal_9_1(
dvp_contract["address"],
1000,
)
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -851,6 +876,7 @@ def test_normal_9_2(
dvp_contract["address"],
1000,
)
+ _wait_for_tx(_tx_hash)
latest_block_number = web3.eth.block_number
_latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -913,6 +939,7 @@ def test_normal_10_1(
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(tx_hash_1)
block_number_1 = web3.eth.block_number
block_timestamp_1 = _get_block_timestamp(block_number_1)
@@ -925,6 +952,7 @@ def test_normal_10_1(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(tx_hash_2)
block_number_2 = web3.eth.block_number
block_timestamp_2 = _get_block_timestamp(block_number_2)
@@ -1009,11 +1037,12 @@ def test_normal_10_2(
dvp_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(tx_hash_1)
block_number_1 = web3.eth.block_number
block_timestamp_1 = _get_block_timestamp(block_number_1)
# Create delivery
- create_security_token_delivery(
+ create_tx_hash = create_security_token_delivery(
issuer,
dvp_contract,
{"address": token_contract.address},
@@ -1021,6 +1050,7 @@ def test_normal_10_2(
agent["account_address"],
1000,
) # DeliveryCreated
+ _wait_for_tx(create_tx_hash)
block_number_2 = web3.eth.block_number
# Request target API
diff --git a/tests/app/events_IbetSecurityTokenEscrowEvents_test.py b/tests/app/events_IbetSecurityTokenEscrowEvents_test.py
index 8cd85d879..11fb49b4e 100644
--- a/tests/app/events_IbetSecurityTokenEscrowEvents_test.py
+++ b/tests/app/events_IbetSecurityTokenEscrowEvents_test.py
@@ -20,6 +20,7 @@
import json
from fastapi.testclient import TestClient
+from hexbytes import HexBytes
from sqlalchemy.orm import Session
from web3 import Web3
from web3.middleware import ExtraDataToPOAMiddleware
@@ -48,6 +49,10 @@ def _get_block_timestamp(block_number: int) -> int:
return timestamp
+def _wait_for_tx(tx_hash: HexBytes) -> None:
+ web3.eth.wait_for_transaction_receipt(tx_hash)
+
+
class TestEventsIbetSecurityTokenEscrow:
# Test API
apiurl = "/Events/IbetSecurityTokenEscrow"
@@ -116,6 +121,7 @@ def test_normal_2(
escrow_contract["address"],
1000,
)
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -171,12 +177,13 @@ def test_normal_3(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Withdraw token from escrow contract
tx_hash = withdraw_from_exchange(
@@ -184,6 +191,7 @@ def test_normal_3(
escrow_contract,
{"address": token_contract.address},
) # Withdrawn
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -243,12 +251,13 @@ def test_normal_4_1(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
tx_hash = create_security_token_escrow(
@@ -261,6 +270,7 @@ def test_normal_4_1(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -341,12 +351,13 @@ def test_normal_4_2(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
tx_hash = create_security_token_escrow(
@@ -359,6 +370,7 @@ def test_normal_4_2(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -428,12 +440,13 @@ def test_normal_4_3(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
tx_hash = create_security_token_escrow(
@@ -446,6 +459,7 @@ def test_normal_4_3(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -514,15 +528,16 @@ def test_normal_5_1(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -532,12 +547,14 @@ def test_normal_5_1(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
# Cancel escrow
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
tx_hash = cancel_security_token_escrow(
issuer, escrow_contract, latest_escrow_id
) # EscrowCanceled
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -614,15 +631,16 @@ def test_normal_5_2(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -632,12 +650,14 @@ def test_normal_5_2(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
# Cancel escrow
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
tx_hash = cancel_security_token_escrow(
issuer, escrow_contract, latest_escrow_id
) # EscrowCanceled
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -705,15 +725,16 @@ def test_normal_5_3(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -723,12 +744,14 @@ def test_normal_5_3(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
# Cancel escrow
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
tx_hash = cancel_security_token_escrow(
issuer, escrow_contract, latest_escrow_id
) # EscrowCanceled
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -794,15 +817,16 @@ def test_normal_6_1(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -812,12 +836,14 @@ def test_normal_6_1(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
# Finish escrow
tx_hash = finish_security_token_escrow(
agent, escrow_contract, latest_escrow_id
) # EscrowFinished
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -882,15 +908,16 @@ def test_normal_6_2(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -900,12 +927,14 @@ def test_normal_6_2(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
# Finish escrow
tx_hash = finish_security_token_escrow(
agent, escrow_contract, latest_escrow_id
) # EscrowFinished
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -974,15 +1003,16 @@ def test_normal_7_1(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -992,17 +1022,20 @@ def test_normal_7_1(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
# Finish escrow
- finish_security_token_escrow(
+ finish_tx_hash = finish_security_token_escrow(
agent, escrow_contract, latest_escrow_id
) # EscrowFinished
+ _wait_for_tx(finish_tx_hash)
# Approve transfer
tx_hash = approve_transfer_security_token_escrow(
issuer, escrow_contract, latest_escrow_id, "test_approval_data"
)
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -1062,15 +1095,16 @@ def test_normal_7_2(
)
# Deposit token to escrow contract
- IbetShareTestHelper.transfer_token(
+ deposit_tx_hash = IbetShareTestHelper.transfer_token(
issuer["account_address"],
token_contract.address,
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(deposit_tx_hash)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -1080,17 +1114,20 @@ def test_normal_7_2(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
latest_escrow_id = get_latest_security_escrow_id(escrow_contract)
# Finish escrow
- finish_security_token_escrow(
+ finish_tx_hash = finish_security_token_escrow(
agent, escrow_contract, latest_escrow_id
) # EscrowFinished
+ _wait_for_tx(finish_tx_hash)
# Approve transfer
tx_hash = approve_transfer_security_token_escrow(
issuer, escrow_contract, latest_escrow_id, "test_approval_data"
)
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -1159,6 +1196,7 @@ def test_normal_8_1(
escrow_contract["address"],
1000,
)
+ _wait_for_tx(tx_hash)
latest_block_number = web3.eth.block_number
latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -1231,6 +1269,7 @@ def test_normal_8_2(
escrow_contract["address"],
1000,
)
+ _wait_for_tx(_tx_hash)
latest_block_number = web3.eth.block_number
_latest_block_timestamp = _get_block_timestamp(latest_block_number)
@@ -1293,6 +1332,7 @@ def test_normal_9_1(
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(tx_hash_1)
block_number_1 = web3.eth.block_number
block_timestamp_1 = _get_block_timestamp(block_number_1)
@@ -1307,6 +1347,7 @@ def test_normal_9_1(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(tx_hash_2)
block_number_2 = web3.eth.block_number
block_timestamp_2 = _get_block_timestamp(block_number_2)
@@ -1406,11 +1447,12 @@ def test_normal_9_2(
escrow_contract["address"],
1000,
) # Deposited
+ _wait_for_tx(tx_hash_1)
block_number_1 = web3.eth.block_number
block_timestamp_1 = _get_block_timestamp(block_number_1)
# Create escrow
- create_security_token_escrow(
+ create_tx_hash = create_security_token_escrow(
issuer,
escrow_contract,
{"address": token_contract.address},
@@ -1420,6 +1462,7 @@ def test_normal_9_2(
"test_application_data",
"test_data",
) # EscrowCreated
+ _wait_for_tx(create_tx_hash)
block_number_2 = web3.eth.block_number
# Request target API
diff --git a/tests/app/events_IbetSecurityTokenInterfaceEvents_test.py b/tests/app/events_IbetSecurityTokenInterfaceEvents_test.py
index 9820b53f9..ea3667053 100644
--- a/tests/app/events_IbetSecurityTokenInterfaceEvents_test.py
+++ b/tests/app/events_IbetSecurityTokenInterfaceEvents_test.py
@@ -21,6 +21,7 @@
from unittest.mock import ANY
from fastapi.testclient import TestClient
+from hexbytes import HexBytes
from sqlalchemy.orm import Session
from web3 import Web3
from web3.contract import Contract as Web3Contract
@@ -46,6 +47,10 @@
web3.middleware_onion.inject(ExtraDataToPOAMiddleware, layer=0)
+def _wait_for_tx(tx_hash: HexBytes) -> None:
+ web3.eth.wait_for_transaction_receipt(tx_hash)
+
+
class TestEventsIbetSecurityTokenInterface:
issuer = eth_account["issuer"]
user1 = eth_account["user1"]
@@ -113,9 +118,10 @@ def issue_token_bond(
"baseFxRate": "",
}
token = IbetStraightBondTestHelper.issue(issuer["account_address"], args)
- IbetStraightBondTestHelper.register_token_list(
+ tx_hash = IbetStraightBondTestHelper.register_token_list(
issuer["account_address"], token.address, token_list["address"]
)
+ _wait_for_tx(tx_hash)
return token
@@ -145,9 +151,10 @@ def issue_token_share(
"transferable": True,
}
token = IbetShareTestHelper.issue(issuer["account_address"], args)
- IbetShareTestHelper.register_token_list(
+ tx_hash = IbetShareTestHelper.register_token_list(
issuer["account_address"], token.address, token_list["address"]
)
+ _wait_for_tx(tx_hash)
return token
@@ -177,56 +184,65 @@ def setup_data(self, session: Session, shared_contract: SharedContract):
self.listing_token(token.address, session)
# User1 and trader must register personal information before they receive token.
- PersonalInfoHelper.register(
+ tx_hash = PersonalInfoHelper.register(
self.user1["account_address"],
personal_info_contract["address"],
self.issuer["account_address"],
)
- PersonalInfoHelper.register(
+ _wait_for_tx(tx_hash)
+ tx_hash = PersonalInfoHelper.register(
self.trader["account_address"],
personal_info_contract["address"],
self.issuer["account_address"],
)
+ _wait_for_tx(tx_hash)
- IbetStraightBondTestHelper.transfer_token(
+ tx_hash = IbetStraightBondTestHelper.transfer_token(
self.issuer["account_address"],
token.address,
self.user1["account_address"],
200000,
)
- IbetStraightBondTestHelper.transfer_token(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.transfer_token(
self.user1["account_address"],
token.address,
escrow_contract["address"],
10000,
)
+ _wait_for_tx(tx_hash)
# user1: 20000 trader: 0
# Issuer transfers issued token to user1 and trader.
- IbetStraightBondTestHelper.set_transfer_approval_required(
+ tx_hash = IbetStraightBondTestHelper.set_transfer_approval_required(
self.issuer["account_address"], token.address, True
)
- IbetStraightBondTestHelper.apply_for_token_transfer(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.apply_for_token_transfer(
self.issuer["account_address"],
token.address,
self.user1["account_address"],
10000,
)
- IbetStraightBondTestHelper.apply_for_token_transfer(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.apply_for_token_transfer(
self.issuer["account_address"],
token.address,
self.trader["account_address"],
10000,
)
- IbetStraightBondTestHelper.cancel_token_transfer_application(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.cancel_token_transfer_application(
self.issuer["account_address"], token.address, 0, "to user1#1"
)
- IbetStraightBondTestHelper.approve_token_transfer(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.approve_token_transfer(
self.issuer["account_address"], token.address, 1, "to trader#1"
)
+ _wait_for_tx(tx_hash)
# user1: 20000 trader: 10000
- create_security_token_escrow(
+ tx_hash = create_security_token_escrow(
self.user1,
{"address": escrow_contract["address"]},
{"address": token.address},
@@ -234,23 +250,26 @@ def setup_data(self, session: Session, shared_contract: SharedContract):
self.agent["account_address"],
7000,
)
+ _wait_for_tx(tx_hash)
_latest_security_escrow_id = get_latest_security_escrow_id(
{"address": escrow_contract["address"]}
)
- finish_security_token_escrow(
+ tx_hash = finish_security_token_escrow(
self.agent,
{"address": escrow_contract["address"]},
_latest_security_escrow_id,
)
- approve_transfer_security_token_escrow(
+ _wait_for_tx(tx_hash)
+ tx_hash = approve_transfer_security_token_escrow(
self.issuer,
{"address": escrow_contract["address"]},
_latest_security_escrow_id,
"",
)
+ _wait_for_tx(tx_hash)
# user1: 13000 trader: 17000
- create_security_token_escrow(
+ tx_hash = create_security_token_escrow(
self.user1,
{"address": escrow_contract["address"]},
{"address": token.address},
@@ -258,26 +277,29 @@ def setup_data(self, session: Session, shared_contract: SharedContract):
self.agent["account_address"],
2000,
)
+ _wait_for_tx(tx_hash)
_latest_security_escrow_id = get_latest_security_escrow_id(
{"address": escrow_contract["address"]}
)
- finish_security_token_escrow(
+ tx_hash = finish_security_token_escrow(
self.agent,
{"address": escrow_contract["address"]},
_latest_security_escrow_id,
)
+ _wait_for_tx(tx_hash)
# user1: 13000 trader: 17000
- IbetStraightBondTestHelper.lock_token(
+ tx_hash = IbetStraightBondTestHelper.lock_token(
self.trader["account_address"],
token.address,
self.issuer["account_address"],
3000,
"",
)
+ _wait_for_tx(tx_hash)
# user1: 13000 trader: 17000
- IbetStraightBondTestHelper.unlock_token(
+ tx_hash = IbetStraightBondTestHelper.unlock_token(
self.issuer["account_address"],
token.address,
self.trader["account_address"],
@@ -285,45 +307,52 @@ def setup_data(self, session: Session, shared_contract: SharedContract):
2000,
"",
)
+ _wait_for_tx(tx_hash)
# user1: 15000 trader: 15000
- IbetStraightBondTestHelper.set_transfer_approval_required(
+ tx_hash = IbetStraightBondTestHelper.set_transfer_approval_required(
self.issuer["account_address"], token.address, False
)
- IbetStraightBondTestHelper.transfer_token(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.transfer_token(
self.issuer["account_address"],
token.address,
self.user1["account_address"],
100000,
)
+ _wait_for_tx(tx_hash)
# user1: 115000 trader: 15000
- IbetStraightBondTestHelper.mint(
+ tx_hash = IbetStraightBondTestHelper.mint(
self.issuer["account_address"],
token.address,
self.issuer["account_address"],
40000,
)
- IbetStraightBondTestHelper.burn(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.burn(
self.issuer["account_address"],
token.address,
self.user1["account_address"],
10000,
)
+ _wait_for_tx(tx_hash)
# user1: 105000 trader: 15000
- IbetStraightBondTestHelper.mint(
+ tx_hash = IbetStraightBondTestHelper.mint(
self.issuer["account_address"],
token.address,
self.trader["account_address"],
30000,
)
- IbetStraightBondTestHelper.burn(
+ _wait_for_tx(tx_hash)
+ tx_hash = IbetStraightBondTestHelper.burn(
self.issuer["account_address"],
token.address,
self.issuer["account_address"],
10000,
)
+ _wait_for_tx(tx_hash)
# user1: 115000 trader: 45000
self.token_address = token.address
diff --git a/tests/conftest.py b/tests/conftest.py
index 144842d5f..0531ecb8c 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -47,6 +47,7 @@
from app.model.db.base import Base
from app.utils.web3_utils import AsyncFailOverHTTPProvider
from tests.account_config import eth_account
+from tests.helpers.anvil_transaction_sync import install_anvil_transaction_sync_patch
from tests.helpers.contract import Contract
from tests.types import DeployedContract, SharedContract
@@ -54,6 +55,16 @@
web3.middleware_onion.inject(ExtraDataToPOAMiddleware, layer=0)
+@pytest.fixture(scope="session", autouse=True)
+def sync_send_transaction_via_anvil_patch():
+ if not config.UNIT_TEST_MODE:
+ yield
+ return
+
+ with install_anvil_transaction_sync_patch():
+ yield
+
+
@pytest.fixture(scope="session")
def client() -> TestClient:
setattr(AsyncFailOverHTTPProvider, "is_default", None)
diff --git a/tests/helpers/anvil_transaction_sync.py b/tests/helpers/anvil_transaction_sync.py
new file mode 100644
index 000000000..ce187fb72
--- /dev/null
+++ b/tests/helpers/anvil_transaction_sync.py
@@ -0,0 +1,125 @@
+"""
+Copyright BOOSTRY Co., Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+
+You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+"""
+
+from collections.abc import Iterator
+from contextlib import contextmanager
+from typing import Any, cast
+from unittest import mock
+
+from hexbytes import HexBytes
+from web3.eth.async_eth import AsyncEth
+from web3.eth.eth import Eth
+from web3.types import RPCEndpoint
+
+
+@contextmanager
+def install_anvil_transaction_sync_patch(_: Any = None) -> Iterator[None]:
+ """Route transaction sending through Anvil's synchronous RPC during tests."""
+
+ transaction_receipt_cache: dict[HexBytes, Any] = {}
+ original_sync_get_transaction_receipt = Eth.get_transaction_receipt
+ original_async_get_transaction_receipt = AsyncEth.get_transaction_receipt
+
+ def _cache_receipt(receipt: Any) -> HexBytes:
+ transaction_hash = HexBytes(receipt["transactionHash"])
+ transaction_receipt_cache[transaction_hash] = receipt
+ return transaction_hash
+
+ def _get_cached_receipt(transaction_hash: Any) -> Any:
+ cached_receipt = transaction_receipt_cache.get(HexBytes(transaction_hash))
+ if cached_receipt is not None:
+ return cached_receipt
+ return None
+
+ def _send_transaction_via_sync_api(self: Eth, transaction: Any) -> HexBytes:
+ transaction_params = self.send_transaction_munger(transaction)[0]
+ receipt = self.w3.manager.request_blocking(
+ cast(RPCEndpoint, "eth_sendTransactionSync"), [transaction_params]
+ )
+ return _cache_receipt(receipt)
+
+ def _send_raw_transaction_via_sync_api(self: Eth, transaction: Any) -> HexBytes:
+ receipt = self.w3.manager.request_blocking(
+ cast(RPCEndpoint, "eth_sendRawTransactionSync"), [transaction]
+ )
+ return _cache_receipt(receipt)
+
+ async def _async_send_transaction_via_sync_api(
+ self: AsyncEth, transaction: Any
+ ) -> HexBytes:
+ transaction_params = self.send_transaction_munger(transaction)[0]
+ receipt = await self.w3.manager.coro_request(
+ cast(RPCEndpoint, "eth_sendTransactionSync"), [transaction_params]
+ )
+ return _cache_receipt(receipt)
+
+ async def _async_send_raw_transaction_via_sync_api(
+ self: AsyncEth, transaction: Any
+ ) -> HexBytes:
+ receipt = await self.w3.manager.coro_request(
+ cast(RPCEndpoint, "eth_sendRawTransactionSync"), [transaction]
+ )
+ return _cache_receipt(receipt)
+
+ def _get_transaction_receipt_with_cache(self: Eth, transaction_hash: Any) -> Any:
+ cached_receipt = _get_cached_receipt(transaction_hash)
+ if cached_receipt is not None:
+ return cached_receipt
+ return original_sync_get_transaction_receipt(self, transaction_hash)
+
+ async def _async_get_transaction_receipt_with_cache(
+ self: AsyncEth, transaction_hash: Any
+ ) -> Any:
+ cached_receipt = _get_cached_receipt(transaction_hash)
+ if cached_receipt is not None:
+ return cached_receipt
+ return await original_async_get_transaction_receipt(self, transaction_hash)
+
+ with (
+ mock.patch.object(
+ Eth,
+ "send_transaction",
+ _send_transaction_via_sync_api,
+ ),
+ mock.patch.object(
+ Eth,
+ "send_raw_transaction",
+ _send_raw_transaction_via_sync_api,
+ ),
+ mock.patch.object(
+ Eth,
+ "get_transaction_receipt",
+ _get_transaction_receipt_with_cache,
+ ),
+ mock.patch.object(
+ AsyncEth,
+ "send_transaction",
+ _async_send_transaction_via_sync_api,
+ ),
+ mock.patch.object(
+ AsyncEth,
+ "send_raw_transaction",
+ _async_send_raw_transaction_via_sync_api,
+ ),
+ mock.patch.object(
+ AsyncEth,
+ "get_transaction_receipt",
+ _async_get_transaction_receipt_with_cache,
+ ),
+ ):
+ yield
diff --git a/tests/helpers/contract.py b/tests/helpers/contract.py
index 6e288d17b..0b996a010 100644
--- a/tests/helpers/contract.py
+++ b/tests/helpers/contract.py
@@ -91,12 +91,12 @@ def deploy_contract(
tx_hash = HexBytes(
contract.constructor(*args).transact({"from": deployer, "gas": 6000000})
)
- tx = web3.eth.wait_for_transaction_receipt(tx_hash)
+ tx = web3.eth.get_transaction_receipt(tx_hash)
contract_address = ""
# ブロックの状態を確認して、コントラクトアドレスが登録されているかを確認する。
if "contractAddress" in tx and tx["contractAddress"] is not None:
- contract_address = tx["contractAddress"]
+ contract_address = to_checksum_address(tx["contractAddress"])
return contract_address, contract_json["abi"]
diff --git a/tests/helpers/ibet_share_token.py b/tests/helpers/ibet_share_token.py
index 77170ef36..ebeeedbf8 100644
--- a/tests/helpers/ibet_share_token.py
+++ b/tests/helpers/ibet_share_token.py
@@ -226,6 +226,9 @@ def reallocate_token(
tx_data = str(tx_data)
tx["data"] = HexStr(tx_data + marker.hex() + annotation_data.hex())
tx_hash = web3.eth.send_transaction(tx)
+ # reallocate_token only needs a mined receipt because the batch indexer
+ # reads the transaction input to classify the transfer as a reallocation.
+ web3.eth.wait_for_transaction_receipt(tx_hash)
return tx_hash
@staticmethod
diff --git a/tests/run_anvil.sh b/tests/run_anvil.sh
new file mode 100755
index 000000000..5b7916522
--- /dev/null
+++ b/tests/run_anvil.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+CHAIN_ID="${CHAIN_ID:-2017}"
+BLOCK_GAS_LIMIT="${BLOCK_GAS_LIMIT:-800000000}"
+ANVIL_HARDFORK="${ANVIL_HARDFORK:-osaka}"
+ANVIL_HOST="${ANVIL_HOST:-0.0.0.0}"
+ANVIL_PORT="${ANVIL_PORT:-8545}"
+ANVIL_SLOTS_IN_AN_EPOCH="${ANVIL_SLOTS_IN_AN_EPOCH:-1}"
+RPC_URL="http://127.0.0.1:${ANVIL_PORT}"
+
+anvil \
+ --host "${ANVIL_HOST}" \
+ --port "${ANVIL_PORT}" \
+ --chain-id "${CHAIN_ID}" \
+ --hardfork "${ANVIL_HARDFORK}" \
+ --slots-in-an-epoch "${ANVIL_SLOTS_IN_AN_EPOCH}" \
+ --gas-price 0 \
+ --block-base-fee-per-gas 0 \
+ --gas-limit "${BLOCK_GAS_LIMIT}" &
+ANVIL_PID=$!
+
+cleanup() {
+ kill "${ANVIL_PID}" 2>/dev/null || true
+ wait "${ANVIL_PID}" 2>/dev/null || true
+}
+trap cleanup INT TERM EXIT
+
+until cast rpc --rpc-url "${RPC_URL}" web3_clientVersion >/dev/null 2>&1; do
+ sleep 0.2
+done
+
+wait "${ANVIL_PID}"
\ No newline at end of file