diff --git a/.circleci/config.yml b/.circleci/config.yml index a3e13bdae..f1b38ff91 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ orbs: defaults: &defaults working_directory: ~/repo docker: - - image: cimg/node:18.15.0 + - image: cimg/node:18.20.3 - image: mongo:7.0.0-rc5-jammy jobs: diff --git a/.solcover.js b/.solcover.js index d4924e9a2..cc58f8471 100644 --- a/.solcover.js +++ b/.solcover.js @@ -1,4 +1,8 @@ module.exports = { + mocha: { + grep: "@skip-on-coverage", // Find everything with this tag + invert: true // Run the grep's inverse set. + }, skipFiles: [ 'utils/StringUtils.sol', 'token/mocks', diff --git a/contracts/access/AAccessControlled.sol b/contracts/access/AAccessControlled.sol index 19de2287c..fa2897fcf 100644 --- a/contracts/access/AAccessControlled.sol +++ b/contracts/access/AAccessControlled.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSAccessController } from "./IZNSAccessController.sol"; +import { ZeroAddressPassed } from "../utils/CommonErrors.sol"; /** @@ -11,7 +12,6 @@ import { IZNSAccessController } from "./IZNSAccessController.sol"; * this contract needs to be inherited by the module. */ abstract contract AAccessControlled { - /** * @notice Emitted when the access controller contract address is set. */ @@ -66,7 +66,7 @@ abstract contract AAccessControlled { * @param _accessController Address of the ZNSAccessController contract. */ function _setAccessController(address _accessController) internal { - require(_accessController != address(0), "AC: _accessController is 0x0 address"); + if (_accessController == address(0)) revert ZeroAddressPassed(); accessController = IZNSAccessController(_accessController); emit AccessControllerSet(_accessController); } diff --git a/contracts/access/IZNSAccessController.sol b/contracts/access/IZNSAccessController.sol index 4008a1780..9263708d4 100644 --- a/contracts/access/IZNSAccessController.sol +++ b/contracts/access/IZNSAccessController.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol"; diff --git a/contracts/access/ZNSAccessController.sol b/contracts/access/ZNSAccessController.sol index 06357fe4e..2174dd7a3 100644 --- a/contracts/access/ZNSAccessController.sol +++ b/contracts/access/ZNSAccessController.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { AccessControl } from "@openzeppelin/contracts/access/AccessControl.sol"; import { IZNSAccessController } from "./IZNSAccessController.sol"; import { ZNSRoles } from "./ZNSRoles.sol"; +import { ZeroAddressPassed } from "../utils/CommonErrors.sol"; /** @@ -77,10 +78,8 @@ contract ZNSAccessController is AccessControl, ZNSRoles, IZNSAccessController { function _grantRoleToMany(bytes32 role, address[] memory addresses) internal { uint256 length = addresses.length; for (uint256 i = 0; i < length; ++i) { - require( - addresses[i] != address(0), - "ZNSAccessController: Can't grant role to zero address" - ); + if (addresses[i] == address(0)) revert ZeroAddressPassed(); + _grantRole(role, addresses[i]); } } diff --git a/contracts/access/ZNSRoles.sol b/contracts/access/ZNSRoles.sol index 48a920620..3ff956067 100644 --- a/contracts/access/ZNSRoles.sol +++ b/contracts/access/ZNSRoles.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; /** diff --git a/contracts/oz-proxies/ERC1967ProxyAcc.sol b/contracts/oz-proxies/ERC1967ProxyAcc.sol index 67824c9c9..5ccb57862 100644 --- a/contracts/oz-proxies/ERC1967ProxyAcc.sol +++ b/contracts/oz-proxies/ERC1967ProxyAcc.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; // solhint-disable-next-line no-global-import import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; diff --git a/contracts/oz-proxies/TransparentUpgradeableProxyAcc.sol b/contracts/oz-proxies/TransparentUpgradeableProxyAcc.sol index a3d6f86a3..3275c8120 100644 --- a/contracts/oz-proxies/TransparentUpgradeableProxyAcc.sol +++ b/contracts/oz-proxies/TransparentUpgradeableProxyAcc.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; // solhint-disable-next-line no-global-import import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; diff --git a/contracts/price/IZNSCurvePricer.sol b/contracts/price/IZNSCurvePricer.sol index 1b029f435..f1ff10fa5 100644 --- a/contracts/price/IZNSCurvePricer.sol +++ b/contracts/price/IZNSCurvePricer.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ICurvePriceConfig } from "../types/ICurvePriceConfig.sol"; import { IZNSPricer } from "../types/IZNSPricer.sol"; @@ -7,6 +7,23 @@ import { IZNSPricer } from "../types/IZNSPricer.sol"; interface IZNSCurvePricer is ICurvePriceConfig, IZNSPricer { + /** + * @notice Reverted when multiplier passed by the domain owner + * is equal to 0 or more than 10^18, which is too large. + */ + error InvalidMultiplierPassed(uint256 multiplier); + + /** + * @notice Reverted when `priceConfig` set by the owner does not result in a proper asymptotic curve + * and one of it's incorrect values causes the price spike at maxLength, meaning that the price + * for a domain label shorter than `baseLength` (the one before `minPrice`) becomes higher than `minPrice`. + */ + error InvalidConfigCausingPriceSpikes( + bytes32 configsDomainHash, + uint256 minPrice, + uint256 previousToMinPrice + ); + /** * @notice Emitted when the `maxPrice` is set in `CurvePriceConfig` * @param price The new maxPrice value diff --git a/contracts/price/IZNSFixedPricer.sol b/contracts/price/IZNSFixedPricer.sol index cf09360db..69cdfad8b 100644 --- a/contracts/price/IZNSFixedPricer.sol +++ b/contracts/price/IZNSFixedPricer.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSPricer } from "../types/IZNSPricer.sol"; diff --git a/contracts/price/ZNSCurvePricer.sol b/contracts/price/ZNSCurvePricer.sol index 67a22c880..3524261ef 100644 --- a/contracts/price/ZNSCurvePricer.sol +++ b/contracts/price/ZNSCurvePricer.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import { IZNSCurvePricer } from "./IZNSCurvePricer.sol"; @@ -75,10 +75,7 @@ contract ZNSCurvePricer is AAccessControlled, ARegistryWired, UUPSUpgradeable, I string calldata label, bool skipValidityCheck ) public view override returns (uint256) { - require( - priceConfigs[parentHash].isSet, - "ZNSCurvePricer: parent's price config has not been set properly through IZNSPricer.setPriceConfig()" - ); + if (!priceConfigs[parentHash].isSet) revert ParentPriceConfigNotSet(parentHash); if (!skipValidityCheck) { // Confirms string values are only [a-z0-9-] @@ -256,8 +253,8 @@ contract ZNSCurvePricer is AAccessControlled, ARegistryWired, UUPSUpgradeable, I bytes32 domainHash, uint256 multiplier ) public override onlyOwnerOrOperator(domainHash) { - require(multiplier != 0, "ZNSCurvePricer: precisionMultiplier cannot be 0"); - require(multiplier <= 10**18, "ZNSCurvePricer: precisionMultiplier cannot be greater than 10^18"); + if (multiplier == 0 || multiplier > 10**18) revert InvalidMultiplierPassed(multiplier); + priceConfigs[domainHash].precisionMultiplier = multiplier; emit PrecisionMultiplierSet(domainHash, multiplier); @@ -275,10 +272,8 @@ contract ZNSCurvePricer is AAccessControlled, ARegistryWired, UUPSUpgradeable, I public override onlyOwnerOrOperator(domainHash) { - require( - feePercentage <= PERCENTAGE_BASIS, - "ZNSCurvePricer: feePercentage cannot be greater than PERCENTAGE_BASIS" - ); + if (feePercentage > PERCENTAGE_BASIS) + revert FeePercentageValueTooLarge(feePercentage, PERCENTAGE_BASIS); priceConfigs[domainHash].feePercentage = feePercentage; emit FeePercentageSet(domainHash, feePercentage); @@ -337,10 +332,12 @@ contract ZNSCurvePricer is AAccessControlled, ARegistryWired, UUPSUpgradeable, I */ function _validateConfig(bytes32 domainHash) internal view { uint256 prevToMinPrice = _getPrice(domainHash, priceConfigs[domainHash].maxLength); - require( - priceConfigs[domainHash].minPrice <= prevToMinPrice, - "ZNSCurvePricer: incorrect value set causes the price spike at maxLength." - ); + if (priceConfigs[domainHash].minPrice > prevToMinPrice) + revert InvalidConfigCausingPriceSpikes( + domainHash, + priceConfigs[domainHash].minPrice, + prevToMinPrice + ); } /** diff --git a/contracts/price/ZNSFixedPricer.sol b/contracts/price/ZNSFixedPricer.sol index b345a8059..e3be189a9 100644 --- a/contracts/price/ZNSFixedPricer.sol +++ b/contracts/price/ZNSFixedPricer.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { AAccessControlled } from "../access/AAccessControlled.sol"; import { ARegistryWired } from "../registry/ARegistryWired.sol"; @@ -60,10 +60,7 @@ contract ZNSFixedPricer is AAccessControlled, ARegistryWired, UUPSUpgradeable, I string calldata label, bool skipValidityCheck ) public override view returns (uint256) { - require( - priceConfigs[parentHash].isSet, - "ZNSFixedPricer: parent's price config has not been set properly through IZNSPricer.setPriceConfig()" - ); + if (!priceConfigs[parentHash].isSet) revert ParentPriceConfigNotSet(parentHash); if (!skipValidityCheck) { // Confirms string values are only [a-z0-9-] @@ -161,10 +158,8 @@ contract ZNSFixedPricer is AAccessControlled, ARegistryWired, UUPSUpgradeable, I * @param feePercentage The new feePercentage */ function _setFeePercentage(bytes32 domainHash, uint256 feePercentage) internal { - require( - feePercentage <= PERCENTAGE_BASIS, - "ZNSFixedPricer: feePercentage cannot be greater than PERCENTAGE_BASIS" - ); + if (feePercentage > PERCENTAGE_BASIS) + revert FeePercentageValueTooLarge(feePercentage, PERCENTAGE_BASIS); priceConfigs[domainHash].feePercentage = feePercentage; emit FeePercentageSet(domainHash, feePercentage); diff --git a/contracts/registrar/IZNSRootRegistrar.sol b/contracts/registrar/IZNSRootRegistrar.sol index 365efbbf4..b98da35ce 100644 --- a/contracts/registrar/IZNSRootRegistrar.sol +++ b/contracts/registrar/IZNSRootRegistrar.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IDistributionConfig } from "../types/IDistributionConfig.sol"; import { PaymentConfig } from "../treasury/IZNSTreasury.sol"; @@ -42,13 +42,19 @@ struct CoreRegisterArgs { * + `isStakePayment`: A flag for whether the payment is a stake payment or not */ interface IZNSRootRegistrar is IDistributionConfig { + error NotTheOwnerOf( + OwnerOf ownerOf, + address candidate, + bytes32 domainHash + ); + + error InvalidOwnerOfEnumValue(OwnerOf value); enum OwnerOf { NAME, TOKEN, BOTH } - /** * @notice Emitted when a NEW domain is registered. * @dev `domainAddress` parameter is the address to which a domain name will relate to in ZNS. diff --git a/contracts/registrar/IZNSSubRegistrar.sol b/contracts/registrar/IZNSSubRegistrar.sol index 1c6574bdd..a8feb7b55 100644 --- a/contracts/registrar/IZNSSubRegistrar.sol +++ b/contracts/registrar/IZNSSubRegistrar.sol @@ -1,34 +1,47 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IDistributionConfig } from "../types/IDistributionConfig.sol"; import { PaymentConfig } from "../treasury/IZNSTreasury.sol"; import { IZNSPricer } from "../types/IZNSPricer.sol"; - /** * @title IZNSSubRegistrar.sol - Interface for the ZNSSubRegistrar contract responsible for registering subdomains. -*/ + */ interface IZNSSubRegistrar is IDistributionConfig { + /** + * @notice Reverted when someone other than parent owner is trying to buy + a subdomain under the parent that is locked\ + * or when the parent provided does not exist. + */ + error ParentLockedOrDoesntExist(bytes32 parentHash); + + /** + * @notice Reverted when the buyer of subdomain is not approved by the parent in it's mintlist. + */ + error SenderNotApprovedForPurchase(bytes32 parentHash, address sender); /** * @notice Emitted when a new `DistributionConfig.pricerContract` is set for a domain. - */ - event PricerContractSet(bytes32 indexed domainHash, address indexed pricerContract); + */ + event PricerContractSet( + bytes32 indexed domainHash, + address indexed pricerContract + ); /** * @notice Emitted when a new `DistributionConfig.paymentType` is set for a domain. - */ + */ event PaymentTypeSet(bytes32 indexed domainHash, PaymentType paymentType); /** * @notice Emitted when a new `DistributionConfig.accessType` is set for a domain. - */ + */ event AccessTypeSet(bytes32 indexed domainHash, AccessType accessType); /** * @notice Emitted when a new full `DistributionConfig` is set for a domain at once. - */ + */ event DistributionConfigSet( bytes32 indexed domainHash, IZNSPricer pricerContract, @@ -38,7 +51,7 @@ interface IZNSSubRegistrar is IDistributionConfig { /** * @notice Emitted when a `mintlist` is updated for a domain. - */ + */ event MintlistUpdated( bytes32 indexed domainHash, uint256 indexed ownerIndex, @@ -54,16 +67,17 @@ interface IZNSSubRegistrar is IDistributionConfig { /** * @notice Emitted when the ZNSRootRegistrar address is set in state. - */ + */ event RootRegistrarSet(address registrar); function distrConfigs( bytes32 domainHash - ) external view returns ( - IZNSPricer pricerContract, - PaymentType paymentType, - AccessType accessType - ); + ) + external view returns ( + IZNSPricer pricerContract, + PaymentType paymentType, + AccessType accessType + ); function isMintlistedForDomain( bytes32 domainHash, diff --git a/contracts/registrar/ZNSRootRegistrar.sol b/contracts/registrar/ZNSRootRegistrar.sol index fc7442020..5cb841e91 100644 --- a/contracts/registrar/ZNSRootRegistrar.sol +++ b/contracts/registrar/ZNSRootRegistrar.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { AAccessControlled } from "../access/AAccessControlled.sol"; import { ARegistryWired } from "../registry/ARegistryWired.sol"; @@ -11,6 +11,7 @@ import { IZNSSubRegistrar } from "../registrar/IZNSSubRegistrar.sol"; import { IZNSPricer } from "../types/IZNSPricer.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import { StringUtils } from "../utils/StringUtils.sol"; +import { ZeroAddressPassed, DomainAlreadyExists } from "../utils/CommonErrors.sol"; /** @@ -100,10 +101,8 @@ contract ZNSRootRegistrar is // Create hash for given domain name bytes32 domainHash = keccak256(bytes(name)); - require( - !registry.exists(domainHash), - "ZNSRootRegistrar: Domain already exists" - ); + if (registry.exists(domainHash)) + revert DomainAlreadyExists(domainHash); // Get price for the domain uint256 domainPrice = rootPricer.getPrice(0x0, name, true); @@ -256,10 +255,8 @@ contract ZNSRootRegistrar is external override { - require( - isOwnerOf(domainHash, msg.sender, OwnerOf.BOTH), - "ZNSRootRegistrar: Not the owner of both Name and Token" - ); + if (!isOwnerOf(domainHash, msg.sender, OwnerOf.BOTH)) + revert NotTheOwnerOf(OwnerOf.BOTH, msg.sender, domainHash); subRegistrar.clearMintlistAndLock(domainHash); _coreRevoke(domainHash, msg.sender); @@ -305,10 +302,9 @@ contract ZNSRootRegistrar is external override { - require( - isOwnerOf(domainHash, msg.sender, OwnerOf.TOKEN), - "ZNSRootRegistrar: Not the owner of the Token" - ); + if (!isOwnerOf(domainHash, msg.sender, OwnerOf.TOKEN)) + revert NotTheOwnerOf(OwnerOf.TOKEN, msg.sender, domainHash); + registry.updateDomainOwner(domainHash, msg.sender); emit DomainReclaimed(domainHash, msg.sender); @@ -330,7 +326,7 @@ contract ZNSRootRegistrar is && candidate == domainToken.ownerOf(uint256(domainHash)); } - revert("Wrong enum value for `ownerOf`"); + revert InvalidOwnerOfEnumValue(ownerOf); } /** @@ -348,10 +344,9 @@ contract ZNSRootRegistrar is * @param rootPricer_ Address of the IZNSPricer type contract to set as pricer of Root Domains */ function setRootPricer(address rootPricer_) public override onlyAdmin { - require( - rootPricer_ != address(0), - "ZNSRootRegistrar: rootPricer_ is 0x0 address" - ); + if (rootPricer_ == address(0)) + revert ZeroAddressPassed(); + rootPricer = IZNSPricer(rootPricer_); emit RootPricerSet(rootPricer_); @@ -363,10 +358,9 @@ contract ZNSRootRegistrar is * @param treasury_ Address of the `ZNSTreasury` contract */ function setTreasury(address treasury_) public override onlyAdmin { - require( - treasury_ != address(0), - "ZNSRootRegistrar: treasury_ is 0x0 address" - ); + if (treasury_ == address(0)) + revert ZeroAddressPassed(); + treasury = IZNSTreasury(treasury_); emit TreasurySet(treasury_); @@ -378,10 +372,9 @@ contract ZNSRootRegistrar is * @param domainToken_ Address of the `ZNSDomainToken` contract */ function setDomainToken(address domainToken_) public override onlyAdmin { - require( - domainToken_ != address(0), - "ZNSRootRegistrar: domainToken_ is 0x0 address" - ); + if (domainToken_ == address(0)) + revert ZeroAddressPassed(); + domainToken = IZNSDomainToken(domainToken_); emit DomainTokenSet(domainToken_); @@ -392,7 +385,8 @@ contract ZNSRootRegistrar is * @param subRegistrar_ Address of the `ZNSSubRegistrar` contract */ function setSubRegistrar(address subRegistrar_) external override onlyAdmin { - require(subRegistrar_ != address(0), "ZNSRootRegistrar: subRegistrar_ is 0x0 address"); + if (subRegistrar_ == address(0)) + revert ZeroAddressPassed(); subRegistrar = IZNSSubRegistrar(subRegistrar_); emit SubRegistrarSet(subRegistrar_); diff --git a/contracts/registrar/ZNSSubRegistrar.sol b/contracts/registrar/ZNSSubRegistrar.sol index cd01d86a5..b1b8a65a8 100644 --- a/contracts/registrar/ZNSSubRegistrar.sol +++ b/contracts/registrar/ZNSSubRegistrar.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSPricer } from "../types/IZNSPricer.sol"; import { IZNSRootRegistrar, CoreRegisterArgs } from "./IZNSRootRegistrar.sol"; @@ -9,6 +9,7 @@ import { ARegistryWired } from "../registry/ARegistryWired.sol"; import { StringUtils } from "../utils/StringUtils.sol"; import { PaymentConfig } from "../treasury/IZNSTreasury.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { DomainAlreadyExists, ZeroAddressPassed, NotAuthorizedForDomain } from "../utils/CommonErrors.sol"; /** @@ -45,11 +46,10 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, mapping(bytes32 domainHash => Mintlist mintStruct) public mintlist; modifier onlyOwnerOperatorOrRegistrar(bytes32 domainHash) { - require( - registry.isOwnerOrOperator(domainHash, msg.sender) - || accessController.isRegistrar(msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if ( + !registry.isOwnerOrOperator(domainHash, msg.sender) + && !accessController.isRegistrar(msg.sender) + ) revert NotAuthorizedForDomain(msg.sender, domainHash); _; } @@ -95,27 +95,22 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, label.validate(); bytes32 domainHash = hashWithParent(parentHash, label); - require( - !registry.exists(domainHash), - "ZNSSubRegistrar: Subdomain already exists" - ); + if (registry.exists(domainHash)) + revert DomainAlreadyExists(domainHash); DistributionConfig memory parentConfig = distrConfigs[parentHash]; bool isOwnerOrOperator = registry.isOwnerOrOperator(parentHash, msg.sender); - require( - parentConfig.accessType != AccessType.LOCKED || isOwnerOrOperator, - "ZNSSubRegistrar: Parent domain's distribution is locked or parent does not exist" - ); + if (parentConfig.accessType == AccessType.LOCKED && !isOwnerOrOperator) + revert ParentLockedOrDoesntExist(parentHash); if (parentConfig.accessType == AccessType.MINTLIST) { - require( - mintlist[parentHash] + if ( + !mintlist[parentHash] .list [mintlist[parentHash].ownerIndex] - [msg.sender], - "ZNSSubRegistrar: Sender is not approved for purchase" - ); + [msg.sender] + ) revert SenderNotApprovedForPurchase(parentHash, msg.sender); } CoreRegisterArgs memory coreRegisterArgs = CoreRegisterArgs({ @@ -188,10 +183,8 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, bytes32 domainHash, DistributionConfig calldata config ) public override onlyOwnerOperatorOrRegistrar(domainHash) { - require( - address(config.pricerContract) != address(0), - "ZNSSubRegistrar: pricerContract can not be 0x0 address" - ); + if (address(config.pricerContract) == address(0)) + revert ZeroAddressPassed(); distrConfigs[domainHash] = config; @@ -215,15 +208,11 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, bytes32 domainHash, IZNSPricer pricerContract ) public override { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); - require( - address(pricerContract) != address(0), - "ZNSSubRegistrar: pricerContract can not be 0x0 address" - ); + if (address(pricerContract) == address(0)) + revert ZeroAddressPassed(); distrConfigs[domainHash].pricerContract = pricerContract; @@ -242,10 +231,8 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, bytes32 domainHash, PaymentType paymentType ) public override { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); distrConfigs[domainHash].paymentType = paymentType; @@ -283,10 +270,8 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, address[] calldata candidates, bool[] calldata allowed ) external override { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); Mintlist storage mintlistForDomain = mintlist[domainHash]; uint256 ownerIndex = mintlistForDomain.ownerIndex; @@ -344,7 +329,7 @@ contract ZNSSubRegistrar is AAccessControlled, ARegistryWired, UUPSUpgradeable, * @param registrar_ The new address of the ZNSRootRegistrar contract */ function setRootRegistrar(address registrar_) public override onlyAdmin { - require(registrar_ != address(0), "ZNSSubRegistrar: _registrar can not be 0x0 address"); + if (registrar_ == address(0)) revert ZeroAddressPassed(); rootRegistrar = IZNSRootRegistrar(registrar_); emit RootRegistrarSet(registrar_); diff --git a/contracts/registry/ARegistryWired.sol b/contracts/registry/ARegistryWired.sol index c4b0de706..259b04e85 100644 --- a/contracts/registry/ARegistryWired.sol +++ b/contracts/registry/ARegistryWired.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSRegistry } from "./IZNSRegistry.sol"; +import { ZeroAddressPassed, NotAuthorizedForDomain } from "../utils/CommonErrors.sol"; /** @@ -10,7 +11,6 @@ import { IZNSRegistry } from "./IZNSRegistry.sol"; * and is able to get AC and domain data from it or write to it. */ abstract contract ARegistryWired { - /** * @notice Emitted when the ZNSRegistry address is set in state of the child contract. */ @@ -22,10 +22,8 @@ abstract contract ARegistryWired { IZNSRegistry public registry; modifier onlyOwnerOrOperator(bytes32 domainHash) { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ARegistryWired: Not authorized. Only Owner or Operator allowed" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); _; } @@ -33,7 +31,7 @@ abstract contract ARegistryWired { * @notice Internal function to set the ZNSRegistry address in the state of the child contract. */ function _setRegistry(address registry_) internal { - require(registry_ != address(0), "ARegistryWired: _registry can not be 0x0 address"); + if (registry_ == address(0)) revert ZeroAddressPassed(); registry = IZNSRegistry(registry_); emit RegistrySet(registry_); } diff --git a/contracts/registry/IZNSRegistry.sol b/contracts/registry/IZNSRegistry.sol index f6df6e3f3..f73a74ff6 100644 --- a/contracts/registry/IZNSRegistry.sol +++ b/contracts/registry/IZNSRegistry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; /** @@ -14,7 +14,7 @@ pragma solidity 0.8.18; interface IZNSRegistry { /** - * @notice Description of a domain record, pointing to the + * @notice Description of a domain record, pointing to the * owner address of that record as well as the address of * its resolver */ @@ -123,7 +123,7 @@ interface IZNSRegistry { function getResolverType( string calldata resolverType - ) external returns (address); + ) external returns (address); function addResolverType( string calldata resolverType, diff --git a/contracts/registry/ZNSRegistry.sol b/contracts/registry/ZNSRegistry.sol index 2b79a8113..72d2376f7 100644 --- a/contracts/registry/ZNSRegistry.sol +++ b/contracts/registry/ZNSRegistry.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSRegistry } from "./IZNSRegistry.sol"; import { AAccessControlled } from "../access/AAccessControlled.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import { ZeroAddressPassed, NotAuthorizedForDomain } from "../utils/CommonErrors.sol"; /** @@ -36,10 +37,8 @@ contract ZNSRegistry is AAccessControlled, UUPSUpgradeable, IZNSRegistry { * @param domainHash the hash of a domain's name */ modifier onlyOwnerOrOperator(bytes32 domainHash) { - require( - isOwnerOrOperator(domainHash, msg.sender), - "ZNSRegistry: Not authorized" - ); + if (!isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); _; } @@ -48,10 +47,8 @@ contract ZNSRegistry is AAccessControlled, UUPSUpgradeable, IZNSRegistry { * @param domainHash the hash of a domain's name */ modifier onlyOwner(bytes32 domainHash) { - require( - records[domainHash].owner == msg.sender, - "ZNSRegistry: Not the Name Owner" - ); + if (records[domainHash].owner != msg.sender) + revert NotAuthorizedForDomain(msg.sender, domainHash); _; } @@ -183,7 +180,7 @@ contract ZNSRegistry is AAccessControlled, UUPSUpgradeable, IZNSRegistry { /** * @notice Add a new resolver type option to the mapping of types - * This function can also be used to update the resolver mapping for an existing resolver + * This function can also be used to update the resolver mapping for an existing resolver * simple by using an existing key like "address" with a new address * @param resolverType The type of the resolver to add * @param resolver The address of the new resolver contract @@ -234,11 +231,10 @@ contract ZNSRegistry is AAccessControlled, UUPSUpgradeable, IZNSRegistry { bytes32 domainHash, address owner ) external override { - require( - msg.sender == records[domainHash].owner || - accessController.isRegistrar(msg.sender), - "ZNSRegistry: Only Name Owner or Registrar allowed to call" - ); + if ( + msg.sender != records[domainHash].owner && + !accessController.isRegistrar(msg.sender) + ) revert NotAuthorizedForDomain(msg.sender, domainHash); _setDomainOwner(domainHash, owner); } @@ -286,7 +282,7 @@ contract ZNSRegistry is AAccessControlled, UUPSUpgradeable, IZNSRegistry { * @param owner The owner to set */ function _setDomainOwner(bytes32 domainHash, address owner) internal { - require(owner != address(0), "ZNSRegistry: Owner cannot be zero address"); + if (owner == address(0)) revert ZeroAddressPassed(); records[domainHash].owner = owner; emit DomainOwnerSet(domainHash, owner); } diff --git a/contracts/resolver/IZNSAddressResolver.sol b/contracts/resolver/IZNSAddressResolver.sol index 28711f29c..d4e3df1b8 100644 --- a/contracts/resolver/IZNSAddressResolver.sol +++ b/contracts/resolver/IZNSAddressResolver.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; interface IZNSAddressResolver { diff --git a/contracts/resolver/ZNSAddressResolver.sol b/contracts/resolver/ZNSAddressResolver.sol index f20298e43..e07762837 100644 --- a/contracts/resolver/ZNSAddressResolver.sol +++ b/contracts/resolver/ZNSAddressResolver.sol @@ -1,11 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ERC165 } from "@openzeppelin/contracts/utils/introspection/ERC165.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import { IZNSAddressResolver } from "./IZNSAddressResolver.sol"; import { AAccessControlled } from "../access/AAccessControlled.sol"; import { ARegistryWired } from "../registry/ARegistryWired.sol"; +import { NotAuthorizedForDomain } from "../utils/CommonErrors.sol"; /** @@ -67,11 +68,10 @@ contract ZNSAddressResolver is ) external override { // only owner or operator of the current domain can set the address // also, ZNSRootRegistrar.sol can set the address as part of the registration process - require( - registry.isOwnerOrOperator(domainHash, msg.sender) || - accessController.isRegistrar(msg.sender), - "ZNSAddressResolver: Not authorized for this domain" - ); + if ( + !registry.isOwnerOrOperator(domainHash, msg.sender) && + !accessController.isRegistrar(msg.sender) + ) revert NotAuthorizedForDomain(msg.sender, domainHash); domainAddresses[domainHash] = newAddress; diff --git a/contracts/token/IZNSDomainToken.sol b/contracts/token/IZNSDomainToken.sol index 4e288c8c7..977ea5f2a 100644 --- a/contracts/token/IZNSDomainToken.sol +++ b/contracts/token/IZNSDomainToken.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; -import { IERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; -import { IERC2981Upgradeable } from "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol"; +import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; +import { IERC2981 } from "@openzeppelin/contracts/interfaces/IERC2981.sol"; -interface IZNSDomainToken is IERC2981Upgradeable, IERC721Upgradeable { +interface IZNSDomainToken is IERC2981, IERC721 { /** * @notice Emitted when a Default Royalty (for all tokens) is set. diff --git a/contracts/token/ZNSDomainToken.sol b/contracts/token/ZNSDomainToken.sol index ec3cc1ecd..ed5410562 100644 --- a/contracts/token/ZNSDomainToken.sol +++ b/contracts/token/ZNSDomainToken.sol @@ -1,7 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; -import { ERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import { ERC2981Upgradeable } from "@openzeppelin/contracts-upgradeable/token/common/ERC2981Upgradeable.sol"; import { ERC721URIStorageUpgradeable } @@ -18,9 +17,8 @@ import { AAccessControlled } from "../access/AAccessControlled.sol"; */ contract ZNSDomainToken is AAccessControlled, - ERC721Upgradeable, - ERC2981Upgradeable, ERC721URIStorageUpgradeable, + ERC2981Upgradeable, UUPSUpgradeable, IZNSDomainToken { @@ -89,6 +87,7 @@ contract ZNSDomainToken is */ function revoke(uint256 tokenId) external override onlyRegistrar { _burn(tokenId); + --_totalSupply; _resetTokenRoyalty(tokenId); } @@ -98,7 +97,7 @@ contract ZNSDomainToken is function tokenURI(uint256 tokenId) public view - override(ERC721URIStorageUpgradeable, ERC721Upgradeable, IZNSDomainToken) + override(ERC721URIStorageUpgradeable, IZNSDomainToken) returns (string memory) { return super.tokenURI(tokenId); @@ -170,23 +169,11 @@ contract ZNSDomainToken is public view virtual - override(ERC721Upgradeable, ERC721URIStorageUpgradeable, ERC2981Upgradeable, IZNSDomainToken) + override(ERC721URIStorageUpgradeable, ERC2981Upgradeable, IZNSDomainToken) returns (bool) { return super.supportsInterface(interfaceId); } - /** - * @notice ERC721 `_burn` function - * @param tokenId The ID of the token to burn - */ - function _burn(uint256 tokenId) - internal - override(ERC721URIStorageUpgradeable, ERC721Upgradeable) - { - super._burn(tokenId); - --_totalSupply; - } - /** * @notice Return the baseURI */ diff --git a/contracts/token/mocks/CustomDecimalTokenMock.sol b/contracts/token/mocks/CustomDecimalTokenMock.sol index 3d5c46b0b..507a1adf0 100644 --- a/contracts/token/mocks/CustomDecimalTokenMock.sol +++ b/contracts/token/mocks/CustomDecimalTokenMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; // solhint-disable import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; @@ -9,9 +9,9 @@ contract CustomDecimalTokenMock is ERC20 { uint256 private _totalSupplyBase = 10000000000000000000000; - constructor(address owner, uint256 decimals) ERC20("VariedDecimalTokenMock", "VDTM") { - _decimals = uint8(decimals); - _mint(owner, totalSupply()); + constructor(address owner_, uint256 decimals_) ERC20("VariedDecimalTokenMock", "VDTM") { + _decimals = uint8(decimals_); + _mint(owner_, totalSupply()); } function decimals() public view override returns (uint8) { diff --git a/contracts/token/mocks/MeowTokenMock.sol b/contracts/token/mocks/MeowTokenMock.sol index 7465f6a21..dcbfce985 100644 --- a/contracts/token/mocks/MeowTokenMock.sol +++ b/contracts/token/mocks/MeowTokenMock.sol @@ -1,12 +1,15 @@ // SPDX-License-Identifier: MIT /* solhint-disable */ -pragma solidity 0.8.3; +pragma solidity 0.8.26; -import { MeowToken } from "@zero-tech/ztoken/contracts/MeowToken.sol"; -import { MeowTokenTest } from "@zero-tech/ztoken/contracts/MeowTokenTest.sol"; +import { ERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; -contract MeowTokenMock is MeowToken { +contract MeowTokenMock is ERC20Upgradeable { + function initialize(string memory name_, string memory symbol_) external initializer { + __ERC20_init(name_, symbol_); + } + function mint(address account, uint256 amount) public { _mint(account, amount); } diff --git a/contracts/treasury/IZNSTreasury.sol b/contracts/treasury/IZNSTreasury.sol index 28acd8461..bd2ed85d0 100644 --- a/contracts/treasury/IZNSTreasury.sol +++ b/contracts/treasury/IZNSTreasury.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -/** +/** * @notice The `PaymentConfig` struct describes the two pieces of information * needed to create a payment configuration for a domain. The address of the * user to send funds to in a sale, and what token those funds are in. @@ -26,9 +26,10 @@ struct PaymentConfig { * + `amount`: The amount of the staking token above deposited by the user */ interface IZNSTreasury { + error NoBeneficiarySetForParent(bytes32 domainHash); /** - * @notice Describe a stake for a domain. This could be + * @notice Describe a stake for a domain. This could be * in any ERC20 token so the address of the specific token * as well as the amount is required. */ diff --git a/contracts/treasury/ZNSTreasury.sol b/contracts/treasury/ZNSTreasury.sol index b9d8dfb48..51bb39bdc 100644 --- a/contracts/treasury/ZNSTreasury.sol +++ b/contracts/treasury/ZNSTreasury.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSTreasury } from "./IZNSTreasury.sol"; import { AAccessControlled } from "../access/AAccessControlled.sol"; @@ -8,6 +8,7 @@ import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { PaymentConfig } from "./IZNSTreasury.sol"; import { ARegistryWired } from "../registry/ARegistryWired.sol"; +import { ZeroAddressPassed, NotAuthorizedForDomain } from "../utils/CommonErrors.sol"; /** @@ -62,14 +63,8 @@ contract ZNSTreasury is AAccessControlled, ARegistryWired, UUPSUpgradeable, IZNS _setAccessController(accessController_); _setRegistry(registry_); - require( - paymentToken_ != address(0), - "ZNSTreasury: paymentToken_ passed as 0x0 address" - ); - require( - zeroVault_ != address(0), - "ZNSTreasury: zeroVault_ passed as 0x0 address" - ); + if (paymentToken_ == address(0) || zeroVault_ == address(0)) + revert ZeroAddressPassed(); paymentConfigs[0x0] = PaymentConfig({ token: IERC20(paymentToken_), @@ -120,10 +115,8 @@ contract ZNSTreasury is AAccessControlled, ARegistryWired, UUPSUpgradeable, IZNS // transfer stake fee to the parent beneficiary if it's > 0 if (stakeFee > 0) { - require( - parentConfig.beneficiary != address(0), - "ZNSTreasury: parent domain has no beneficiary set" - ); + if (parentConfig.beneficiary == address(0)) + revert NoBeneficiarySetForParent(parentHash); parentConfig.token.safeTransfer( parentConfig.beneficiary, @@ -206,10 +199,8 @@ contract ZNSTreasury is AAccessControlled, ARegistryWired, UUPSUpgradeable, IZNS ) external override onlyRegistrar { PaymentConfig memory parentConfig = paymentConfigs[parentHash]; - require( - parentConfig.beneficiary != address(0), - "ZNSTreasury: parent domain has no beneficiary set" - ); + if (parentConfig.beneficiary == address(0)) + revert NoBeneficiarySetForParent(parentHash); // Transfer payment to parent beneficiary from payer parentConfig.token.safeTransferFrom( @@ -245,10 +236,11 @@ contract ZNSTreasury is AAccessControlled, ARegistryWired, UUPSUpgradeable, IZNS bytes32 domainHash, PaymentConfig memory paymentConfig ) external override { - require( - registry.isOwnerOrOperator(domainHash, msg.sender) || accessController.isRegistrar(msg.sender), - "ZNSTreasury: Not authorized." - ); + if ( + !registry.isOwnerOrOperator(domainHash, msg.sender) + && !accessController.isRegistrar(msg.sender) + ) revert NotAuthorizedForDomain(msg.sender, domainHash); + _setBeneficiary(domainHash, paymentConfig.beneficiary); _setPaymentToken(domainHash, address(paymentConfig.token)); } @@ -291,14 +283,16 @@ contract ZNSTreasury is AAccessControlled, ARegistryWired, UUPSUpgradeable, IZNS } function _setBeneficiary(bytes32 domainHash, address beneficiary) internal { - require(beneficiary != address(0), "ZNSTreasury: beneficiary passed as 0x0 address"); + if (beneficiary == address(0)) + revert ZeroAddressPassed(); paymentConfigs[domainHash].beneficiary = beneficiary; emit BeneficiarySet(domainHash, beneficiary); } function _setPaymentToken(bytes32 domainHash, address paymentToken) internal { - require(paymentToken != address(0), "ZNSTreasury: paymentToken passed as 0x0 address"); + if (paymentToken == address(0)) + revert ZeroAddressPassed(); paymentConfigs[domainHash].token = IERC20(paymentToken); emit PaymentTokenSet(domainHash, paymentToken); diff --git a/contracts/types/ICurvePriceConfig.sol b/contracts/types/ICurvePriceConfig.sol index 295b44462..b721e1a1e 100644 --- a/contracts/types/ICurvePriceConfig.sol +++ b/contracts/types/ICurvePriceConfig.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; /** diff --git a/contracts/types/IDistributionConfig.sol b/contracts/types/IDistributionConfig.sol index 02adc7419..084f07826 100644 --- a/contracts/types/IDistributionConfig.sol +++ b/contracts/types/IDistributionConfig.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { IZNSPricer } from "../types/IZNSPricer.sol"; diff --git a/contracts/types/IZNSPricer.sol b/contracts/types/IZNSPricer.sol index c10900c7b..9f59dbe9e 100644 --- a/contracts/types/IZNSPricer.sol +++ b/contracts/types/IZNSPricer.sol @@ -1,12 +1,23 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - +pragma solidity 0.8.26; /** * @title IZNSPricer.sol * @notice Base interface required to be inherited by all Pricing contracts to work with zNS */ interface IZNSPricer { + /** + * @notice Reverted when someone is trying to buy a subdomain under a parent that is not set up for distribution. + * Specifically it's prices for subdomains. + */ + error ParentPriceConfigNotSet(bytes32 parentHash); + + /** + * @notice Reverted when domain owner is trying to set it's stake fee percentage higher than 100% + (uint256 "10,000"). + */ + error FeePercentageValueTooLarge(uint256 feePercentage, uint256 maximum); + /** * @dev `parentHash` param is here to allow pricer contracts * to have different price configs for different subdomains @@ -38,7 +49,7 @@ interface IZNSPricer { /** * @notice Returns the fee for a given price. * @dev Fees are only supported for PaymentType.STAKE ! - */ + */ function getFeeForPrice( bytes32 parentHash, uint256 price diff --git a/contracts/upgrade-test-mocks/UpgradeMock.sol b/contracts/upgrade-test-mocks/UpgradeMock.sol index 20393f216..38b7957ce 100644 --- a/contracts/upgrade-test-mocks/UpgradeMock.sol +++ b/contracts/upgrade-test-mocks/UpgradeMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; /* solhint-disable */ contract UpgradeMock { diff --git a/contracts/upgrade-test-mocks/distribution/ZNSCurvePricerMock.sol b/contracts/upgrade-test-mocks/distribution/ZNSCurvePricerMock.sol index 507650178..f3bade036 100644 --- a/contracts/upgrade-test-mocks/distribution/ZNSCurvePricerMock.sol +++ b/contracts/upgrade-test-mocks/distribution/ZNSCurvePricerMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSCurvePricer } from "../../price/ZNSCurvePricer.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/upgrade-test-mocks/distribution/ZNSFixedPricerMock.sol b/contracts/upgrade-test-mocks/distribution/ZNSFixedPricerMock.sol index 85565a732..25ff6ea39 100644 --- a/contracts/upgrade-test-mocks/distribution/ZNSFixedPricerMock.sol +++ b/contracts/upgrade-test-mocks/distribution/ZNSFixedPricerMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSFixedPricer } from "../../price/ZNSFixedPricer.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/upgrade-test-mocks/distribution/ZNSRootRegistrarMock.sol b/contracts/upgrade-test-mocks/distribution/ZNSRootRegistrarMock.sol index f153db525..76fd2d202 100644 --- a/contracts/upgrade-test-mocks/distribution/ZNSRootRegistrarMock.sol +++ b/contracts/upgrade-test-mocks/distribution/ZNSRootRegistrarMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSRootRegistrar } from "../../registrar/ZNSRootRegistrar.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/upgrade-test-mocks/distribution/ZNSSubRegistrarMock.sol b/contracts/upgrade-test-mocks/distribution/ZNSSubRegistrarMock.sol index 95269a9fe..eaf21610c 100644 --- a/contracts/upgrade-test-mocks/distribution/ZNSSubRegistrarMock.sol +++ b/contracts/upgrade-test-mocks/distribution/ZNSSubRegistrarMock.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT /* solhint-disable */ -pragma solidity 0.8.18; +pragma solidity 0.8.26; // solhint-disable import { ZNSSubRegistrar } from "../../registrar/ZNSSubRegistrar.sol"; +import { IZNSSubRegistrar } from "../../registrar/IZNSSubRegistrar.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; import { IZNSPricer } from "../../types/IZNSPricer.sol"; import { IZNSRootRegistrar, CoreRegisterArgs } from "../../registrar/IZNSRootRegistrar.sol"; @@ -12,6 +13,7 @@ import { ARegistryWired } from "../../registry/ARegistryWired.sol"; import { UUPSUpgradeable } from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; import { StringUtils } from "../../utils/StringUtils.sol"; import { PaymentConfig } from "../../treasury/IZNSTreasury.sol"; +import { NotAuthorizedForDomain, ZeroAddressPassed, DomainAlreadyExists } from "../../utils/CommonErrors.sol"; enum AccessType { @@ -39,7 +41,12 @@ contract ZNSSubRegistrarMainState { mapping(bytes32 domainHash => DistributionConfig config) public distrConfigs; - mapping(bytes32 domainHash => mapping(address candidate => bool allowed)) public mintlist; + struct Mintlist { + mapping(uint256 idx => mapping(address candidate => bool allowed)) list; + uint256 ownerIndex; + } + + mapping(bytes32 domainHash => Mintlist mintStruct) public mintlist; } @@ -49,18 +56,25 @@ contract ZNSSubRegistrarUpgradeMock is UUPSUpgradeable, ZNSSubRegistrarMainState, UpgradeMock { - using StringUtils for string; + error ParentLockedOrDoesntExist(bytes32 parentHash); + + error SenderNotApprovedForPurchase(bytes32 parentHash, address sender); + modifier onlyOwnerOperatorOrRegistrar(bytes32 domainHash) { - require( - registry.isOwnerOrOperator(domainHash, msg.sender) - || accessController.isRegistrar(msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if ( + !registry.isOwnerOrOperator(domainHash, msg.sender) + && !accessController.isRegistrar(msg.sender) + ) revert NotAuthorizedForDomain(msg.sender, domainHash); _; } + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + function initialize( address _accessController, address _registry, @@ -75,30 +89,35 @@ contract ZNSSubRegistrarUpgradeMock is bytes32 parentHash, string calldata label, address domainAddress, - string memory tokenURI, + string calldata tokenURI, DistributionConfig calldata distrConfig, PaymentConfig calldata paymentConfig ) external returns (bytes32) { + // Confirms string values are only [a-z0-9-] label.validate(); + bytes32 domainHash = hashWithParent(parentHash, label); + if (registry.exists(domainHash)) + revert DomainAlreadyExists(domainHash); + DistributionConfig memory parentConfig = distrConfigs[parentHash]; bool isOwnerOrOperator = registry.isOwnerOrOperator(parentHash, msg.sender); - require( - parentConfig.accessType != AccessType.LOCKED || isOwnerOrOperator, - "ZNSSubRegistrar: Parent domain's distribution is locked or parent does not exist" - ); + if (parentConfig.accessType == AccessType.LOCKED && !isOwnerOrOperator) + revert ParentLockedOrDoesntExist(parentHash); if (parentConfig.accessType == AccessType.MINTLIST) { - require( - mintlist[parentHash][msg.sender], - "ZNSSubRegistrar: Sender is not approved for purchase" - ); + if ( + !mintlist[parentHash] + .list + [mintlist[parentHash].ownerIndex] + [msg.sender] + ) revert SenderNotApprovedForPurchase(parentHash, msg.sender); } CoreRegisterArgs memory coreRegisterArgs = CoreRegisterArgs({ parentHash: parentHash, - domainHash: hashWithParent(parentHash, label), + domainHash: domainHash, label: label, registrant: msg.sender, price: 0, @@ -109,11 +128,6 @@ contract ZNSSubRegistrarUpgradeMock is paymentConfig: paymentConfig }); - require( - !registry.exists(coreRegisterArgs.domainHash), - "ZNSSubRegistrar: Subdomain already exists" - ); - if (!isOwnerOrOperator) { if (coreRegisterArgs.isStakePayment) { (coreRegisterArgs.price, coreRegisterArgs.stakeFee) = IZNSPricer(address(parentConfig.pricerContract)) @@ -138,7 +152,7 @@ contract ZNSSubRegistrarUpgradeMock is setDistributionConfigForDomain(coreRegisterArgs.domainHash, distrConfig); } - return coreRegisterArgs.domainHash; + return domainHash; } function hashWithParent( @@ -157,10 +171,8 @@ contract ZNSSubRegistrarUpgradeMock is bytes32 domainHash, DistributionConfig calldata config ) public onlyOwnerOperatorOrRegistrar(domainHash) { - require( - address(config.pricerContract) != address(0), - "ZNSSubRegistrar: pricerContract can not be 0x0 address" - ); + if (address(config.pricerContract) == address(0)) + revert ZeroAddressPassed(); distrConfigs[domainHash] = config; } @@ -169,15 +181,11 @@ contract ZNSSubRegistrarUpgradeMock is bytes32 domainHash, IZNSPricer pricerContract ) public { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); - require( - address(pricerContract) != address(0), - "ZNSSubRegistrar: pricerContract can not be 0x0 address" - ); + if (address(pricerContract) == address(0)) + revert ZeroAddressPassed(); distrConfigs[domainHash].pricerContract = pricerContract; } @@ -186,26 +194,17 @@ contract ZNSSubRegistrarUpgradeMock is bytes32 domainHash, PaymentType paymentType ) public { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); distrConfigs[domainHash].paymentType = paymentType; } - function _setAccessTypeForDomain( - bytes32 domainHash, - AccessType accessType - ) internal { - distrConfigs[domainHash].accessType = accessType; - } - function setAccessTypeForDomain( bytes32 domainHash, AccessType accessType - ) external onlyOwnerOperatorOrRegistrar(domainHash) { - _setAccessTypeForDomain(domainHash, accessType); + ) public onlyOwnerOperatorOrRegistrar(domainHash) { + distrConfigs[domainHash].accessType = accessType; } function updateMintlistForDomain( @@ -213,29 +212,47 @@ contract ZNSSubRegistrarUpgradeMock is address[] calldata candidates, bool[] calldata allowed ) external { - require( - registry.isOwnerOrOperator(domainHash, msg.sender), - "ZNSSubRegistrar: Not authorized" - ); + if (!registry.isOwnerOrOperator(domainHash, msg.sender)) + revert NotAuthorizedForDomain(msg.sender, domainHash); + + Mintlist storage mintlistForDomain = mintlist[domainHash]; + uint256 ownerIndex = mintlistForDomain.ownerIndex; for (uint256 i; i < candidates.length; i++) { - mintlist[domainHash][candidates[i]] = allowed[i]; + mintlistForDomain.list[ownerIndex][candidates[i]] = allowed[i]; } } + function isMintlistedForDomain( + bytes32 domainHash, + address candidate + ) external view returns (bool) { + uint256 ownerIndex = mintlist[domainHash].ownerIndex; + return mintlist[domainHash].list[ownerIndex][candidate]; + } + + function clearMintlistForDomain(bytes32 domainHash) + public + onlyOwnerOperatorOrRegistrar(domainHash) { + mintlist[domainHash].ownerIndex = mintlist[domainHash].ownerIndex + 1; + } + + function clearMintlistAndLock(bytes32 domainHash) + external + onlyOwnerOperatorOrRegistrar(domainHash) { + setAccessTypeForDomain(domainHash, AccessType.LOCKED); + clearMintlistForDomain(domainHash); + } + function setRegistry(address registry_) public override onlyAdmin { _setRegistry(registry_); } function setRootRegistrar(address registrar_) public onlyAdmin { - require(registrar_ != address(0), "ZNSSubRegistrar: _registrar can not be 0x0 address"); + if (registrar_ == address(0)) revert ZeroAddressPassed(); rootRegistrar = IZNSRootRegistrar(registrar_); } - /** - * @notice To use UUPS proxy we override this function and revert if `msg.sender` isn't authorized - * @param newImplementation The implementation contract to upgrade to - */ // solhint-disable-next-line function _authorizeUpgrade(address newImplementation) internal view override { accessController.checkGovernor(msg.sender); diff --git a/contracts/upgrade-test-mocks/distribution/ZNSTreasuryMock.sol b/contracts/upgrade-test-mocks/distribution/ZNSTreasuryMock.sol index 292bbb424..e6c07bf68 100644 --- a/contracts/upgrade-test-mocks/distribution/ZNSTreasuryMock.sol +++ b/contracts/upgrade-test-mocks/distribution/ZNSTreasuryMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSTreasury } from "../../treasury/ZNSTreasury.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/upgrade-test-mocks/registry/ZNSRegistryMock.sol b/contracts/upgrade-test-mocks/registry/ZNSRegistryMock.sol index 0193e0e3a..9158a59d5 100644 --- a/contracts/upgrade-test-mocks/registry/ZNSRegistryMock.sol +++ b/contracts/upgrade-test-mocks/registry/ZNSRegistryMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSRegistry } from "../../registry/ZNSRegistry.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/upgrade-test-mocks/resolver/ZNSAddressResolverMock.sol b/contracts/upgrade-test-mocks/resolver/ZNSAddressResolverMock.sol index eb8027589..00cb37dbd 100644 --- a/contracts/upgrade-test-mocks/resolver/ZNSAddressResolverMock.sol +++ b/contracts/upgrade-test-mocks/resolver/ZNSAddressResolverMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSAddressResolver } from "../../resolver/ZNSAddressResolver.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/upgrade-test-mocks/token/ZNSDomainTokenMock.sol b/contracts/upgrade-test-mocks/token/ZNSDomainTokenMock.sol index 34facac9a..1089e37cc 100644 --- a/contracts/upgrade-test-mocks/token/ZNSDomainTokenMock.sol +++ b/contracts/upgrade-test-mocks/token/ZNSDomainTokenMock.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity 0.8.26; import { ZNSDomainToken } from "../../token/ZNSDomainToken.sol"; import { UpgradeMock } from "../UpgradeMock.sol"; diff --git a/contracts/utils/CommonErrors.sol b/contracts/utils/CommonErrors.sol new file mode 100644 index 000000000..11b22462f --- /dev/null +++ b/contracts/utils/CommonErrors.sol @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + + +error ZeroAddressPassed(); + +error DomainAlreadyExists(bytes32 domainHash); + +error NotAuthorizedForDomain(address caller, bytes32 domainHash); diff --git a/contracts/utils/StringUtils.sol b/contracts/utils/StringUtils.sol index 99ac5b36f..158ef9197 100644 --- a/contracts/utils/StringUtils.sol +++ b/contracts/utils/StringUtils.sol @@ -1,10 +1,14 @@ // SPDX-License-Identifier: MIT -// Source: +// Forked from: // https://github.com/ensdomains/ens-contracts/blob/master/contracts/ethregistrar/StringUtils.sol -pragma solidity 0.8.18; +pragma solidity 0.8.26; library StringUtils { + error DomainLabelTooLongOrNonexistent(string label); + + error DomainLabelContainsInvalidCharacters(string label); + /** * @dev Returns the length of a given string * @@ -44,21 +48,14 @@ library StringUtils { // solhint-disable-next-line var-name-mixedcase uint256 MAX_INT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff; - require( - length > 0 && length < MAX_INT, - "StringUtils: Domain label too long or nonexistent" - ); + if (length == 0 || length >= MAX_INT) + revert DomainLabelTooLongOrNonexistent(s); - for (uint256 i; i < length;) { + for (uint256 i; i < length; ++i) { bytes1 b = nameBytes[i]; // Valid strings are lower case a-z, 0-9, or a hyphen - require( - (b > 0x60 && b < 0x7B) || (b > 0x2F && b < 0x3A) || b == 0x2D, - "StringUtils: Invalid domain label" - ); - unchecked { - ++i; - } + if (!((b > 0x60 && b < 0x7B) || (b > 0x2F && b < 0x3A) || b == 0x2D)) + revert DomainLabelContainsInvalidCharacters(s); } } -} \ No newline at end of file +} diff --git a/hardhat.config.ts b/hardhat.config.ts index c50ac76ca..e26733e27 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -43,11 +43,11 @@ const config : HardhatUserConfig = { solidity: { compilers: [ { - version: "0.8.18", + version: "0.8.26", settings: { optimizer: { enabled: true, - runs: 200, + runs: 20000, }, }, }, @@ -56,27 +56,27 @@ const config : HardhatUserConfig = { settings: { optimizer: { enabled: true, - runs: 200, + runs: 20000, }, }, }, ], overrides: { "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { - version: "0.8.9", + version: "0.8.20", settings: { optimizer: { enabled: true, - runs: 200, + runs: 20000, }, }, }, "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": { - version: "0.8.9", + version: "0.8.20", settings: { optimizer: { enabled: true, - runs: 200, + runs: 20000, }, }, }, @@ -121,15 +121,26 @@ const config : HardhatUserConfig = { url: `${process.env.DEVNET_RPC_URL}`, chainId: 1, }, + // meowtestnet: { + // url: `${process.env.MEOWTESTNET_RPC_URL}`, + // accounts: [ + // `${process.env.DEPLOYER_PRIVATE_KEY}`, + // ], + // }, }, - defender: { - useDefenderDeploy: false, - apiKey: `${process.env.DEFENDER_KEY}`, - apiSecret: `${process.env.DEFENDER_SECRET}`, - }, - etherscan: { - apiKey: `${process.env.ETHERSCAN_API_KEY}`, - }, + // etherscan: { + // apiKey: `${process.env.ETHERSCAN_API_KEY}`, + // customChains: [ + // { + // network: "meowtestnet", + // chainId: 883424730, + // urls: { + // apiURL: "https://meowchain-testnet-blockscout.eu-north-2.gateway.fm/api/", + // browserURL: "https://meowchain-testnet-blockscout.eu-north-2.gateway.fm/", + // }, + // }, + // ], + // }, sourcify: { // If set to "true", will try to verify the contracts after deployment enabled: false, @@ -150,6 +161,20 @@ const config : HardhatUserConfig = { "oz-proxies/", ], }, + // meowtestnet: { + // url: `${process.env.MEOWTESTNET_RPC_URL}`, + // chainId: 883424730, + // accounts: [ // Comment out for CI, uncomment this when using Sepolia + // `${process.env.DEPLOYER_PRIVATE_KEY}`, + // `${process.env.ZERO_VAULT_PRIVATE_KEY}`, + // `${process.env.TESTNET_PRIVATE_KEY_A}`, + // `${process.env.TESTNET_PRIVATE_KEY_B}`, + // `${process.env.TESTNET_PRIVATE_KEY_C}`, + // `${process.env.TESTNET_PRIVATE_KEY_D}`, + // `${process.env.TESTNET_PRIVATE_KEY_E}`, + // `${process.env.TESTNET_PRIVATE_KEY_F}`, + // ], + // }, }; export default config; diff --git a/package.json b/package.json index 8a525aeae..a2ead6d9e 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "repository": "https://github.com/zer0-os/zNS.git", "engines": { "node": ">=18", - "npm": ">=9" + "npm": ">=10" }, "scripts": { "compile": "hardhat compile", @@ -15,7 +15,7 @@ "lint-ts": "yarn eslint ./test/** ./src/**", "lint": "yarn lint-sol & yarn lint-ts --no-error-on-unmatched-pattern", "clean": "hardhat clean", - "build": "yarn run clean && yarn run compile", + "build": "yarn run clean && yarn run compile && tsc", "postbuild": "yarn save-tag", "typechain": "hardhat typechain", "pretest": "yarn mongo:start", @@ -34,7 +34,9 @@ "mongo:stop": "docker-compose stop", "mongo:down": "docker-compose down", "mongo:drop": "ts-node src/utils/drop-db.ts", - "run-sepolia": "hardhat run src/deploy/run-campaign.ts --network sepolia" + "run-sepolia": "hardhat run src/deploy/run-campaign.ts --network sepolia", + "run-hardhat": "hardhat run src/deploy/run-campaign.ts --network hardhat", + "run-meowtestnet": "hardhat run src/deploy/run-campaign.ts --network meowtestnet" }, "pre-commit": [ "lint" @@ -42,16 +44,16 @@ "devDependencies": { "@ensdomains/ensjs": "2.1.0", "@nomicfoundation/hardhat-chai-matchers": "^2.0.2", - "@nomicfoundation/hardhat-ethers": "^3.0.5", - "@nomicfoundation/hardhat-network-helpers": "^1.0.9", + "@nomicfoundation/hardhat-ethers": "^3.0.6", + "@nomicfoundation/hardhat-network-helpers": "^1.0.11", "@nomicfoundation/hardhat-toolbox": "^4.0.0", - "@nomicfoundation/hardhat-verify": "^2.0.0", - "@openzeppelin/contracts": "4.9.3", + "@nomicfoundation/hardhat-verify": "^2.0.8", + "@openzeppelin/contracts": "^5.0.2", "@openzeppelin/contracts-400": "npm:@openzeppelin/contracts@4.0.0", - "@openzeppelin/contracts-upgradeable": "4.9.3", + "@openzeppelin/contracts-upgradeable": "^5.0.2", "@openzeppelin/contracts-upgradeable-400": "npm:@openzeppelin/contracts-upgradeable@4.0.0", "@openzeppelin/defender-sdk": "^1.7.0", - "@openzeppelin/hardhat-upgrades": "2.5.0", + "@openzeppelin/hardhat-upgrades": "^3.1.1", "@semantic-release/git": "^10.0.1", "@tenderly/hardhat-tenderly": "^2.0.1", "@typechain/ethers-v6": "^0.5.1", @@ -60,25 +62,25 @@ "@types/mocha": "^9.1.0", "@types/node": "^18.15.11", "@zero-tech/eslint-config-cpt": "0.2.7", - "@zero-tech/ztoken": "2.0.0", + "@zero-tech/ztoken": "2.1.0", "chai": "^4.3.10", "eslint": "^8.37.0", "ethers": "^6.9.0", - "hardhat": "^2.19.1", + "hardhat": "^2.22.6", "hardhat-gas-reporter": "^1.0.9", "semantic-release": "^21.0.1", - "solhint": "^4.0.0", - "solidity-coverage": "^0.8.5", + "solhint": "^5.0.1", + "solidity-coverage": "^0.8.12", "solidity-docgen": "^0.6.0-beta.36", "ts-node": "10.9.1", "typechain": "^8.3.2", "typescript": "^5.0.2" }, "dependencies": { - "@zero-tech/zdc": "0.1.3", + "@zero-tech/zdc": "0.1.6", "axios": "^1.4.0", "dotenv": "16.0.3", "mongodb": "^6.1.0", "winston": "^3.11.0" } -} +} \ No newline at end of file diff --git a/src/deploy/campaign/environments.ts b/src/deploy/campaign/environments.ts index 2df9609a1..7c7fdc64a 100644 --- a/src/deploy/campaign/environments.ts +++ b/src/deploy/campaign/environments.ts @@ -76,14 +76,18 @@ export const getConfig = async ({ deployerAddress = await deployer.getAddress(); } + let zeroVaultAddressConf; + if (process.env.ENV_LEVEL === "dev") { - requires(!!zeroVaultAddress, "Must pass `zeroVaultAddress` to `getConfig()` for `dev` environment"); + requires( + !!zeroVaultAddress || !!process.env.ZERO_VAULT_ADDRESS, + "Must pass `zeroVaultAddress` to `getConfig()` for `dev` environment" + ); + zeroVaultAddressConf = zeroVaultAddress || process.env.ZERO_VAULT_ADDRESS; + } else { + zeroVaultAddressConf = process.env.ZERO_VAULT_ADDRESS; } - const zeroVaultAddressConf = process.env.ENV_LEVEL === "dev" - ? zeroVaultAddress! - : process.env.ZERO_VAULT_ADDRESS!; - // Domain Token Values const royaltyReceiver = process.env.ENV_LEVEL !== "dev" ? process.env.ROYALTY_RECEIVER! : zeroVaultAddressConf; const royaltyFraction = @@ -105,11 +109,11 @@ export const getConfig = async ({ domainToken: { name: process.env.DOMAIN_TOKEN_NAME ? process.env.DOMAIN_TOKEN_NAME : ZNS_DOMAIN_TOKEN_NAME, symbol: process.env.DOMAIN_TOKEN_SYMBOL ? process.env.DOMAIN_TOKEN_SYMBOL : ZNS_DOMAIN_TOKEN_SYMBOL, - defaultRoyaltyReceiver: royaltyReceiver, + defaultRoyaltyReceiver: royaltyReceiver!, defaultRoyaltyFraction: royaltyFraction, }, rootPriceConfig: priceConfig, - zeroVaultAddress: zeroVaultAddressConf, + zeroVaultAddress: zeroVaultAddressConf as string, mockMeowToken: process.env.MOCK_MEOW_TOKEN === "true", stakingTokenAddress: process.env.STAKING_TOKEN_ADDRESS!, postDeploy: { diff --git a/src/deploy/campaign/types.ts b/src/deploy/campaign/types.ts index f32096341..e3721cf04 100644 --- a/src/deploy/campaign/types.ts +++ b/src/deploy/campaign/types.ts @@ -13,8 +13,8 @@ import { ZNSRootRegistrar, ZNSSubRegistrar, ZNSTreasury, - MeowToken, } from "../../../typechain"; +import { MeowToken } from "@zero-tech/ztoken/typechain-js"; export type IZNSSigner = HardhatEthersSigner | DefenderRelaySigner | SignerWithAddress; diff --git a/src/deploy/missions/contracts/access-controller.ts b/src/deploy/missions/contracts/access-controller.ts index 5c537bfce..60586a16d 100644 --- a/src/deploy/missions/contracts/access-controller.ts +++ b/src/deploy/missions/contracts/access-controller.ts @@ -4,14 +4,13 @@ import { import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSAccessControllerDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { @@ -27,6 +26,6 @@ IZNSContracts adminAddresses, } = this.config; - return [ governorAddresses, adminAddresses ]; + return [governorAddresses, adminAddresses]; } } diff --git a/src/deploy/missions/contracts/address-resolver.ts b/src/deploy/missions/contracts/address-resolver.ts index a31950656..be22147f6 100644 --- a/src/deploy/missions/contracts/address-resolver.ts +++ b/src/deploy/missions/contracts/address-resolver.ts @@ -5,15 +5,14 @@ import { import { ProxyKinds, ResolverTypes } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; export class ZNSAddressResolverDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/missions/contracts/curve-pricer.ts b/src/deploy/missions/contracts/curve-pricer.ts index ff81b5cab..8dee27dd2 100644 --- a/src/deploy/missions/contracts/curve-pricer.ts +++ b/src/deploy/missions/contracts/curve-pricer.ts @@ -6,14 +6,13 @@ import { ProxyKinds } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSCurvePricerDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/missions/contracts/domain-token.ts b/src/deploy/missions/contracts/domain-token.ts index 2112a7e26..93af75a34 100644 --- a/src/deploy/missions/contracts/domain-token.ts +++ b/src/deploy/missions/contracts/domain-token.ts @@ -6,14 +6,13 @@ import { ProxyKinds } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSDomainTokenDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { @@ -33,7 +32,7 @@ IZNSContracts defaultRoyaltyReceiver, defaultRoyaltyFraction, }, - } = this.config as IZNSCampaignConfig; + } = this.config; return [ await accessController.getAddress(), name, symbol, defaultRoyaltyReceiver, defaultRoyaltyFraction ]; } diff --git a/src/deploy/missions/contracts/fixed-pricer.ts b/src/deploy/missions/contracts/fixed-pricer.ts index 63308608f..f8857e66e 100644 --- a/src/deploy/missions/contracts/fixed-pricer.ts +++ b/src/deploy/missions/contracts/fixed-pricer.ts @@ -6,14 +6,13 @@ import { import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSFixedPricerDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/missions/contracts/meow-token/meow-token.ts b/src/deploy/missions/contracts/meow-token/meow-token.ts index bb7f167ff..c75001bd1 100644 --- a/src/deploy/missions/contracts/meow-token/meow-token.ts +++ b/src/deploy/missions/contracts/meow-token/meow-token.ts @@ -8,8 +8,9 @@ import { ethers } from "ethers"; import { znsNames } from "../names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../../campaign/types"; +import { MeowToken__factory } from "@zero-tech/ztoken/typechain-js"; +import meowArtifact from "@zero-tech/ztoken/artifacts/contracts/MeowToken.sol/MeowToken.json"; export const meowTokenName = "MEOW"; @@ -19,7 +20,7 @@ export const meowTokenSymbol = "MEOW"; export class MeowTokenDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { @@ -33,7 +34,7 @@ IZNSContracts constructor (args : IDeployMissionArgs< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >) { super(args); @@ -65,10 +66,13 @@ IZNSContracts this.logger.debug(`Writing ${this.contractName} to DB...`); - const baseContract = await this.campaign.deployer.getContractObject( - this.contractName, - this.config.stakingTokenAddress as string, - ); + const factory = new MeowToken__factory(this.config.deployAdmin); + const baseContract = factory.attach(this.config.stakingTokenAddress); + // TODO remove! + // const baseContract = await this.campaign.deployer.getContractObject( + // this.contractName, + // this.config.stakingTokenAddress as string, + // ); await this.saveToDB(baseContract); @@ -81,6 +85,10 @@ IZNSContracts } } + getArtifact () { + return meowArtifact; + } + async deployArgs () : Promise { return [meowTokenName, meowTokenSymbol]; } @@ -90,7 +98,7 @@ IZNSContracts this.logger.debug(`${this.contractName} ${msg} post deploy sequence`); - return this.config.mockMeowToken as boolean; + return this.config.mockMeowToken ; } async postDeploy () { diff --git a/src/deploy/missions/contracts/registry.ts b/src/deploy/missions/contracts/registry.ts index 649359e9d..f9b99f6bd 100644 --- a/src/deploy/missions/contracts/registry.ts +++ b/src/deploy/missions/contracts/registry.ts @@ -6,14 +6,13 @@ import { ProxyKinds } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSRegistryDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/missions/contracts/root-registrar.ts b/src/deploy/missions/contracts/root-registrar.ts index 6c1a7bae5..0bfd60b59 100644 --- a/src/deploy/missions/contracts/root-registrar.ts +++ b/src/deploy/missions/contracts/root-registrar.ts @@ -6,14 +6,13 @@ import { ProxyKinds, REGISTRAR_ROLE } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSRootRegistrarDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/missions/contracts/sub-registrar.ts b/src/deploy/missions/contracts/sub-registrar.ts index 6f62a6463..b1d0b0594 100644 --- a/src/deploy/missions/contracts/sub-registrar.ts +++ b/src/deploy/missions/contracts/sub-registrar.ts @@ -6,14 +6,13 @@ import { ProxyKinds, REGISTRAR_ROLE } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSSubRegistrarDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/missions/contracts/treasury.ts b/src/deploy/missions/contracts/treasury.ts index 829dcdf83..86d7a612b 100644 --- a/src/deploy/missions/contracts/treasury.ts +++ b/src/deploy/missions/contracts/treasury.ts @@ -6,14 +6,13 @@ import { ProxyKinds } from "../../constants"; import { znsNames } from "./names"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; -import { IZNSContracts } from "../../campaign/types"; +import { IZNSCampaignConfig, IZNSContracts } from "../../campaign/types"; export class ZNSTreasuryDM extends BaseDeployMission< HardhatRuntimeEnvironment, SignerWithAddress, -DefenderRelayProvider, +IZNSCampaignConfig, IZNSContracts > { proxyData = { diff --git a/src/deploy/run-campaign.ts b/src/deploy/run-campaign.ts index da08f8450..c11d57554 100644 --- a/src/deploy/run-campaign.ts +++ b/src/deploy/run-campaign.ts @@ -1,23 +1,14 @@ import { getConfig } from "./campaign/environments"; import { runZnsCampaign } from "./zns-campaign"; -import { Defender } from "@openzeppelin/defender-sdk"; +import * as hre from "hardhat"; import { getLogger } from "@zero-tech/zdc"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; const logger = getLogger(); const runCampaign = async () => { - const credentials = { - apiKey: process.env.DEFENDER_KEY, - apiSecret: process.env.DEFENDER_SECRET, - relayerApiKey: process.env.RELAYER_KEY, - relayerApiSecret: process.env.RELAYER_SECRET, - }; - const client = new Defender(credentials); - - const provider = client.relaySigner.getProvider(); - const deployer = client.relaySigner.getSigner(provider, { speed: "fast" }); + const [ deployer ] = await hre.ethers.getSigners(); const config = await getConfig({ deployer: deployer as unknown as SignerWithAddress, @@ -25,7 +16,6 @@ const runCampaign = async () => { await runZnsCampaign({ config, - provider, }); }; diff --git a/src/deploy/zns-campaign.ts b/src/deploy/zns-campaign.ts index d3bebab49..0d3a1f5c3 100644 --- a/src/deploy/zns-campaign.ts +++ b/src/deploy/zns-campaign.ts @@ -1,6 +1,5 @@ import * as hre from "hardhat"; import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; import { HardhatDeployer, DeployCampaign, @@ -20,14 +19,12 @@ import { getZnsMongoAdapter } from "./mongo"; export const runZnsCampaign = async ({ config, - provider, dbVersion, deployer, } : { config : IZNSCampaignConfig; - provider ?: DefenderRelayProvider; dbVersion ?: string; - deployer ?: HardhatDeployer; + deployer ?: HardhatDeployer; }) => { hre.upgrades.silenceWarnings(); @@ -38,7 +35,6 @@ export const runZnsCampaign = async ({ hre, signer: config.deployAdmin, env: config.env, - provider, }); } @@ -47,7 +43,7 @@ export const runZnsCampaign = async ({ const campaign = new DeployCampaign< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >({ missions: [ diff --git a/test/DeployCampaign.integration.test.ts b/test/DeployCampaign.integration.test.ts index 55ec96846..abe782552 100644 --- a/test/DeployCampaign.integration.test.ts +++ b/test/DeployCampaign.integration.test.ts @@ -16,7 +16,6 @@ import { registerRootDomainBulk, registerSubdomainBulk, } from "./helpers/deploy-helpers"; -import { Defender } from "@openzeppelin/defender-sdk"; import { IZNSCampaignConfig, IZNSContracts } from "../src/deploy/campaign/types"; @@ -74,27 +73,8 @@ describe("zNS + zDC Single Integration Test", () => { // Reads `ENV_LEVEL` environment variable to determine rules to be enforced - let deployer; - let provider; - - if (hre.network.name === "hardhat") { - deployer = deployAdmin; - provider = new hre.ethers.JsonRpcProvider(process.env.SEPOLIA_RPC_URL); - } else { - const credentials = { - apiKey: process.env.DEFENDER_KEY, - apiSecret: process.env.DEFENDER_SECRET, - relayerApiKey: process.env.RELAYER_KEY, - relayerApiSecret: process.env.RELAYER_SECRET, - }; - - const client = new Defender(credentials); - provider = client.relaySigner.getProvider(); - deployer = client.relaySigner.getSigner(provider, { speed: "fast" }); - } - config = await getConfig({ - deployer: deployer as unknown as SignerWithAddress, + deployer: deployAdmin, zeroVaultAddress: zeroVault.address, }); diff --git a/test/DeployCampaignInt.test.ts b/test/DeployCampaignInt.test.ts index 2b546ad85..98bf69e07 100644 --- a/test/DeployCampaignInt.test.ts +++ b/test/DeployCampaignInt.test.ts @@ -45,7 +45,6 @@ import { exec } from "child_process"; import { saveTag } from "../src/utils/git-tag/save-tag"; import { IZNSCampaignConfig, IZNSContracts } from "../src/deploy/campaign/types"; import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { DefenderRelayProvider } from "@openzeppelin/defender-sdk-relay-signer-client/lib/ethers"; import { getZnsMongoAdapter } from "../src/deploy/mongo"; @@ -121,7 +120,7 @@ describe("Deploy Campaign Test", () => { campaignConfig.mockMeowToken = false; // deploy MeowToken contract - const factory = await hre.ethers.getContractFactory("MeowToken"); + const factory = await hre.ethers.getContractFactory("MeowTokenMock"); const meow = await hre.upgrades.deployProxy( factory, [meowTokenName, meowTokenSymbol], @@ -200,7 +199,7 @@ describe("Deploy Campaign Test", () => { missionList : Array, IZNSContracts >>; placeOfFailure : string; @@ -211,14 +210,13 @@ describe("Deploy Campaign Test", () => { callback ?: (failingCampaign : DeployCampaign< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >) => Promise; }) => { const deployer = new HardhatDeployer< HardhatRuntimeEnvironment, - SignerWithAddress, - DefenderRelayProvider + SignerWithAddress >({ hre, signer: deployAdmin, @@ -234,7 +232,7 @@ describe("Deploy Campaign Test", () => { const failingCampaign = new DeployCampaign< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >({ missions: missionList, @@ -471,7 +469,7 @@ describe("Deploy Campaign Test", () => { const checkPostDeploy = async (failingCampaign : DeployCampaign< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >) => { const { @@ -592,7 +590,7 @@ describe("Deploy Campaign Test", () => { const checkPostDeploy = async (failingCampaign : DeployCampaign< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >) => { const { @@ -865,7 +863,7 @@ describe("Deploy Campaign Test", () => { let campaign : DeployCampaign< HardhatRuntimeEnvironment, SignerWithAddress, - DefenderRelayProvider, + IZNSCampaignConfig, IZNSContracts >; @@ -1084,8 +1082,7 @@ describe("Deploy Campaign Test", () => { const verifyData : Array<{ address : string; ctorArgs ?: TDeployArgs; }> = []; class HardhatDeployerMock extends HardhatDeployer< HardhatRuntimeEnvironment, - SignerWithAddress, - DefenderRelayProvider + SignerWithAddress > { async etherscanVerify (args : { address : string; @@ -1127,8 +1124,7 @@ describe("Deploy Campaign Test", () => { let tenderlyData : Array = []; class HardhatDeployerMock extends HardhatDeployer< HardhatRuntimeEnvironment, - SignerWithAddress, - DefenderRelayProvider + SignerWithAddress > { async tenderlyPush (contracts : Array) { tenderlyData = contracts; diff --git a/test/ZNSAccessController.test.ts b/test/ZNSAccessController.test.ts index c2791c6d2..63c1bff7d 100644 --- a/test/ZNSAccessController.test.ts +++ b/test/ZNSAccessController.test.ts @@ -1,9 +1,8 @@ import * as hre from "hardhat"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; import { ZNSAccessController } from "../typechain"; -import { deployAccessController } from "./helpers"; +import { AC_UNAUTHORIZED_ERR, deployAccessController, ZERO_ADDRESS_ERR } from "./helpers"; import { expect } from "chai"; -import { getAccessRevertMsg } from "./helpers/errors"; import { ADMIN_ROLE, EXECUTOR_ROLE, GOVERNOR_ROLE, REGISTRAR_ROLE } from "../src/deploy/constants"; import { ethers } from "hardhat"; @@ -55,7 +54,7 @@ describe("ZNSAccessController", () => { governorAddresses: [ ethers.ZeroAddress ], adminAddresses: [ ethers.ZeroAddress ], }) - ).to.be.revertedWith("ZNSAccessController: Can't grant role to zero address"); + ).to.be.revertedWithCustomError(accessController, ZERO_ADDRESS_ERR); }); }); @@ -101,9 +100,8 @@ describe("ZNSAccessController", () => { const [ { address: newAdmin } ] = randomAccs; await expect( accessController.connect(admin).grantRole(ADMIN_ROLE, newAdmin) - ).to.be.revertedWith( - getAccessRevertMsg(admin.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(admin.address, GOVERNOR_ROLE); }); it("ADMIN_ROLE should NOT be able to revoke ADMIN_ROLE", async () => { @@ -111,9 +109,8 @@ describe("ZNSAccessController", () => { const [ { address: existingAdmin } ] = adminAccs; await expect( accessController.connect(admin).revokeRole(ADMIN_ROLE, existingAdmin) - ).to.be.revertedWith( - getAccessRevertMsg(admin.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(admin.address, GOVERNOR_ROLE); }); it("ADMIN_ROLE should NOT be able to grant GOVERNOR_ROLE", async () => { @@ -121,9 +118,8 @@ describe("ZNSAccessController", () => { const [ { address: newGovernor } ] = randomAccs; await expect( accessController.connect(admin).grantRole(GOVERNOR_ROLE, newGovernor) - ).to.be.revertedWith( - getAccessRevertMsg(admin.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(admin.address, GOVERNOR_ROLE); }); it("ADMIN_ROLE should NOT be able to revoke GOVERNOR_ROLE", async () => { @@ -131,9 +127,8 @@ describe("ZNSAccessController", () => { const [ { address: existingGovernor } ] = governorAccs; await expect( accessController.connect(admin).revokeRole(GOVERNOR_ROLE, existingGovernor) - ).to.be.revertedWith( - getAccessRevertMsg(admin.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(admin.address, GOVERNOR_ROLE); }); it("ADMIN_ROLE should be able to grant REGISTRAR_ROLE", async () => { @@ -180,9 +175,8 @@ describe("ZNSAccessController", () => { const [ random ] = randomAccs; await expect( accessController.connect(random).setRoleAdmin(REGISTRAR_ROLE, EXECUTOR_ROLE) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, GOVERNOR_ROLE); }); }); @@ -218,36 +212,32 @@ describe("ZNSAccessController", () => { const [ random ] = randomAccs; await expect( accessController.connect(random).checkGovernor(random.address) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, GOVERNOR_ROLE); }); it("Should revert if account does not have ADMIN_ROLE", async () => { const [ random ] = randomAccs; await expect( accessController.connect(random).checkAdmin(random.address) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); it("Should revert if account does not have REGISTRAR_ROLE", async () => { const [ random ] = randomAccs; await expect( accessController.connect(random).checkRegistrar(random.address) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, REGISTRAR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, REGISTRAR_ROLE); }); it("Should revert if account does not have EXECUTOR_ROLE", async () => { const [ random ] = randomAccs; await expect( accessController.connect(random).checkExecutor(random.address) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, EXECUTOR_ROLE) - ); + ).to.be.revertedWithCustomError(accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, EXECUTOR_ROLE); }); }); }); diff --git a/test/ZNSAddressResolver.test.ts b/test/ZNSAddressResolver.test.ts index 3b1342810..22893cb7c 100644 --- a/test/ZNSAddressResolver.test.ts +++ b/test/ZNSAddressResolver.test.ts @@ -14,14 +14,14 @@ import { GOVERNOR_ROLE, REGISTRAR_ROLE, deployZNS, - getAccessRevertMsg, - validateUpgrade, INITIALIZED_ERR, + validateUpgrade, INITIALIZED_ERR, AC_UNAUTHORIZED_ERR, NOT_AUTHORIZED_ERR, } from "./helpers"; import { getProxyImplAddress } from "./helpers/utils"; // eslint-disable-next-line @typescript-eslint/no-var-requires const { expect } = require("chai"); + describe("ZNSAddressResolver", () => { let deployer : SignerWithAddress; let mockRegistrar : SignerWithAddress; @@ -71,7 +71,7 @@ describe("ZNSAddressResolver", () => { operator.address, mockRegistrar.address, ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); it("Should get the AddressResolver", async () => { // Copy of registry tests @@ -104,9 +104,8 @@ describe("ZNSAddressResolver", () => { it("Should revert when setRegistry() without ADMIN_ROLE", async () => { await expect( zns.addressResolver.connect(operator).setRegistry(operator.address) - ).to.be.revertedWith( - getAccessRevertMsg(operator.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(operator.address, ADMIN_ROLE); }); it("Should setAccessController() correctly with ADMIN_ROLE", async () => { @@ -120,15 +119,14 @@ describe("ZNSAddressResolver", () => { it("Should revert when setAccessController() without ADMIN_ROLE", async () => { await expect( zns.addressResolver.connect(operator).setAccessController(operator.address) - ).to.be.revertedWith( - getAccessRevertMsg(operator.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(operator.address, ADMIN_ROLE); }); it("Should not allow non-owner address to setAddress", async () => { await expect( zns.addressResolver.connect(user).setAddress(wilderDomainHash, user.address) - ).to.be.revertedWith("ZNSAddressResolver: Not authorized for this domain"); + ).to.be.revertedWithCustomError(zns.addressResolver, NOT_AUTHORIZED_ERR); }); it("Should allow owner to setAddress and emit event", async () => { @@ -218,7 +216,10 @@ describe("ZNSAddressResolver", () => { await zns.accessController.hasRole(GOVERNOR_ROLE, deployer.address) ).to.be.true; - const upgradeTx = zns.domainToken.connect(deployer).upgradeTo(await newAddressResolver.getAddress()); + const upgradeTx = zns.domainToken.connect(deployer).upgradeToAndCall( + await newAddressResolver.getAddress(), + "0x" + ); await expect(upgradeTx).to.not.be.reverted; }); @@ -233,15 +234,13 @@ describe("ZNSAddressResolver", () => { // Confirm the operator is not a governor await expect( zns.accessController.checkGovernor(operator.address) - ).to.be.revertedWith( - getAccessRevertMsg(operator.address, GOVERNOR_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(operator.address, GOVERNOR_ROLE); - const upgradeTx = zns.domainToken.connect(operator).upgradeTo(await newAddressResolver.getAddress()); + const upgradeTx = zns.domainToken.connect(operator).upgradeToAndCall(await newAddressResolver.getAddress(), "0x"); - await expect(upgradeTx).to.be.revertedWith( - getAccessRevertMsg(operator.address, GOVERNOR_ROLE) - ); + await expect(upgradeTx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(operator.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { diff --git a/test/ZNSCurvePricer.test.ts b/test/ZNSCurvePricer.test.ts index 3b3d31c65..8c2722889 100644 --- a/test/ZNSCurvePricer.test.ts +++ b/test/ZNSCurvePricer.test.ts @@ -6,13 +6,13 @@ import { deployZNS, getCurvePrice, DEFAULT_PRECISION_MULTIPLIER, - CURVE_PRICE_CONFIG_ERR, + INVALID_PRICE_CONFIG_ERR, validateUpgrade, PaymentType, - NOT_AUTHORIZED_REG_WIRED_ERR, - CURVE_NO_ZERO_PRECISION_MULTIPLIER_ERR, + NOT_AUTHORIZED_ERR, + INVALID_MULTIPLIER_ERR, INVALID_LENGTH_ERR, - INVALID_NAME_ERR, INITIALIZED_ERR, + INVALID_LABEL_ERR, INITIALIZED_ERR, AC_UNAUTHORIZED_ERR, ZERO_ADDRESS_ERR, FEE_TOO_LARGE_ERR, } from "./helpers"; import { AccessType, @@ -20,9 +20,6 @@ import { DEFAULT_PRICE_CONFIG, DEFAULT_PROTOCOL_FEE_PERCENT, } from "./helpers/constants"; -import { - getAccessRevertMsg, -} from "./helpers/errors"; import { ADMIN_ROLE, GOVERNOR_ROLE } from "../src/deploy/constants"; import { ZNSCurvePricer, ZNSCurvePricerUpgradeMock__factory, ZNSCurvePricer__factory } from "../typechain"; import { registrationWithSetup } from "./helpers/register-setup"; @@ -94,7 +91,7 @@ describe("ZNSCurvePricer", () => { await zns.registry.getAddress(), DEFAULT_PRICE_CONFIG ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); it("Confirms values were initially set correctly", async () => { @@ -132,11 +129,17 @@ describe("ZNSCurvePricer", () => { }); it("Reverts for a label with no length if label validation is not skipped", async () => { - await expect(zns.curvePricer.getPrice(domainHash, "", false)).to.be.revertedWith(INVALID_LENGTH_ERR); + await expect(zns.curvePricer.getPrice(domainHash, "", false)).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_LENGTH_ERR + ); }); it("Reverts for invalid label if label validation is not skipped", async () => { - await expect(zns.curvePricer.getPrice(domainHash, "wilder!", false)).to.be.revertedWith(INVALID_NAME_ERR); + await expect(zns.curvePricer.getPrice(domainHash, "wilder!", false)).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_LABEL_ERR + ); }); it("Returns the base price for domains that are equal to the base length", async () => { @@ -282,10 +285,15 @@ describe("ZNSCurvePricer", () => { const labelC = "!%$#^*?!#👍3^29"; const labelD = "wo.rld"; - await expect(zns.curvePricer.getPrice(domainHash, labelA, false)).to.be.revertedWith(INVALID_NAME_ERR); - await expect(zns.curvePricer.getPrice(domainHash, labelB, false)).to.be.revertedWith(INVALID_NAME_ERR); - await expect(zns.curvePricer.getPrice(domainHash, labelC, false)).to.be.revertedWith(INVALID_NAME_ERR); - await expect(zns.curvePricer.getPrice(domainHash, labelD, false)).to.be.revertedWith(INVALID_NAME_ERR); + + await expect(zns.curvePricer.getPrice(domainHash, labelA, false)) + .to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); + await expect(zns.curvePricer.getPrice(domainHash, labelB, false)) + .to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); + await expect(zns.curvePricer.getPrice(domainHash, labelC, false)) + .to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); + await expect(zns.curvePricer.getPrice(domainHash, labelD, false)) + .to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); }); it("Should set the config for any existing domain hash, including 0x0", async () => { @@ -337,7 +345,10 @@ describe("ZNSCurvePricer", () => { await expect( zns.curvePricer.connect(user).setPriceConfig(domainHash, newConfig) - ).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_PRICE_CONFIG_ERR + ); }); it("Cannot go below the set minPrice", async () => { @@ -354,7 +365,10 @@ describe("ZNSCurvePricer", () => { await expect( zns.curvePricer.connect(user).setPriceConfig(domainHash, newConfig) - ).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_PRICE_CONFIG_ERR + ); }); it("Should revert if called by anyone other than owner or operator", async () => { @@ -370,11 +384,17 @@ describe("ZNSCurvePricer", () => { await expect( zns.curvePricer.connect(randomAcc).setPriceConfig(domainHash, newConfig) - ).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + NOT_AUTHORIZED_ERR + ); await expect( zns.curvePricer.connect(randomAcc).setPriceConfig(ZeroHash, newConfig) - ).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + NOT_AUTHORIZED_ERR + ); }); it("Should emit PriceConfigSet event with correct parameters", async () => { @@ -414,7 +434,7 @@ describe("ZNSCurvePricer", () => { const tx = zns.curvePricer.connect(user).setPriceConfig(domainHash, newConfig); - await expect(tx).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, INVALID_PRICE_CONFIG_ERR); }); }); @@ -432,7 +452,7 @@ describe("ZNSCurvePricer", () => { const newMaxPrice = ethers.parseEther("0.7"); const tx = zns.curvePricer.connect(admin).setMaxPrice(domainHash, newMaxPrice); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, NOT_AUTHORIZED_ERR); }); it("Allows setting the max price to zero", async () => { @@ -456,7 +476,10 @@ describe("ZNSCurvePricer", () => { const newMaxPrice = ethers.parseEther("500"); await expect( zns.curvePricer.connect(user).setMaxPrice(domainHash, newMaxPrice) - ).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_PRICE_CONFIG_ERR + ); }); it("Causes any length domain to have a price of 0 if the maxPrice is 0", async () => { @@ -512,7 +535,7 @@ describe("ZNSCurvePricer", () => { const newMinPrice = ethers.parseEther("0.1"); const tx = zns.curvePricer.connect(admin).setMinPrice(domainHash, newMinPrice); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, NOT_AUTHORIZED_ERR); }); it("Allows setting to zero", async () => { @@ -567,7 +590,10 @@ describe("ZNSCurvePricer", () => { const newMinPrice = DEFAULT_PRICE_CONFIG.minPrice + ethers.parseEther("231"); await expect( zns.curvePricer.connect(user).setMinPrice(domainHash, newMinPrice) - ).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_PRICE_CONFIG_ERR + ); }); }); @@ -586,14 +612,14 @@ describe("ZNSCurvePricer", () => { const tx = zns.curvePricer.connect(admin).setMinPrice(domainHash, newMultiplier); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, NOT_AUTHORIZED_ERR); }); it("Fails when setting to zero", async () => { const zeroMultiplier = BigInt("0"); const tx = zns.curvePricer.connect(user).setPrecisionMultiplier(domainHash, zeroMultiplier); - await expect(tx).to.be.revertedWith(CURVE_NO_ZERO_PRECISION_MULTIPLIER_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, INVALID_MULTIPLIER_ERR); }); it("Successfuly sets the precision multiplier when above 0", async () => { @@ -630,8 +656,9 @@ describe("ZNSCurvePricer", () => { const newMultiplier = ethers.parseEther("100"); await expect( zns.curvePricer.connect(user).setPrecisionMultiplier(domainHash, newMultiplier) - ).to.be.revertedWith( - "ZNSCurvePricer: precisionMultiplier cannot be greater than 10^18" + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_MULTIPLIER_ERR ); }); }); @@ -650,7 +677,7 @@ describe("ZNSCurvePricer", () => { const newLength = 5; const tx = zns.curvePricer.connect(admin).setBaseLength(domainHash, newLength); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, NOT_AUTHORIZED_ERR); }); it("Allows setting the base length to zero", async () => { @@ -804,7 +831,10 @@ describe("ZNSCurvePricer", () => { const newBaseLength = DEFAULT_PRICE_CONFIG.baseLength - 1n; await expect( zns.curvePricer.connect(user).setBaseLength(domainHash, newBaseLength) - ).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_PRICE_CONFIG_ERR + ); }); }); @@ -822,7 +852,7 @@ describe("ZNSCurvePricer", () => { const newLength = 5; const tx = zns.curvePricer.connect(admin).setMaxLength(domainHash, newLength); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, NOT_AUTHORIZED_ERR); }); it("Allows setting the max length to zero", async () => { @@ -861,7 +891,10 @@ describe("ZNSCurvePricer", () => { const newMaxLength = DEFAULT_PRICE_CONFIG.maxLength + 10n; await expect( zns.curvePricer.connect(user).setMaxLength(domainHash, newMaxLength) - ).to.be.revertedWith(CURVE_PRICE_CONFIG_ERR); + ).to.be.revertedWithCustomError( + zns.curvePricer, + INVALID_PRICE_CONFIG_ERR + ); }); }); @@ -878,14 +911,17 @@ describe("ZNSCurvePricer", () => { const newFeePerc = BigInt(222); const tx = zns.curvePricer.connect(admin) .setFeePercentage(domainHash, newFeePerc); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_WIRED_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.curvePricer, NOT_AUTHORIZED_ERR); }); it("should revert when trying to set feePercentage higher than PERCENTAGE_BASIS", async () => { const newFeePerc = BigInt(10001); await expect( zns.curvePricer.connect(user).setFeePercentage(domainHash, newFeePerc) - ).to.be.revertedWith("ZNSCurvePricer: feePercentage cannot be greater than PERCENTAGE_BASIS"); + ).to.be.revertedWithCustomError( + zns.curvePricer, + FEE_TOO_LARGE_ERR + ).withArgs(newFeePerc, 10000n); }); }); @@ -914,15 +950,15 @@ describe("ZNSCurvePricer", () => { it("Disallows an unauthorized user to set the access controller", async () => { const tx = zns.curvePricer.connect(user).setAccessController(randomAcc.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Disallows setting the access controller to the zero address", async () => { const tx = zns.curvePricer.connect(admin).setAccessController(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith( - "AC: _accessController is 0x0 address" + await expect(tx).to.be.revertedWithCustomError( + zns.curvePricer, + ZERO_ADDRESS_ERR ); }); }); @@ -942,9 +978,8 @@ describe("ZNSCurvePricer", () => { it("Should NOT set the registry if called by anyone other than ADMIN_ROLE", async () => { const tx = zns.curvePricer.connect(user).setRegistry(randomAcc.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); }); @@ -974,7 +1009,10 @@ describe("ZNSCurvePricer", () => { // Confirm the deployer is a governor, as set in `deployZNS` helper await expect(zns.accessController.checkGovernor(deployer.address)).to.not.be.reverted; - const tx = zns.curvePricer.connect(deployer).upgradeTo(await newCurvePricer.getAddress()); + const tx = zns.curvePricer.connect(deployer).upgradeToAndCall( + await newCurvePricer.getAddress(), + "0x" + ); await expect(tx).to.not.be.reverted; }); @@ -987,11 +1025,13 @@ describe("ZNSCurvePricer", () => { // Confirm the account is not a governor await expect(zns.accessController.checkGovernor(randomAcc.address)).to.be.reverted; - const tx = zns.curvePricer.connect(randomAcc).upgradeTo(await newCurvePricer.getAddress()); - - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(randomAcc.address, GOVERNOR_ROLE) + const tx = zns.curvePricer.connect(randomAcc).upgradeToAndCall( + await newCurvePricer.getAddress(), + "0x" ); + + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomAcc.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { diff --git a/test/ZNSDomainToken.test.ts b/test/ZNSDomainToken.test.ts index 46484e0c6..fc0fe73f8 100644 --- a/test/ZNSDomainToken.test.ts +++ b/test/ZNSDomainToken.test.ts @@ -10,14 +10,13 @@ import { ADMIN_ROLE, REGISTRAR_ROLE, GOVERNOR_ROLE, - getAccessRevertMsg, - INVALID_TOKENID_ERC_ERR, + NONEXISTENT_TOKEN_ERC_ERR, deployZNS, validateUpgrade, ZNS_DOMAIN_TOKEN_NAME, ZNS_DOMAIN_TOKEN_SYMBOL, INITIALIZED_ERR, - DEFAULT_PERCENTAGE_BASIS, DEFAULT_ROYALTY_FRACTION, + DEFAULT_PERCENTAGE_BASIS, DEFAULT_ROYALTY_FRACTION, AC_UNAUTHORIZED_ERR, } from "./helpers"; import { DeployZNSParams, IZNSContractsLocal } from "./helpers/types"; import { getProxyImplAddress } from "./helpers/utils"; @@ -64,7 +63,7 @@ describe("ZNSDomainToken", () => { ZNS_DOMAIN_TOKEN_SYMBOL, zns.zeroVaultAddress, DEFAULT_ROYALTY_FRACTION - )).to.be.revertedWith(INITIALIZED_ERR); + )).to.be.revertedWithCustomError(zns.domainToken, INITIALIZED_ERR); }); it("Should NOT let initialize the implementation contract", async () => { @@ -80,7 +79,7 @@ describe("ZNSDomainToken", () => { zns.zeroVaultAddress, DEFAULT_ROYALTY_FRACTION ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); describe("External functions", () => { @@ -130,13 +129,11 @@ describe("ZNSDomainToken", () => { it("Should revert when registering (minting) if caller does not have REGISTRAR_ROLE", async () => { const tokenId = BigInt("1"); - await expect( - zns.domainToken - .connect(caller) - .register(caller.address, tokenId, randomTokenURI) - ).to.be.revertedWith( - getAccessRevertMsg(caller.address, REGISTRAR_ROLE) - ); + await expect(zns.domainToken + .connect(caller) + .register(caller.address, tokenId, randomTokenURI)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address,REGISTRAR_ROLE); }); it("Revokes a token", async () => { @@ -161,7 +158,10 @@ describe("ZNSDomainToken", () => { ); // Verify token has been burned - await expect(zns.domainToken.ownerOf(tokenId)).to.be.revertedWith(INVALID_TOKENID_ERC_ERR); + await expect(zns.domainToken.ownerOf(tokenId)).to.be.revertedWithCustomError( + zns.domainToken, + NONEXISTENT_TOKEN_ERC_ERR + ); }); }); @@ -172,9 +172,8 @@ describe("ZNSDomainToken", () => { .connect(caller) .register(caller.address, tokenId, randomTokenURI); - await expect(registerTx).to.be.revertedWith( - getAccessRevertMsg(caller.address, REGISTRAR_ROLE) - ); + await expect(registerTx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address,REGISTRAR_ROLE); }); it("Only authorized can revoke a token", async () => { @@ -193,9 +192,8 @@ describe("ZNSDomainToken", () => { // Revoke domain const tx = zns.domainToken.connect(caller).revoke(tokenId); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(caller.address, REGISTRAR_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address,REGISTRAR_ROLE); // Verify token has not been burned expect(await zns.domainToken.ownerOf(tokenId)).to.equal(caller.address); @@ -207,11 +205,9 @@ describe("ZNSDomainToken", () => { }); it("Should revert when setting access controller if caller does not have ADMIN_ROLE", async () => { - await expect( - zns.domainToken.connect(caller).setAccessController(caller.address) - ).to.be.revertedWith( - getAccessRevertMsg(caller.address, ADMIN_ROLE) - ); + await expect(zns.domainToken.connect(caller).setAccessController(caller.address)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address,ADMIN_ROLE); }); }); @@ -293,11 +289,9 @@ describe("ZNSDomainToken", () => { }); it("#setDefaultRoyalty() should revert if called by anyone other than ADMIN_ROLE", async () => { - await expect( - zns.domainToken.connect(caller).setDefaultRoyalty(beneficiary.address, 100) - ).to.be.revertedWith( - getAccessRevertMsg(caller.address, ADMIN_ROLE) - ); + await expect(zns.domainToken.connect(caller).setDefaultRoyalty(beneficiary.address, 100)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address,ADMIN_ROLE); }); it("#setTokenRoyalty() should revert if called by anyone other than ADMIN_ROLE", async () => { @@ -305,11 +299,9 @@ describe("ZNSDomainToken", () => { const tokenId = BigInt("777356"); await zns.domainToken.connect(mockRegistrar).register(deployer.address, tokenId, randomTokenURI); - await expect( - zns.domainToken.connect(caller).setTokenRoyalty(tokenId, beneficiary.address, 100) - ).to.be.revertedWith( - getAccessRevertMsg(caller.address, ADMIN_ROLE) - ); + await expect(zns.domainToken.connect(caller).setTokenRoyalty(tokenId, beneficiary.address, 100)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address, ADMIN_ROLE); }); }); @@ -441,21 +433,17 @@ describe("ZNSDomainToken", () => { await zns.domainToken.connect(mockRegistrar).register(caller.address, tokenId, tokenURI); - await expect( - zns.domainToken.connect(caller).setTokenURI(tokenId, newTokenURI) - ).to.be.revertedWith( - getAccessRevertMsg(caller.address, ADMIN_ROLE) - ); + await expect(zns.domainToken.connect(caller).setTokenURI(tokenId, newTokenURI)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address, ADMIN_ROLE); }); it("#setBaseURI() should revert when called by anyone other than ADMIN_ROLE", async () => { const baseURI = "https://www.zNS.domains/"; - await expect( - zns.domainToken.connect(caller).setBaseURI(baseURI) - ).to.be.revertedWith( - getAccessRevertMsg(caller.address, ADMIN_ROLE) - ); + await expect(zns.domainToken.connect(caller).setBaseURI(baseURI)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address, ADMIN_ROLE); }); }); @@ -492,7 +480,10 @@ describe("ZNSDomainToken", () => { await zns.accessController.hasRole(GOVERNOR_ROLE, deployer.address) ).to.be.true; - const upgradeTx = zns.domainToken.connect(deployer).upgradeTo(await newDomainToken.getAddress()); + const upgradeTx = zns.domainToken.connect(deployer).upgradeToAndCall( + await newDomainToken.getAddress(), + "0x" + ); await expect(upgradeTx).to.not.be.reverted; }); @@ -529,15 +520,17 @@ describe("ZNSDomainToken", () => { await newDomainToken.waitForDeployment(); // Confirm the caller is not a governor - await expect(zns.accessController.checkGovernor(caller.address)).to.be.revertedWith( - getAccessRevertMsg(caller.address, GOVERNOR_ROLE) - ); - - const upgradeTx = zns.domainToken.connect(caller).upgradeTo(await newDomainToken.getAddress()); + await expect(zns.accessController.checkGovernor(caller.address)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address, GOVERNOR_ROLE); - await expect(upgradeTx).to.be.revertedWith( - getAccessRevertMsg(caller.address, GOVERNOR_ROLE) + const upgradeTx = zns.domainToken.connect(caller).upgradeToAndCall( + await newDomainToken.getAddress(), + "0x" ); + + await expect(upgradeTx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(caller.address, GOVERNOR_ROLE); }); }); }); \ No newline at end of file diff --git a/test/ZNSFixedPricer.test.ts b/test/ZNSFixedPricer.test.ts index 988224228..9f956fb1e 100644 --- a/test/ZNSFixedPricer.test.ts +++ b/test/ZNSFixedPricer.test.ts @@ -2,14 +2,13 @@ import { ADMIN_ROLE, deployFixedPricer, deployZNS, - getAccessRevertMsg, GOVERNOR_ROLE, - INITIALIZED_ERR, INVALID_NAME_ERR, - NOT_AUTHORIZED_REG_WIRED_ERR, + INITIALIZED_ERR, INVALID_LABEL_ERR, + NOT_AUTHORIZED_ERR, PaymentType, DEFAULT_PERCENTAGE_BASIS, DEFAULT_PRICE_CONFIG, - validateUpgrade, AccessType, + validateUpgrade, AccessType, AC_UNAUTHORIZED_ERR, FEE_TOO_LARGE_ERR, } from "./helpers"; import * as hre from "hardhat"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; @@ -82,7 +81,7 @@ describe("ZNSFixedPricer", () => { await expect(zns.fixedPricer.initialize( await zns.accessController.getAddress(), await zns.registry.getAddress(), - )).to.be.revertedWith(INITIALIZED_ERR); + )).to.be.revertedWithCustomError(zns.fixedPricer, INITIALIZED_ERR); }); it("Should NOT let initialize the implementation contract", async () => { @@ -95,7 +94,7 @@ describe("ZNSFixedPricer", () => { deployer.address, random.address, ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); it("should set config for 0x0 hash", async () => { @@ -136,9 +135,8 @@ describe("ZNSFixedPricer", () => { acAddress: await zns.accessController.getAddress(), regAddress: await zns.registry.getAddress(), }), - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); it("#setPrice() should work correctly and emit #PriceSet event", async () => { @@ -164,7 +162,7 @@ describe("ZNSFixedPricer", () => { it("#getPrice() should revert for invalid label when not skipping the label validation", async () => { await expect( zns.fixedPricer.getPrice(domainHash, "tEstname", false) - ).to.be.revertedWith(INVALID_NAME_ERR); + ).to.be.revertedWithCustomError(zns.fixedPricer, INVALID_LABEL_ERR); }); it("#getPriceAndFee() should return the correct price and fee", async () => { @@ -185,8 +183,9 @@ describe("ZNSFixedPricer", () => { it("#setPrice() should revert if called by anyone other than domain owner", async () => { await expect( zns.fixedPricer.connect(random).setPrice(domainHash, ethers.parseEther("1")) - ).to.be.revertedWith( - NOT_AUTHORIZED_REG_WIRED_ERR + ).to.be.revertedWithCustomError( + zns.fixedPricer, + NOT_AUTHORIZED_ERR ); }); @@ -205,16 +204,18 @@ describe("ZNSFixedPricer", () => { it("#setFeePercentage() should revert if called by anyone other than domain owner", async () => { await expect( zns.fixedPricer.connect(random).setFeePercentage(domainHash, BigInt(1)) - ).to.be.revertedWith( - NOT_AUTHORIZED_REG_WIRED_ERR + ).to.be.revertedWithCustomError( + zns.fixedPricer, + NOT_AUTHORIZED_ERR ); }); it("#setFeePercentage() should revert when trying to set feePercentage higher than PERCENTAGE_BASIS", async () => { await expect( zns.fixedPricer.connect(user).setFeePercentage(domainHash, DEFAULT_PERCENTAGE_BASIS + 1n) - ).to.be.revertedWith( - "ZNSFixedPricer: feePercentage cannot be greater than PERCENTAGE_BASIS" + ).to.be.revertedWithCustomError( + zns.fixedPricer, + FEE_TOO_LARGE_ERR ); }); @@ -244,16 +245,14 @@ describe("ZNSFixedPricer", () => { it("#setPriceConfig() should revert if called by anyone other than domain owner or operator", async () => { await expect( - zns.fixedPricer.connect(random).setPriceConfig( - domainHash, - { - price: BigInt(1), - feePercentage: BigInt(1), - isSet: true, - } - ) - ).to.be.revertedWith( - NOT_AUTHORIZED_REG_WIRED_ERR + zns.fixedPricer.connect(random).setPriceConfig(domainHash, { + price: BigInt(1), + feePercentage: BigInt(1), + isSet: true, + }) + ).to.be.revertedWithCustomError( + zns.fixedPricer, + NOT_AUTHORIZED_ERR ); }); @@ -271,17 +270,15 @@ describe("ZNSFixedPricer", () => { it("#setRegistry() should revert if called by anyone other than ADMIN_ROLE", async () => { await expect( zns.fixedPricer.connect(random).setRegistry(random.address) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); it("#setAccessController() should revert if called by anyone other than ADMIN_ROLE", async () => { await expect( zns.fixedPricer.connect(random).setAccessController(random.address) - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); // keep this as the last test @@ -339,7 +336,10 @@ describe("ZNSFixedPricer", () => { // Confirm the deployer is a governor, as set in `deployZNS` helper await expect(zns.accessController.checkGovernor(deployer.address)).to.not.be.reverted; - const tx = zns.fixedPricer.connect(deployer).upgradeTo(await newFixedPricer.getAddress()); + const tx = zns.fixedPricer.connect(deployer).upgradeToAndCall( + await newFixedPricer.getAddress(), + "0x" + ); await expect(tx).to.not.be.reverted; await expect( @@ -347,7 +347,7 @@ describe("ZNSFixedPricer", () => { await zns.accessController.getAddress(), await zns.registry.getAddress(), ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(zns.fixedPricer, INITIALIZED_ERR); }); it("Fails to upgrade if the caller is not authorized", async () => { @@ -359,11 +359,13 @@ describe("ZNSFixedPricer", () => { // Confirm the account is not a governor await expect(zns.accessController.checkGovernor(random.address)).to.be.reverted; - const tx = zns.fixedPricer.connect(random).upgradeTo(await newFixedPricer.getAddress()); - - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(random.address, GOVERNOR_ROLE) + const tx = zns.fixedPricer.connect(random).upgradeToAndCall( + await newFixedPricer.getAddress(), + "0x" ); + + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { diff --git a/test/ZNSRegistry.test.ts b/test/ZNSRegistry.test.ts index a0980b603..801ba8c32 100644 --- a/test/ZNSRegistry.test.ts +++ b/test/ZNSRegistry.test.ts @@ -11,16 +11,12 @@ import { GOVERNOR_ROLE, REGISTRAR_ROLE, INITIALIZED_ERR, - getAccessRevertMsg, validateUpgrade, - NOT_AUTHORIZED_REG_ERR, DEFAULT_RESOLVER_TYPE, + AC_UNAUTHORIZED_ERR, + NOT_AUTHORIZED_ERR, + ZERO_ADDRESS_ERR, } from "./helpers"; -import { - ONLY_NAME_OWNER_REG_ERR, - ONLY_OWNER_REGISTRAR_REG_ERR, - OWNER_NOT_ZERO_REG_ERR, -} from "./helpers/errors"; import { getProxyImplAddress } from "./helpers/utils"; // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -68,7 +64,8 @@ describe("ZNSRegistry", () => { zns.registry.initialize( await zns.accessController.getAddress() ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.registry, INITIALIZED_ERR ); }); @@ -82,7 +79,7 @@ describe("ZNSRegistry", () => { implContract.initialize( deployer.address, ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); // eslint-disable-next-line max-len @@ -121,9 +118,8 @@ describe("ZNSRegistry", () => { it("Should revert when setting access controller without ADMIN_ROLE", async () => { await expect( zns.registry.connect(randomUser).setAccessController(deployer.address) - ).to.be.revertedWith( - getAccessRevertMsg(randomUser.address, ADMIN_ROLE) - ); + ).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomUser.address, ADMIN_ROLE); }); describe("Audit fix with approved address resolvers", () => { @@ -233,12 +229,12 @@ describe("ZNSRegistry", () => { await zns.registry.connect(deployer).setOwnersOperator(operator.address, false); const tx = zns.registry.connect(operator).updateDomainResolver(wilderDomainHash, operator.address); - await expect(tx).to.be.revertedWith("ZNSRegistry: Not authorized"); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("Does not permit an operator that's never been allowed to modify a record", async () => { const tx = zns.registry.connect(operator).updateDomainResolver(wilderDomainHash, operator.address); - await expect(tx).to.be.revertedWith("ZNSRegistry: Not authorized"); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("#isOperatorFor() should return true for an operator", async () => { @@ -315,9 +311,8 @@ describe("ZNSRegistry", () => { DEFAULT_RESOLVER_TYPE ); - await expect(tx).to.be.revertedWith( - `AccessControl: account ${deployer.address.toLowerCase()} is missing role ${REGISTRAR_ROLE}` - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(deployer.address, REGISTRAR_ROLE); }); }); @@ -328,7 +323,7 @@ describe("ZNSRegistry", () => { const tx = zns.registry.updateDomainRecord(domainHash, deployer.address, mockResolver.address); // Because nobody owns a non-existing record, the error is caught by the `onlyOwnerOrOperator` first - await expect(tx).to.be.revertedWith(ONLY_NAME_OWNER_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("Can update a domain record if the domain exists", async () => { @@ -352,7 +347,7 @@ describe("ZNSRegistry", () => { const tx = zns.registry.updateDomainOwner(domainHash, deployer.address); // Because nobody owns a non-existing record, the error is caught by the `onlyOwnerOrOperator` first - await expect(tx).to.be.revertedWith(ONLY_OWNER_REGISTRAR_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("Can update a domain owner if the domain exists", async () => { @@ -371,7 +366,7 @@ describe("ZNSRegistry", () => { const tx = zns.registry.updateDomainResolver(domainHash, mockResolver.address); // Because nobody owns a non-existing record, the error is caught by the `onlyOwnerOrOperator` first - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("Can update a domain resolver if the domain exists", async () => { @@ -394,7 +389,7 @@ describe("ZNSRegistry", () => { await zns.registry.connect(mockRegistrar).createDomainRecord(domainHash, deployer.address, DEFAULT_RESOLVER_TYPE); const tx = zns.registry.updateDomainRecord(domainHash, ethers.ZeroAddress, mockResolver.address); - await expect(tx).to.be.revertedWith(OWNER_NOT_ZERO_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, ZERO_ADDRESS_ERR); }); it("Can update a domain record if the resolver is zero address", async () => { @@ -414,7 +409,7 @@ describe("ZNSRegistry", () => { ethers.ZeroAddress ); - await expect(tx).to.be.revertedWith(OWNER_NOT_ZERO_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, ZERO_ADDRESS_ERR); }); it("Can update a domain resolver if resolver is zero address", async () => { @@ -438,7 +433,7 @@ describe("ZNSRegistry", () => { operator.address, mockResolver.address ); - await expect(tx).to.be.revertedWith(ONLY_NAME_OWNER_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("cannot update a domain's record if not an owner or operator", async () => { @@ -451,7 +446,7 @@ describe("ZNSRegistry", () => { deployer.address ); - await expect(tx).to.be.revertedWith(ONLY_NAME_OWNER_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("cannot update an domain's owner if not an owner or operator", async () => { @@ -460,9 +455,7 @@ describe("ZNSRegistry", () => { await zns.registry.connect(mockRegistrar).createDomainRecord(domainHash, deployer.address, DEFAULT_RESOLVER_TYPE); const tx = zns.registry.connect(randomUser).updateDomainOwner(domainHash, mockResolver.address); - await expect(tx).to.be.revertedWith( - ONLY_OWNER_REGISTRAR_REG_ERR - ); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("cannot update a domain's resolver if not an owner or operator", async () => { @@ -471,7 +464,7 @@ describe("ZNSRegistry", () => { await zns.registry.connect(mockRegistrar).createDomainRecord(domainHash, deployer.address, DEFAULT_RESOLVER_TYPE); const tx = zns.registry.connect(randomUser).updateDomainResolver(domainHash, deployer.address); - await expect(tx).to.be.revertedWith(NOT_AUTHORIZED_REG_ERR); + await expect(tx).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); it("Can delete record with REGISTRAR_ROLE", async () => { @@ -491,9 +484,8 @@ describe("ZNSRegistry", () => { await zns.registry.connect(mockRegistrar).createDomainRecord(domainHash, deployer.address, DEFAULT_RESOLVER_TYPE); const tx = zns.registry.connect(randomUser).deleteRecord(domainHash); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(randomUser.address, REGISTRAR_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomUser.address,REGISTRAR_ROLE); }); }); @@ -595,7 +587,10 @@ describe("ZNSRegistry", () => { await registry.waitForDeployment(); // To control the signer we call manually here instead of through hardhat - const upgradeTx = zns.registry.connect(deployer).upgradeTo(await registry.getAddress()); + const upgradeTx = zns.registry.connect(deployer).upgradeToAndCall( + await registry.getAddress(), + "0x" + ); await expect(upgradeTx).to.be.not.be.reverted; }); @@ -605,8 +600,13 @@ describe("ZNSRegistry", () => { await registry.waitForDeployment(); // To control the signer we call manually here instead of through hardhat - const upgradeTx = zns.registry.connect(randomUser).upgradeTo(await registry.getAddress()); - await expect(upgradeTx).to.be.revertedWith(getAccessRevertMsg(randomUser.address, GOVERNOR_ROLE)); + const upgradeTx = zns.registry.connect(randomUser).upgradeToAndCall( + await registry.getAddress(), + "0x" + ); + + await expect(upgradeTx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomUser.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { diff --git a/test/ZNSRootRegistrar.test.ts b/test/ZNSRootRegistrar.test.ts index 241fd9e3b..f4018b04f 100644 --- a/test/ZNSRootRegistrar.test.ts +++ b/test/ZNSRootRegistrar.test.ts @@ -10,24 +10,20 @@ import { AccessType, OwnerOf, PaymentType, - getAccessRevertMsg, hashDomainLabel, DEFAULT_TOKEN_URI, distrConfigEmpty, INVALID_LENGTH_ERR, INITIALIZED_ERR, - INVALID_TOKENID_ERC_ERR, + NONEXISTENT_TOKEN_ERC_ERR, REGISTRAR_ROLE, DEFAULT_PRECISION_MULTIPLIER, DEFAULT_PRICE_CONFIG, DEFAULT_PROTOCOL_FEE_PERCENT, - NOT_AUTHORIZED_REG_ERR, - NOT_BOTH_OWNER_RAR_ERR, - NOT_TOKEN_OWNER_RAR_ERR, - ONLY_NAME_OWNER_REG_ERR, - ONLY_OWNER_REGISTRAR_REG_ERR, - INVALID_NAME_ERR, - paymentConfigEmpty, + NOT_OWNER_OF_ERR, + NOT_AUTHORIZED_ERR, + INVALID_LABEL_ERR, + paymentConfigEmpty, AC_UNAUTHORIZED_ERR, INSUFFICIENT_BALANCE_ERC_ERR, ZERO_ADDRESS_ERR, DOMAIN_EXISTS_ERR, } from "./helpers"; import { IDistributionConfig } from "./helpers/types"; import * as ethers from "ethers"; @@ -48,6 +44,7 @@ import { getProxyImplAddress } from "./helpers/utils"; import { upgrades } from "hardhat"; import { getConfig } from "../src/deploy/campaign/environments"; import { IZNSContracts } from "../src/deploy/campaign/types"; +import { ZeroHash } from "ethers"; require("@nomicfoundation/hardhat-chai-matchers"); @@ -222,7 +219,7 @@ describe("ZNSRootRegistrar", () => { operator.address, operator.address, ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); it("Allows transfer of 0x0 domain ownership after deployment", async () => { @@ -311,7 +308,8 @@ describe("ZNSRootRegistrar", () => { } ); - await expect(tx).to.be.revertedWith(getAccessRevertMsg(user.address, ADMIN_ROLE)); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address, ADMIN_ROLE); }); it("Should NOT initialize twice", async () => { @@ -323,7 +321,10 @@ describe("ZNSRootRegistrar", () => { randomUser.address, ); - await expect(tx).to.be.revertedWith("Initializable: contract is already initialized"); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + INITIALIZED_ERR + ); }); describe("General functionality", () => { @@ -331,22 +332,19 @@ describe("ZNSRootRegistrar", () => { const isRegistrar = await zns.accessController.hasRole(REGISTRAR_ROLE, randomUser.address); expect(isRegistrar).to.be.false; - await expect( - zns.rootRegistrar.connect(randomUser).coreRegister({ - parentHash: ethers.ZeroHash, - domainHash: ethers.ZeroHash, - label: "randomname", - registrant: ethers.ZeroAddress, - price: "0", - stakeFee: "0", - domainAddress: ethers.ZeroAddress, - tokenURI: "", - isStakePayment: false, - paymentConfig: paymentConfigEmpty, - }) - ).to.be.revertedWith( - getAccessRevertMsg(randomUser.address, REGISTRAR_ROLE) - ); + await expect(zns.rootRegistrar.connect(randomUser).coreRegister({ + parentHash: ethers.ZeroHash, + domainHash: ethers.ZeroHash, + label: "randomname", + registrant: ethers.ZeroAddress, + price: "0", + stakeFee: "0", + domainAddress: ethers.ZeroAddress, + tokenURI: "", + isStakePayment: false, + paymentConfig: paymentConfigEmpty, + })).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomUser.address,REGISTRAR_ROLE); }); it("#isOwnerOf() returns correct bools", async () => { @@ -410,15 +408,19 @@ describe("ZNSRootRegistrar", () => { ).to.be.reverted; }); + it("#isOwnerOf() should revert if wrong enum value is passed", async () => { + await expect( + zns.rootRegistrar.isOwnerOf(ethers.ZeroHash, user.address, 3) + ).to.be.reverted; + }); + it("#setSubRegistrar() should revert if called by address without ADMIN_ROLE", async () => { const isAdmin = await zns.accessController.hasRole(ADMIN_ROLE, randomUser.address); expect(isAdmin).to.be.false; - await expect( - zns.rootRegistrar.connect(randomUser).setSubRegistrar(randomUser.address) - ).to.be.revertedWith( - getAccessRevertMsg(randomUser.address, ADMIN_ROLE) - ); + await expect(zns.rootRegistrar.connect(randomUser).setSubRegistrar(randomUser.address)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomUser.address, ADMIN_ROLE); }); it("#setSubRegistrar() should set the correct address", async () => { @@ -432,8 +434,9 @@ describe("ZNSRootRegistrar", () => { it("#setSubRegistrar() should NOT set the address to zero address", async () => { await expect( zns.rootRegistrar.connect(admin).setSubRegistrar(ethers.ZeroAddress) - ).to.be.revertedWith( - "ZNSRootRegistrar: subRegistrar_ is 0x0 address" + ).to.be.revertedWithCustomError( + zns.rootRegistrar, + ZERO_ADDRESS_ERR ); }); }); @@ -448,7 +451,7 @@ describe("ZNSRootRegistrar", () => { zns, domainName: emptyName, }) - ).to.be.revertedWith(INVALID_LENGTH_ERR); + ).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LENGTH_ERR); }); it("Can register a TLD with characters [a-z0-9-]", async () => { @@ -538,7 +541,7 @@ describe("ZNSRootRegistrar", () => { zns, domainName: nameA, }) - ).to.be.revertedWith(INVALID_NAME_ERR); + ).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); await expect( defaultRootRegistration({ @@ -546,7 +549,7 @@ describe("ZNSRootRegistrar", () => { zns, domainName: nameB, }) - ).to.be.revertedWith(INVALID_NAME_ERR); + ).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); await expect( defaultRootRegistration({ @@ -554,7 +557,7 @@ describe("ZNSRootRegistrar", () => { zns, domainName: nameC, }) - ).to.be.revertedWith(INVALID_NAME_ERR); + ).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); await expect( defaultRootRegistration({ @@ -562,7 +565,7 @@ describe("ZNSRootRegistrar", () => { zns, domainName: nameD, }) - ).to.be.revertedWith(INVALID_NAME_ERR); + ).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); }); // eslint-disable-next-line max-len @@ -708,7 +711,13 @@ describe("ZNSRootRegistrar", () => { zns, domainName: defaultDomain, }); - await expect(tx).to.be.revertedWith("ERC20: transfer amount exceeds balance"); + const { price, stakeFee } = await zns.curvePricer.getPriceAndFee(ZeroHash, defaultDomain, true); + + await expect(tx).to.be.revertedWithCustomError( + zns.meowToken, + INSUFFICIENT_BALANCE_ERC_ERR + ) + .withArgs(user.address, 0n, price + stakeFee); }); it("Disallows creation of a duplicate domain", async () => { @@ -723,7 +732,7 @@ describe("ZNSRootRegistrar", () => { domainName: defaultDomain, }); - await expect(failTx).to.be.revertedWith("ZNSRootRegistrar: Domain already exists"); + await expect(failTx).to.be.revertedWithCustomError(zns.rootRegistrar, DOMAIN_EXISTS_ERR); }); it("Successfully registers a domain without resolver content", async () => { @@ -893,9 +902,10 @@ describe("ZNSRootRegistrar", () => { }); // Reclaim the Domain const tx = zns.rootRegistrar.connect(user).reclaimDomain(domainHash); - - // Verify Domain is not reclaimed - await expect(tx).to.be.revertedWith(NOT_TOKEN_OWNER_RAR_ERR); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + NOT_OWNER_OF_ERR + ).withArgs(1n, user.address, domainHash); // Verify domain is not owned in registrar const registryOwner = await zns.registry.connect(user).getDomainOwner(domainHash); @@ -908,7 +918,10 @@ describe("ZNSRootRegistrar", () => { const tx = zns.rootRegistrar.connect(user).reclaimDomain(domainHash); // Verify Domain is not reclaimed - await expect(tx).to.be.revertedWith(INVALID_TOKENID_ERC_ERR); + await expect(tx).to.be.revertedWithCustomError( + zns.domainToken, + NONEXISTENT_TOKEN_ERC_ERR + ).withArgs(BigInt(domainHash)); }); it("Domain Token can be reclaimed, transferred, and then reclaimed again", async () => { @@ -1074,9 +1087,10 @@ describe("ZNSRootRegistrar", () => { // Verify token has been burned const ownerOfTx = zns.domainToken.connect(user).ownerOf(tokenId); - await expect(ownerOfTx).to.be.revertedWith( - INVALID_TOKENID_ERC_ERR - ); + await expect(ownerOfTx).to.be.revertedWithCustomError( + zns.domainToken, + NONEXISTENT_TOKEN_ERC_ERR + ).withArgs(BigInt(domainHash)); // Verify Domain Record Deleted const exists = await zns.registry.exists(domainHash); @@ -1099,7 +1113,10 @@ describe("ZNSRootRegistrar", () => { // Verify transaction is reverted const tx = zns.rootRegistrar.connect(user).revokeDomain(fakeHash); - await expect(tx).to.be.revertedWith(NOT_BOTH_OWNER_RAR_ERR); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + NOT_OWNER_OF_ERR + ); }); it("Revoking domain unstakes", async () => { @@ -1157,7 +1174,10 @@ describe("ZNSRootRegistrar", () => { // Try to revoke domain const tx = zns.rootRegistrar.connect(user).revokeDomain(parentDomainHash); - await expect(tx).to.be.revertedWith(NOT_BOTH_OWNER_RAR_ERR); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + NOT_OWNER_OF_ERR + ).withArgs(2n, user.address, parentDomainHash); }); it("No one can revoke if Token and Name have different owners", async () => { @@ -1176,10 +1196,13 @@ describe("ZNSRootRegistrar", () => { // Try to revoke domain as a new owner of the token const tx = zns.rootRegistrar.connect(user).revokeDomain(parentDomainHash); - await expect(tx).to.be.revertedWith(NOT_BOTH_OWNER_RAR_ERR); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + NOT_OWNER_OF_ERR + ); const tx2 = zns.rootRegistrar.connect(deployer).revokeDomain(parentDomainHash); - await expect(tx2).to.be.revertedWith(NOT_BOTH_OWNER_RAR_ERR); + await expect(tx2).to.be.revertedWithCustomError(zns.rootRegistrar, NOT_OWNER_OF_ERR); }); it("After domain has been revoked, an old operator can NOT access Registry", async () => { @@ -1203,8 +1226,9 @@ describe("ZNSRootRegistrar", () => { domainHash, operator.address ); - await expect(tx2).to.be.revertedWith( - ONLY_OWNER_REGISTRAR_REG_ERR + await expect(tx2).to.be.revertedWithCustomError( + zns.registry, + NOT_AUTHORIZED_ERR ); const tx3 = zns.registry @@ -1214,9 +1238,7 @@ describe("ZNSRootRegistrar", () => { user.address, operator.address ); - await expect(tx3).to.be.revertedWith( - ONLY_NAME_OWNER_REG_ERR - ); + await expect(tx3).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); const tx4 = zns.registry .connect(operator) @@ -1224,9 +1246,7 @@ describe("ZNSRootRegistrar", () => { domainHash, zeroVault.address ); - await expect(tx4).to.be.revertedWith( - NOT_AUTHORIZED_REG_ERR - ); + await expect(tx4).to.be.revertedWithCustomError(zns.registry, NOT_AUTHORIZED_ERR); }); }); @@ -1245,14 +1265,16 @@ describe("ZNSRootRegistrar", () => { it("Should revert if not called by ADMIN", async () => { const tx = zns.rootRegistrar.connect(user).setAccessController(randomUser.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Should revert if new AccessController is address zero", async () => { const tx = zns.rootRegistrar.connect(deployer).setAccessController(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("AC: _accessController is 0x0 address"); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + ZERO_ADDRESS_ERR + ); }); }); @@ -1270,14 +1292,16 @@ describe("ZNSRootRegistrar", () => { it("Should revert if not called by ADMIN", async () => { const tx = zns.rootRegistrar.connect(user).setRegistry(randomUser.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Should revert if ZNSRegistry is address zero", async () => { const tx = zns.rootRegistrar.connect(deployer).setRegistry(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("ARegistryWired: _registry can not be 0x0 address"); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + ZERO_ADDRESS_ERR + ); }); }); @@ -1295,14 +1319,16 @@ describe("ZNSRootRegistrar", () => { it("Should revert if not called by ADMIN", async () => { const tx = zns.rootRegistrar.connect(user).setTreasury(randomUser.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Should revert if Treasury is address zero", async () => { const tx = zns.rootRegistrar.connect(deployer).setTreasury(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("ZNSRootRegistrar: treasury_ is 0x0 address"); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + ZERO_ADDRESS_ERR + ); }); }); @@ -1320,14 +1346,37 @@ describe("ZNSRootRegistrar", () => { it("Should revert if not called by ADMIN", async () => { const tx = zns.rootRegistrar.connect(user).setDomainToken(randomUser.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Should revert if DomainToken is address zero", async () => { const tx = zns.rootRegistrar.connect(deployer).setDomainToken(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("ZNSRootRegistrar: domainToken_ is 0x0 address"); + await expect(tx).to.be.revertedWithCustomError( + zns.rootRegistrar, + ZERO_ADDRESS_ERR + ); + }); + }); + + describe("#setRootPricer", () => { + it("#setRootPricer() should set the rootPricer correctly", async () => { + const newPricer = zns.fixedPricer.target; + await zns.rootRegistrar.connect(admin).setRootPricer(newPricer); + + expect(await zns.rootRegistrar.rootPricer()).to.eq(newPricer); + + // set back + await zns.rootRegistrar.connect(admin).setRootPricer(zns.curvePricer.target); + }); + + it("#setRootPricer() should NOT let set 0x0 address as the new pricer", async () => { + await expect( + zns.rootRegistrar.connect(admin).setRootPricer(ethers.ZeroAddress) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + ZERO_ADDRESS_ERR + ); }); }); }); @@ -1341,7 +1390,10 @@ describe("ZNSRootRegistrar", () => { const registrar = await registrarFactory.deploy(); await registrar.waitForDeployment(); - const upgradeTx = zns.rootRegistrar.connect(deployer).upgradeTo(await registrar.getAddress()); + const upgradeTx = zns.rootRegistrar.connect(deployer).upgradeToAndCall( + await registrar.getAddress(), + "0x" + ); await expect(upgradeTx).to.not.be.reverted; }); @@ -1350,11 +1402,13 @@ describe("ZNSRootRegistrar", () => { const registrar = await registrarFactory.deploy(); await registrar.waitForDeployment(); - const tx = zns.rootRegistrar.connect(randomUser).upgradeTo(await registrar.getAddress()); - - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(randomUser.address, GOVERNOR_ROLE) + const tx = zns.rootRegistrar.connect(randomUser).upgradeToAndCall( + await registrar.getAddress(), + "0x" ); + + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomUser.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { diff --git a/test/ZNSSubRegistrar.test.ts b/test/ZNSSubRegistrar.test.ts index 89d13d795..ac20e9803 100644 --- a/test/ZNSSubRegistrar.test.ts +++ b/test/ZNSSubRegistrar.test.ts @@ -8,18 +8,24 @@ import { distrConfigEmpty, DISTRIBUTION_LOCKED_NOT_EXIST_ERR, fullDistrConfigEmpty, - getAccessRevertMsg, getPriceObject, getStakingOrProtocolFee, GOVERNOR_ROLE, INITIALIZED_ERR, - INVALID_NAME_ERR, - INVALID_TOKENID_ERC_ERR, NO_BENEFICIARY_ERR, - ONLY_NAME_OWNER_REG_ERR, paymentConfigEmpty, + INVALID_LABEL_ERR, + NONEXISTENT_TOKEN_ERC_ERR, + NO_BENEFICIARY_ERR, + NOT_AUTHORIZED_ERR, + paymentConfigEmpty, PaymentType, DECAULT_PRECISION, DEFAULT_PRICE_CONFIG, validateUpgrade, + AC_UNAUTHORIZED_ERR, + INSUFFICIENT_BALANCE_ERC_ERR, + INSUFFICIENT_ALLOWANCE_ERC_ERR, + NOT_OWNER_OF_ERR, + ZERO_ADDRESS_ERR, PARENT_CONFIG_NOT_SET_ERR, DOMAIN_EXISTS_ERR, SENDER_NOT_APPROVED_ERR, } from "./helpers"; import * as hre from "hardhat"; import * as ethers from "ethers"; @@ -193,10 +199,10 @@ describe("ZNSSubRegistrar", () => { { token: await zns.meowToken.getAddress(), beneficiary: rootOwner.address, - }, - ) - ).to.be.revertedWith( - "ZNSFixedPricer: parent's price config has not been set properly through IZNSPricer.setPriceConfig()" + }) + ).to.be.revertedWithCustomError( + zns.curvePricer, + PARENT_CONFIG_NOT_SET_ERR ); }); @@ -229,10 +235,11 @@ describe("ZNSSubRegistrar", () => { lvl2SubOwner.address, subTokenURI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( - "ZNSCurvePricer: parent's price config has not been set properly through IZNSPricer.setPriceConfig()" + ).to.be.revertedWithCustomError( + zns.curvePricer, + PARENT_CONFIG_NOT_SET_ERR ); }); @@ -293,53 +300,57 @@ describe("ZNSSubRegistrar", () => { const nameC = "!%$#^*?!#👍3^29"; const nameD = "wo.rld"; - await expect(defaultSubdomainRegistration( - { - user: lvl2SubOwner, - zns, - parentHash: rootHash, - subdomainLabel: nameA, - domainContent: lvl2SubOwner.address, - tokenURI: subTokenURI, - distrConfig: distrConfigEmpty, - } - )).to.be.revertedWith(INVALID_NAME_ERR); + await expect( + defaultSubdomainRegistration( + { + user: lvl2SubOwner, + zns, + parentHash: rootHash, + subdomainLabel: nameA, + domainContent: lvl2SubOwner.address, + tokenURI: subTokenURI, + distrConfig: distrConfigEmpty, + } + )).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); - await expect(defaultSubdomainRegistration( - { - user: lvl2SubOwner, - zns, - parentHash: rootHash, - subdomainLabel: nameB, - domainContent: lvl2SubOwner.address, - tokenURI: subTokenURI, - distrConfig: distrConfigEmpty, - } - )).to.be.revertedWith(INVALID_NAME_ERR); + await expect( + defaultSubdomainRegistration( + { + user: lvl2SubOwner, + zns, + parentHash: rootHash, + subdomainLabel: nameB, + domainContent: lvl2SubOwner.address, + tokenURI: subTokenURI, + distrConfig: distrConfigEmpty, + } + )).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); - await expect(defaultSubdomainRegistration( - { - user: lvl2SubOwner, - zns, - parentHash: rootHash, - subdomainLabel: nameC, - domainContent: lvl2SubOwner.address, - tokenURI: subTokenURI, - distrConfig: distrConfigEmpty, - } - )).to.be.revertedWith(INVALID_NAME_ERR); + await expect( + defaultSubdomainRegistration( + { + user: lvl2SubOwner, + zns, + parentHash: rootHash, + subdomainLabel: nameC, + domainContent: lvl2SubOwner.address, + tokenURI: subTokenURI, + distrConfig: distrConfigEmpty, + } + )).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); - await expect(defaultSubdomainRegistration( - { - user: lvl2SubOwner, - zns, - parentHash: rootHash, - subdomainLabel: nameD, - domainContent: lvl2SubOwner.address, - tokenURI: subTokenURI, - distrConfig: distrConfigEmpty, - } - )).to.be.revertedWith(INVALID_NAME_ERR); + await expect( + defaultSubdomainRegistration( + { + user: lvl2SubOwner, + zns, + parentHash: rootHash, + subdomainLabel: nameD, + domainContent: lvl2SubOwner.address, + tokenURI: subTokenURI, + distrConfig: distrConfigEmpty, + } + )).to.be.revertedWithCustomError(zns.curvePricer, INVALID_LABEL_ERR); }); it("should revert when trying to register a subdomain under a non-existent parent", async () => { @@ -351,9 +362,10 @@ describe("ZNSSubRegistrar", () => { lvl2SubOwner.address, subTokenURI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); @@ -366,9 +378,10 @@ describe("ZNSSubRegistrar", () => { lvl2SubOwner.address, subTokenURI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); }); @@ -408,7 +421,7 @@ describe("ZNSSubRegistrar", () => { }); // ! this value can change based on the block gas limit ! - it("should register subdomain with a label length of 100000 chars", async () => { + it("should register subdomain with a label length of 100000 chars [ @skip-on-coverage ]", async () => { const subHash = await registrationWithSetup({ zns, user: lvl2SubOwner, @@ -447,8 +460,9 @@ describe("ZNSSubRegistrar", () => { distrConfigEmpty, paymentConfigEmpty, ) - ).to.be.revertedWith( - "ERC20: transfer amount exceeds balance" + ).to.be.revertedWithCustomError( + zns.meowToken, + INSUFFICIENT_BALANCE_ERC_ERR ); // transfer back for other tests @@ -471,8 +485,9 @@ describe("ZNSSubRegistrar", () => { distrConfigEmpty, paymentConfigEmpty, ) - ).to.be.revertedWith( - "ERC20: insufficient allowance" + ).to.be.revertedWithCustomError( + zns.meowToken, + INSUFFICIENT_ALLOWANCE_ERC_ERR ); }); @@ -523,7 +538,7 @@ describe("ZNSSubRegistrar", () => { parentHash: parentHash1, domainLabel: "sub1", }) - ).to.be.revertedWith(NO_BENEFICIARY_ERR); + ).to.be.revertedWithCustomError(zns.treasury, NO_BENEFICIARY_ERR); await expect( registrationWithSetup({ @@ -532,7 +547,7 @@ describe("ZNSSubRegistrar", () => { parentHash: parentHash2, domainLabel: "sub2", }) - ).to.be.revertedWith(NO_BENEFICIARY_ERR); + ).to.be.revertedWithCustomError(zns.treasury, NO_BENEFICIARY_ERR); // change stakeFee to 0 await zns.curvePricer.connect(rootOwner).setFeePercentage( @@ -937,9 +952,10 @@ describe("ZNSSubRegistrar", () => { lvl6SubOwner.address, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); @@ -950,13 +966,17 @@ describe("ZNSSubRegistrar", () => { const tokenId = BigInt(domainHash).toString(); await expect( zns.domainToken.ownerOf(tokenId) - ).to.be.revertedWith( - INVALID_TOKENID_ERC_ERR - ); + ).to.be.revertedWithCustomError( + zns.domainToken, + NONEXISTENT_TOKEN_ERC_ERR + ).withArgs(tokenId); await expect( zns.registry.connect(lvl6SubOwner).updateDomainRecord(domainHash, rootOwner.address, lvl6SubOwner.address) - ).to.be.revertedWith(ONLY_NAME_OWNER_REG_ERR); + ).to.be.revertedWithCustomError( + zns.registry, + NOT_AUTHORIZED_ERR + ); }); it("should revoke lvl 5 domain with refund", async () => { @@ -1007,9 +1027,10 @@ describe("ZNSSubRegistrar", () => { lvl6SubOwner.address, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); @@ -1020,13 +1041,17 @@ describe("ZNSSubRegistrar", () => { const tokenId = BigInt(domainHash).toString(); await expect( zns.domainToken.ownerOf(tokenId) - ).to.be.revertedWith( - INVALID_TOKENID_ERC_ERR - ); + ).to.be.revertedWithCustomError( + zns.domainToken, + NONEXISTENT_TOKEN_ERC_ERR + ).withArgs(tokenId); await expect( - zns.registry.connect(lvl5SubOwner).updateDomainRecord(domainHash, rootOwner.address, lvl6SubOwner.address) - ).to.be.revertedWith(ONLY_NAME_OWNER_REG_ERR); + zns.registry.connect(lvl5SubOwner).updateDomainRecord(domainHash,rootOwner.address,lvl6SubOwner.address) + ).to.be.revertedWithCustomError( + zns.registry, + NOT_AUTHORIZED_ERR + ); }); it("should register a new 2 lvl path at lvl 3 of the existing path", async () => { @@ -1163,13 +1188,17 @@ describe("ZNSSubRegistrar", () => { const tokenId = BigInt(lvl3Hash).toString(); await expect( zns.domainToken.ownerOf(tokenId) - ).to.be.revertedWith( - INVALID_TOKENID_ERC_ERR - ); + ).to.be.revertedWithCustomError( + zns.domainToken, + NONEXISTENT_TOKEN_ERC_ERR + ).withArgs(tokenId); await expect( zns.registry.connect(lvl3SubOwner).updateDomainRecord(lvl3Hash, rootOwner.address, lvl4SubOwner.address) - ).to.be.revertedWith(ONLY_NAME_OWNER_REG_ERR); + ).to.be.revertedWithCustomError( + zns.registry, + NOT_AUTHORIZED_ERR + ); }); it("should let anyone register a previously revoked domain", async () => { @@ -1245,9 +1274,12 @@ describe("ZNSSubRegistrar", () => { branchLvl1Owner.address, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith(DISTRIBUTION_LOCKED_NOT_EXIST_ERR); + ).to.be.revertedWithCustomError( + zns.subRegistrar, + DISTRIBUTION_LOCKED_NOT_EXIST_ERR + ); // register root back for other tests await registrationWithSetup({ @@ -1277,9 +1309,12 @@ describe("ZNSSubRegistrar", () => { branchLvl2Owner.address, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith(DISTRIBUTION_LOCKED_NOT_EXIST_ERR); + ).to.be.revertedWithCustomError( + zns.subRegistrar, + DISTRIBUTION_LOCKED_NOT_EXIST_ERR + ); }); // eslint-disable-next-line max-len @@ -2403,7 +2438,10 @@ describe("ZNSSubRegistrar", () => { distrConfigEmpty, paymentConfigEmpty, ) - ).to.be.revertedWith("ERC20: insufficient allowance"); + ).to.be.revertedWithCustomError( + zns.meowToken, + INSUFFICIENT_ALLOWANCE_ERC_ERR + ); // let's try to buy with the incorrect price const userBalanceBefore = await token5.balanceOf(lvl3SubOwner.address); @@ -2582,9 +2620,10 @@ describe("ZNSSubRegistrar", () => { ethers.ZeroAddress, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); }); @@ -2689,10 +2728,11 @@ describe("ZNSSubRegistrar", () => { ethers.ZeroAddress, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Sender is not approved for purchase" + ).to.be.revertedWithCustomError( + zns.subRegistrar, + SENDER_NOT_APPROVED_ERR ); // remove user from mintlist @@ -2710,10 +2750,11 @@ describe("ZNSSubRegistrar", () => { ethers.ZeroAddress, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Sender is not approved for purchase" + ).to.be.revertedWithCustomError( + zns.subRegistrar, + SENDER_NOT_APPROVED_ERR ); }); @@ -2743,13 +2784,10 @@ describe("ZNSSubRegistrar", () => { // try with non-authorized await expect( - zns.subRegistrar.connect(lvl5SubOwner).updateMintlistForDomain( - domainHash, - [lvl5SubOwner.address], - [true], - ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Not authorized" + zns.subRegistrar.connect(lvl5SubOwner).updateMintlistForDomain(domainHash, [lvl5SubOwner.address], [true]) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + NOT_AUTHORIZED_ERR ); }); @@ -2806,9 +2844,10 @@ describe("ZNSSubRegistrar", () => { ethers.ZeroAddress, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); @@ -2888,9 +2927,10 @@ describe("ZNSSubRegistrar", () => { ethers.ZeroAddress, DEFAULT_TOKEN_URI, distrConfigEmpty, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( + ).to.be.revertedWithCustomError( + zns.subRegistrar, DISTRIBUTION_LOCKED_NOT_EXIST_ERR ); }); @@ -3009,10 +3049,11 @@ describe("ZNSSubRegistrar", () => { lvl2SubOwner.address, DEFAULT_TOKEN_URI, domainConfigs[1].fullConfig.distrConfig, - paymentConfigEmpty, + paymentConfigEmpty ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Subdomain already exists" + ).to.be.revertedWithCustomError( + zns.subRegistrar, + DOMAIN_EXISTS_ERR ); }); @@ -3025,12 +3066,11 @@ describe("ZNSSubRegistrar", () => { // fail await expect( - zns.rootRegistrar.connect(lvl3SubOwner).revokeDomain( - regResults[1].domainHash, - ) - ).to.be.revertedWith( - "ZNSRootRegistrar: Not the owner of both Name and Token" - ); + zns.rootRegistrar.connect(lvl3SubOwner).revokeDomain(regResults[1].domainHash) + ).to.be.revertedWithCustomError( + zns.rootRegistrar, + NOT_OWNER_OF_ERR + ).withArgs(2n, lvl3SubOwner.address, regResults[1].domainHash); // change owner back await zns.registry.connect(rootOwner).updateDomainOwner( @@ -3050,9 +3090,10 @@ describe("ZNSSubRegistrar", () => { zns.rootRegistrar.connect(lvl2SubOwner).revokeDomain( regResults[1].domainHash, ) - ).to.be.revertedWith( - "ZNSRootRegistrar: Not the owner of both Name and Token" - ); + ).to.be.revertedWithCustomError( + zns.rootRegistrar, + NOT_OWNER_OF_ERR + ).withArgs(2n, lvl2SubOwner.address, regResults[1].domainHash); // give token back await zns.domainToken.connect(lvl3SubOwner).transferFrom( @@ -3153,12 +3194,10 @@ describe("ZNSSubRegistrar", () => { }; await expect( - zns.subRegistrar.connect(lvl3SubOwner).setDistributionConfigForDomain( - domainHash, - newConfig, - ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Not authorized" + zns.subRegistrar.connect(lvl3SubOwner).setDistributionConfigForDomain(domainHash, newConfig) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + NOT_AUTHORIZED_ERR ); }); @@ -3172,12 +3211,10 @@ describe("ZNSSubRegistrar", () => { }; await expect( - zns.subRegistrar.connect(lvl3SubOwner).setDistributionConfigForDomain( - domainHash, - newConfig, - ) - ).to.be.revertedWith( - "ZNSSubRegistrar: pricerContract can not be 0x0 address" + zns.subRegistrar.connect(lvl3SubOwner).setDistributionConfigForDomain(domainHash, newConfig) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + ZERO_ADDRESS_ERR ); }); }); @@ -3210,10 +3247,11 @@ describe("ZNSSubRegistrar", () => { await expect( zns.subRegistrar.connect(lvl2SubOwner).setPricerContractForDomain( domainHash, - await zns.curvePricer.getAddress(), + await zns.curvePricer.getAddress() ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Not authorized" + ).to.be.revertedWithCustomError( + zns.subRegistrar, + NOT_AUTHORIZED_ERR ); }); @@ -3221,12 +3259,10 @@ describe("ZNSSubRegistrar", () => { const domainHash = regResults[2].domainHash; await expect( - zns.subRegistrar.connect(lvl3SubOwner).setPricerContractForDomain( - domainHash, - ethers.ZeroAddress, - ) - ).to.be.revertedWith( - "ZNSSubRegistrar: pricerContract can not be 0x0 address" + zns.subRegistrar.connect(lvl3SubOwner).setPricerContractForDomain(domainHash, ethers.ZeroAddress) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + ZERO_ADDRESS_ERR ); }); }); @@ -3257,12 +3293,10 @@ describe("ZNSSubRegistrar", () => { const domainHash = regResults[2].domainHash; await expect( - zns.subRegistrar.connect(lvl2SubOwner).setPaymentTypeForDomain( - domainHash, - PaymentType.STAKE, - ) - ).to.be.revertedWith( - "ZNSSubRegistrar: Not authorized" + zns.subRegistrar.connect(lvl2SubOwner).setPaymentTypeForDomain(domainHash, PaymentType.STAKE) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + NOT_AUTHORIZED_ERR ); }); @@ -3362,7 +3396,7 @@ describe("ZNSSubRegistrar", () => { deployer.address, deployer.address, ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); it("#setRootRegistrar() should set the new root registrar correctly and emit #RootRegistrarSet event", async () => { @@ -3374,18 +3408,17 @@ describe("ZNSSubRegistrar", () => { }); it("#setRootRegistrar() should NOT be callable by anyone other than ADMIN_ROLE", async () => { - await expect( - zns.subRegistrar.connect(random).setRootRegistrar(random.address), - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE), - ); + await expect(zns.subRegistrar.connect(random).setRootRegistrar(random.address)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); it("#setRootRegistrar should NOT set registrar as 0x0 address", async () => { await expect( - zns.subRegistrar.connect(admin).setRootRegistrar(ethers.ZeroAddress), - ).to.be.revertedWith( - "ZNSSubRegistrar: _registrar can not be 0x0 address", + zns.subRegistrar.connect(admin).setRootRegistrar(ethers.ZeroAddress) + ).to.be.revertedWithCustomError( + zns.subRegistrar, + ZERO_ADDRESS_ERR ); }); @@ -3398,19 +3431,15 @@ describe("ZNSSubRegistrar", () => { }); it("#setRegistry() should not be callable by anyone other than ADMIN_ROLE", async () => { - await expect( - zns.subRegistrar.connect(random).setRegistry(random.address), - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE), - ); + await expect(zns.subRegistrar.connect(random).setRegistry(random.address)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); it("#setAccessController() should not be callable by anyone other than ADMIN_ROLE", async () => { - await expect( - zns.subRegistrar.connect(random).setAccessController(random.address), - ).to.be.revertedWith( - getAccessRevertMsg(random.address, ADMIN_ROLE), - ); + await expect(zns.subRegistrar.connect(random).setAccessController(random.address)) + .to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(random.address, ADMIN_ROLE); }); it("#getAccessController() should return the correct access controller", async () => { @@ -3494,7 +3523,10 @@ describe("ZNSSubRegistrar", () => { // Confirm the deployer is a governor, as set in `deployZNS` helper await expect(zns.accessController.checkGovernor(deployer.address)).to.not.be.reverted; - const tx = zns.subRegistrar.connect(deployer).upgradeTo(await newRegistrar.getAddress()); + const tx = zns.subRegistrar.connect(deployer).upgradeToAndCall( + await newRegistrar.getAddress(), + "0x" + ); await expect(tx).to.not.be.reverted; await expect( @@ -3503,7 +3535,7 @@ describe("ZNSSubRegistrar", () => { await zns.registry.getAddress(), await zns.rootRegistrar.getAddress(), ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(zns.subRegistrar, INITIALIZED_ERR); }); it("Fails to upgrade if the caller is not authorized", async () => { @@ -3515,11 +3547,13 @@ describe("ZNSSubRegistrar", () => { // Confirm the account is not a governor await expect(zns.accessController.checkGovernor(lvl2SubOwner.address)).to.be.reverted; - const tx = zns.subRegistrar.connect(lvl2SubOwner).upgradeTo(await newRegistrar.getAddress()); - - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(lvl2SubOwner.address, GOVERNOR_ROLE) + const tx = zns.subRegistrar.connect(lvl2SubOwner).upgradeToAndCall( + await newRegistrar.getAddress(), + "0x" ); + + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(lvl2SubOwner.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { @@ -3579,7 +3613,10 @@ describe("ZNSSubRegistrar", () => { const newRegistrar = await factory.deploy(); await newRegistrar.waitForDeployment(); - const tx = zns.subRegistrar.connect(deployer).upgradeTo(await newRegistrar.getAddress()); + const tx = zns.subRegistrar.connect(deployer).upgradeToAndCall( + await newRegistrar.getAddress(), + "0x" + ); await expect(tx).to.not.be.reverted; // create new proxy object diff --git a/test/ZNSTreasury.test.ts b/test/ZNSTreasury.test.ts index f215ee5c6..fcb589997 100644 --- a/test/ZNSTreasury.test.ts +++ b/test/ZNSTreasury.test.ts @@ -7,18 +7,16 @@ import { distrConfigEmpty, getPriceObject, NO_BENEFICIARY_ERR, - NOT_AUTHORIZED_REG_WIRED_ERR, INITIALIZED_ERR, DEFAULT_PRICE_CONFIG, validateUpgrade, - NOT_AUTHORIZED_TREASURY_ERR, - getStakingOrProtocolFee, + NOT_AUTHORIZED_ERR, + getStakingOrProtocolFee, AC_UNAUTHORIZED_ERR, ZERO_ADDRESS_ERR, } from "./helpers"; import { DeployZNSParams, IZNSContractsLocal } from "./helpers/types"; import * as ethers from "ethers"; import { hashDomainLabel, hashSubdomainName } from "./helpers/hashing"; import { ADMIN_ROLE, REGISTRAR_ROLE, GOVERNOR_ROLE } from "../src/deploy/constants"; -import { getAccessRevertMsg } from "./helpers/errors"; import { ZNSTreasury, ZNSTreasury__factory, ZNSTreasuryUpgradeMock__factory } from "../typechain"; import { getProxyImplAddress } from "./helpers/utils"; @@ -105,7 +103,10 @@ describe("ZNSTreasury", () => { zns.zeroVaultAddress, await zns.accessController.getAddress() ); - await expect(tx).to.be.revertedWith("Initializable: contract is already initialized"); + await expect(tx).to.be.revertedWithCustomError( + zns.treasury, + INITIALIZED_ERR + ); }); it("Should NOT let initialize the implementation contract", async () => { @@ -120,7 +121,7 @@ describe("ZNSTreasury", () => { zns.zeroVaultAddress, await zns.accessController.getAddress() ) - ).to.be.revertedWith(INITIALIZED_ERR); + ).to.be.revertedWithCustomError(implContract, INITIALIZED_ERR); }); it("should NOT deploy/initialize with 0x0 addresses as args", async () => { @@ -186,18 +187,15 @@ describe("ZNSTreasury", () => { }); it("Should revert if called from an address without REGISTRAR_ROLE", async () => { - await expect( - zns.treasury.connect(randomAcc).stakeForDomain( - ethers.ZeroHash, - domainHash, - user.address, - BigInt(0), - BigInt(0), - BigInt(0) - ) - ).to.be.revertedWith( - getAccessRevertMsg(randomAcc.address, REGISTRAR_ROLE) - ); + await expect(zns.treasury.connect(randomAcc).stakeForDomain( + ethers.ZeroHash, + domainHash, + user.address, + BigInt(0), + BigInt(0), + BigInt(0) + )).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomAcc.address,REGISTRAR_ROLE); }); it("Should fire StakeDeposited event with correct params", async () => { @@ -264,15 +262,12 @@ describe("ZNSTreasury", () => { it("Should revert if called from an address without REGISTRAR_ROLE", async () => { const { amount } = await zns.treasury.stakedForDomain(domainHash); const protocolFee = getStakingOrProtocolFee(amount); - await expect( - zns.treasury.connect(user).unstakeForDomain( - domainHash, - user.address, - protocolFee - ) - ).to.be.revertedWith( - getAccessRevertMsg(user.address, REGISTRAR_ROLE) - ); + await expect(zns.treasury.connect(user).unstakeForDomain( + domainHash, + user.address, + protocolFee + )).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,REGISTRAR_ROLE); }); }); @@ -343,21 +338,21 @@ describe("ZNSTreasury", () => { paymentAmt, protocolFee ) - ).to.be.revertedWith(NO_BENEFICIARY_ERR); + ).to.be.revertedWithCustomError( + zns.treasury, + NO_BENEFICIARY_ERR + ); }); it("should revert if called by anyone other than REGISTRAR_ROLE", async () => { - await expect( - zns.treasury.connect(randomAcc).processDirectPayment( - ethers.ZeroHash, - domainHash, - mockRegistrar.address, - "0", - "0" - ) - ).to.be.revertedWith( - getAccessRevertMsg(randomAcc.address, REGISTRAR_ROLE) - ); + await expect(zns.treasury.connect(randomAcc).processDirectPayment( + ethers.ZeroHash, + domainHash, + mockRegistrar.address, + "0", + "0" + )).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(randomAcc.address,REGISTRAR_ROLE); }); it("should emit DirectPaymentProcessed event with correct params", async () => { @@ -429,12 +424,10 @@ describe("ZNSTreasury", () => { }; await expect( - zns.treasury.connect(randomAcc).setPaymentConfig( - domainHash, - configToSet, - ) - ).to.be.revertedWith( - NOT_AUTHORIZED_TREASURY_ERR + zns.treasury.connect(randomAcc).setPaymentConfig(domainHash, configToSet) + ).to.be.revertedWithCustomError( + zns.treasury, + NOT_AUTHORIZED_ERR ); }); @@ -445,12 +438,10 @@ describe("ZNSTreasury", () => { }; await expect( - zns.treasury.connect(user).setPaymentConfig( - domainHash, - zeroBeneficiaryConf - ) - ).to.be.revertedWith( - "ZNSTreasury: beneficiary passed as 0x0 address" + zns.treasury.connect(user).setPaymentConfig(domainHash, zeroBeneficiaryConf) + ).to.be.revertedWithCustomError( + zns.treasury, + ZERO_ADDRESS_ERR ); const meowTokenConf = { @@ -459,12 +450,10 @@ describe("ZNSTreasury", () => { }; await expect( - zns.treasury.connect(user).setPaymentConfig( - domainHash, - meowTokenConf - ) - ).to.be.revertedWith( - "ZNSTreasury: paymentToken passed as 0x0 address" + zns.treasury.connect(user).setPaymentConfig(domainHash, meowTokenConf) + ).to.be.revertedWithCustomError( + zns.treasury, + ZERO_ADDRESS_ERR ); }); }); @@ -495,9 +484,7 @@ describe("ZNSTreasury", () => { ethers.ZeroHash, mockRegistrar.address ); - await expect(tx).to.be.revertedWith( - NOT_AUTHORIZED_REG_WIRED_ERR - ); + await expect(tx).to.be.revertedWithCustomError(zns.treasury, NOT_AUTHORIZED_ERR); }); it("Should revert when beneficiary is address 0", async () => { @@ -505,7 +492,7 @@ describe("ZNSTreasury", () => { ethers.ZeroHash, ethers.ZeroAddress ); - await expect(tx).to.be.revertedWith("ZNSTreasury: beneficiary passed as 0x0 address"); + await expect(tx).to.be.revertedWithCustomError(zns.treasury, ZERO_ADDRESS_ERR); }); }); @@ -533,14 +520,15 @@ describe("ZNSTreasury", () => { domainHash, randomAcc.address ); - await expect(tx).to.be.revertedWith( - NOT_AUTHORIZED_REG_WIRED_ERR + await expect(tx).to.be.revertedWithCustomError( + zns.treasury, + NOT_AUTHORIZED_ERR ); }); it("Should revert when paymentToken is address 0", async () => { const tx = zns.treasury.connect(user).setPaymentToken(domainHash, ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("ZNSTreasury: paymentToken passed as 0x0 address"); + await expect(tx).to.be.revertedWithCustomError(zns.treasury, ZERO_ADDRESS_ERR); }); }); @@ -559,14 +547,13 @@ describe("ZNSTreasury", () => { it("Should revert when called from any address without ADMIN_ROLE", async () => { const tx = zns.treasury.connect(user).setAccessController(randomAcc.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Should revert when accessController is address 0", async () => { const tx = zns.treasury.setAccessController(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("AC: _accessController is 0x0 address"); + await expect(tx).to.be.revertedWithCustomError(zns.treasury, ZERO_ADDRESS_ERR); }); }); @@ -585,14 +572,13 @@ describe("ZNSTreasury", () => { it("Should revert when called from any address without ADMIN_ROLE", async () => { const tx = zns.treasury.connect(user).setRegistry(randomAcc.address); - await expect(tx).to.be.revertedWith( - getAccessRevertMsg(user.address, ADMIN_ROLE) - ); + await expect(tx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address,ADMIN_ROLE); }); it("Should revert when registry is address 0", async () => { const tx = zns.treasury.setRegistry(ethers.ZeroAddress); - await expect(tx).to.be.revertedWith("ARegistryWired: _registry can not be 0x0 address"); + await expect(tx).to.be.revertedWithCustomError(zns.treasury, ZERO_ADDRESS_ERR); }); }); @@ -607,7 +593,10 @@ describe("ZNSTreasury", () => { const treasury = await treasuryFactory.deploy(); await treasury.waitForDeployment(); - await expect(zns.treasury.connect(deployer).upgradeTo(await treasury.getAddress())).to.not.be.reverted; + await expect(zns.treasury.connect(deployer).upgradeToAndCall( + await treasury.getAddress(), + "0x" + )).to.not.be.reverted; }); it("Fails when an unauthorized user tries to upgrade the contract", async () => { @@ -619,8 +608,12 @@ describe("ZNSTreasury", () => { const treasury = await treasuryFactory.deploy(); await treasury.waitForDeployment(); - const deployTx = zns.treasury.connect(user).upgradeTo(await treasury.getAddress()); - await expect(deployTx).to.be.revertedWith(getAccessRevertMsg(user.address, GOVERNOR_ROLE)); + const deployTx = zns.treasury.connect(user).upgradeToAndCall( + await treasury.getAddress(), + "0x" + ); + await expect(deployTx).to.be.revertedWithCustomError(zns.accessController, AC_UNAUTHORIZED_ERR) + .withArgs(user.address, GOVERNOR_ROLE); }); it("Verifies that variable values are not changed in the upgrade process", async () => { diff --git a/test/gas/gas-costs.json b/test/gas/gas-costs.json index 0e8224f11..c533f9173 100644 --- a/test/gas/gas-costs.json +++ b/test/gas/gas-costs.json @@ -1,4 +1,4 @@ { - "Root Domain Price": "475352", - "Subdomain Price": "469054" + "Root Domain Price": "470041", + "Subdomain Price": "463156" } \ No newline at end of file diff --git a/test/helpers/constants.ts b/test/helpers/constants.ts index 54886505e..a3adc1bc1 100644 --- a/test/helpers/constants.ts +++ b/test/helpers/constants.ts @@ -2,8 +2,8 @@ import { ethers } from "hardhat"; import { ICurvePriceConfig } from "../../src/deploy/missions/types"; export const DEFAULT_RESOLVER_TYPE = "address"; -export const ZNS_DOMAIN_TOKEN_NAME = "Zero Name Service"; -export const ZNS_DOMAIN_TOKEN_SYMBOL = "ZNS"; +export const ZNS_DOMAIN_TOKEN_NAME = "ZERO ID"; +export const ZNS_DOMAIN_TOKEN_SYMBOL = "ZID"; export const DEFAULT_ROYALTY_FRACTION = BigInt("200"); export const DEFAULT_TOKEN_URI = "https://www.zns.domains/7c654a5f"; diff --git a/test/helpers/errors.ts b/test/helpers/errors.ts index 2d6cdf0e9..cbb42de14 100644 --- a/test/helpers/errors.ts +++ b/test/helpers/errors.ts @@ -5,40 +5,44 @@ export const getAccessRevertMsg = (addr : string, role : string) : string => // When adding a revert test, check if this message is already present in other tests // if it is, add a new constant here and use it in all tests +// AccessControl +export const AC_UNAUTHORIZED_ERR = "AccessControlUnauthorizedAccount"; + +// ERC20 +export const INSUFFICIENT_BALANCE_ERC_ERR = "ERC20InsufficientBalance"; +export const INSUFFICIENT_ALLOWANCE_ERC_ERR = "ERC20InsufficientAllowance"; + +// CommonErrors.sol +export const ZERO_ADDRESS_ERR = "ZeroAddressPassed"; +export const DOMAIN_EXISTS_ERR = "DomainAlreadyExists"; +export const NOT_AUTHORIZED_ERR = "NotAuthorizedForDomain"; + +// IZNSPricer.sol +export const PARENT_CONFIG_NOT_SET_ERR = "ParentPriceConfigNotSet"; +export const FEE_TOO_LARGE_ERR = "FeePercentageValueTooLarge"; + // ZNSCurvePricer.sol -export const MULTIPLIER_BELOW_MIN_ERR = "ZNSCurvePricer: Multiplier must be >= baseLength + 1"; -export const NO_ZERO_MULTIPLIER_ERR = "ZNSCurvePricer: Multiplier cannot be 0"; -export const MULTIPLIER_OUT_OF_RANGE_ORA_ERR = "ZNSCurvePricer: Multiplier out of range"; -export const CURVE_NO_ZERO_PRECISION_MULTIPLIER_ERR = "ZNSCurvePricer: precisionMultiplier cannot be 0"; -export const CURVE_PRICE_CONFIG_ERR = "ZNSCurvePricer: incorrect value set causes the price spike at maxLength."; - -// ZNSRegistry -export const ONLY_NAME_OWNER_REG_ERR = "ZNSRegistry: Not the Name Owner"; -export const ONLY_OWNER_REGISTRAR_REG_ERR = "ZNSRegistry: Only Name Owner or Registrar allowed to call"; -export const NOT_AUTHORIZED_REG_WIRED_ERR = "ARegistryWired: Not authorized. Only Owner or Operator allowed"; -export const NOT_AUTHORIZED_REG_ERR = "ZNSRegistry: Not authorized"; -export const OWNER_NOT_ZERO_REG_ERR = "ZNSRegistry: Owner cannot be zero address"; +export const INVALID_MULTIPLIER_ERR = "InvalidMultiplierPassed"; +export const INVALID_PRICE_CONFIG_ERR = "InvalidConfigCausingPriceSpikes"; // ZNSRootRegistrar.sol -export const NOT_NAME_OWNER_RAR_ERR = "ZNSRootRegistrar: Not the owner of the Name"; -export const NOT_TOKEN_OWNER_RAR_ERR = "ZNSRootRegistrar: Not the owner of the Token"; -export const NOT_BOTH_OWNER_RAR_ERR = "ZNSRootRegistrar: Not the owner of both Name and Token"; +export const NOT_OWNER_OF_ERR = "NotTheOwnerOf"; // Subdomain Registrar // eslint-disable-next-line max-len -export const DISTRIBUTION_LOCKED_NOT_EXIST_ERR = "ZNSSubRegistrar: Parent domain's distribution is locked or parent does not exist"; +export const DISTRIBUTION_LOCKED_NOT_EXIST_ERR = "ParentLockedOrDoesntExist"; +export const SENDER_NOT_APPROVED_ERR = "SenderNotApprovedForPurchase"; // StringUtils -export const INVALID_NAME_ERR = "StringUtils: Invalid domain label"; -export const INVALID_LENGTH_ERR = "StringUtils: Domain label too long or nonexistent"; +export const INVALID_LABEL_ERR = "DomainLabelContainsInvalidCharacters"; +export const INVALID_LENGTH_ERR = "DomainLabelTooLongOrNonexistent"; // Treasury -export const NO_BENEFICIARY_ERR = "ZNSTreasury: parent domain has no beneficiary set"; -export const NOT_AUTHORIZED_TREASURY_ERR = "ZNSTreasury: Not authorized."; +export const NO_BENEFICIARY_ERR = "NoBeneficiarySetForParent"; // OpenZeppelin -export const INVALID_TOKENID_ERC_ERR = "ERC721: invalid token ID"; -export const INITIALIZED_ERR = "Initializable: contract is already initialized"; +export const NONEXISTENT_TOKEN_ERC_ERR = "ERC721NonexistentToken"; +export const INITIALIZED_ERR = "InvalidInitialization"; // Environment validation export const INVALID_ENV_ERR = "Invalid environment value. Must set env to one of `dev`, `test`, or `prod`"; diff --git a/test/helpers/validate-upgrade.ts b/test/helpers/validate-upgrade.ts index 58c23f6f7..1cace9578 100644 --- a/test/helpers/validate-upgrade.ts +++ b/test/helpers/validate-upgrade.ts @@ -2,7 +2,8 @@ import { expect } from "chai"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; import { ZNSContractMock, ZNSContractMockFactory, GeneralContractGetter } from "./types"; import { ZNSContract } from "../../src/deploy/campaign/types"; -import { MeowToken, ZNSAccessController } from "../../typechain"; +import { ZNSAccessController } from "../../typechain"; +import { MeowToken } from "@zero-tech/ztoken/typechain-js"; export const validateUpgrade = async ( @@ -14,7 +15,9 @@ export const validateUpgrade = async ( ) => { const preVals = await Promise.all(getters); - await contract.connect(deployer).upgradeTo(await upgradeContract.getAddress()); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + await contract.connect(deployer).upgradeToAndCall(await upgradeContract.getAddress(), "0x"); // Typechain doesn't update the generated interface for the contract after upgrading // so we use the new factory to attach to the existing address instead diff --git a/yarn.lock b/yarn.lock index d4beb8bed..a4ddc31b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,15 +2,10 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@adraffy/ens-normalize@1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" - integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== "@aws-crypto/sha256-js@1.2.2": version "1.2.2" @@ -31,12 +26,12 @@ tslib "^1.11.1" "@aws-sdk/types@^3.1.0": - version "3.496.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.496.0.tgz#cdde44a94a57cf8f97cf05e4d0bdce2f56ce4eeb" - integrity sha512-umkGadK4QuNQaMoDICMm7NKRI/mYSXiyPjcn3d53BhsuArYU/52CebGQKdt4At7SwwsiVJZw9RNBHyN5Mm0HVw== + version "3.598.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.598.0.tgz#b840d2446dee19a2a4731e6166f2327915d846db" + integrity sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ== dependencies: - "@smithy/types" "^2.9.1" - tslib "^2.5.0" + "@smithy/types" "^3.1.0" + tslib "^2.6.2" "@aws-sdk/util-utf8-browser@^3.0.0": version "3.259.0" @@ -46,70 +41,35 @@ tslib "^2.3.1" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.21.4": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== dependencies: - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-validator-identifier" "^7.24.7" chalk "^2.4.2" js-tokens "^4.0.0" + picocolors "^1.0.0" "@babel/runtime@^7.4.4": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" - integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@chainsafe/as-sha256@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" - integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== - -"@chainsafe/persistent-merkle-tree@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" - integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== - dependencies: - "@chainsafe/as-sha256" "^0.3.1" - -"@chainsafe/persistent-merkle-tree@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" - integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== - dependencies: - "@chainsafe/as-sha256" "^0.3.1" - -"@chainsafe/ssz@^0.10.0": - version "0.10.2" - resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" - integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== - dependencies: - "@chainsafe/as-sha256" "^0.3.1" - "@chainsafe/persistent-merkle-tree" "^0.5.0" - -"@chainsafe/ssz@^0.9.2": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" - integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== - dependencies: - "@chainsafe/as-sha256" "^0.3.1" - "@chainsafe/persistent-merkle-tree" "^0.4.2" - case "^1.6.3" - "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -196,9 +156,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -215,10 +175,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.56.0": - version "8.56.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" - integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@ethereumjs/rlp@^4.0.1": version "4.0.1" @@ -425,7 +385,7 @@ dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.2": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -577,16 +537,16 @@ "@ethersproject/strings" "^5.7.0" "@fastify/busboy@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" - integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@humanwhocodes/config-array@^0.11.13": +"@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== @@ -601,9 +561,9 @@ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -623,9 +583,9 @@ integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@jridgewell/resolve-uri@^3.0.3": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" @@ -651,10 +611,10 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@mongodb-js/saslprep@^1.1.0": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz#24ec1c4915a65f5c506bb88c081731450d91bb1c" - integrity sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw== +"@mongodb-js/saslprep@^1.1.5": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz#d1700facfd6916c50c2c88fd6d48d363a56c702f" + integrity sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q== dependencies: sparse-bitfield "^3.0.3" @@ -665,12 +625,12 @@ dependencies: "@noble/hashes" "1.3.2" -"@noble/curves@1.3.0", "@noble/curves@~1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" - integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== +"@noble/curves@1.4.0", "@noble/curves@~1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" + integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== dependencies: - "@noble/hashes" "1.3.3" + "@noble/hashes" "1.4.0" "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" @@ -682,10 +642,10 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" - integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== +"@noble/hashes@1.4.0", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" @@ -713,162 +673,106 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/ethereumjs-block@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" - integrity sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q== - dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - ethereum-cryptography "0.1.3" - ethers "^5.7.1" +"@nomicfoundation/edr-darwin-arm64@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.4.1.tgz#210e6b5eaff9278814e8f19800182d1071554855" + integrity sha512-XuiUUnWAVNw7JYv7nRqDWfpBm21HOxCRBQ8lQnRnmiets9Ss2X5Ul9mvBheIPh/D0wBzwJ8TRtsSrorpwE79cA== -"@nomicfoundation/ethereumjs-blockchain@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" - integrity sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-ethash" "3.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - abstract-level "^1.0.3" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - level "^8.0.0" - lru-cache "^5.1.1" - memory-level "^1.0.0" +"@nomicfoundation/edr-darwin-x64@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.4.1.tgz#81e660de77d1d73317c9a5140349d1197cddef9a" + integrity sha512-N1MfJqEX5ixaXlyyrHnaYxzwIT27Nc/jUgLI7ts4/9kRvPTvyZRYmXS1ciKhmUFr/WvFckTCix2RJbZoGGtX7g== -"@nomicfoundation/ethereumjs-common@4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" - integrity sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg== - dependencies: - "@nomicfoundation/ethereumjs-util" "9.0.2" - crc-32 "^1.2.0" +"@nomicfoundation/edr-linux-arm64-gnu@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.4.1.tgz#6e1ce12080a35505c7f3eaf772f4e171db8b7f9a" + integrity sha512-bSPOfmcFjJwDgWOV5kgZHeqg2OWu1cINrHSGjig0aVHehjcoX4Sgayrj6fyAxcOV5NQKA6WcyTFll6NrCxzWRA== -"@nomicfoundation/ethereumjs-ethash@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" - integrity sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - abstract-level "^1.0.3" - bigint-crypto-utils "^3.0.23" - ethereum-cryptography "0.1.3" +"@nomicfoundation/edr-linux-arm64-musl@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.4.1.tgz#a467a6c8631053d10a8641f67618b9bdf057c636" + integrity sha512-F/+DgOdeBFQDrk+SX4aFffJFBgJfd75ZtE2mjcWNAh/qWiS7NfUxdQX/5OvNo/H6EY4a+3bZH6Bgzqg4mEWvMw== -"@nomicfoundation/ethereumjs-evm@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" - integrity sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ== - dependencies: - "@ethersproject/providers" "^5.7.1" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" +"@nomicfoundation/edr-linux-x64-gnu@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.4.1.tgz#63753d05767b4bc0d4f9f9be8399928c790c931e" + integrity sha512-POHhTWczIXCPhzKtY0Vt/l+VCqqCx5gNR5ErwSrNnLz/arfQobZFAU+nc61BX3Jch82TW8b3AbfGI73Kh7gO0w== -"@nomicfoundation/ethereumjs-rlp@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" - integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== +"@nomicfoundation/edr-linux-x64-musl@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.4.1.tgz#44d128b9a09e3f61b08617213a58cd84dd15c418" + integrity sha512-uu8oNp4Ozg3H1x1We0FF+rwXfFiAvsOm5GQ+OBx9YYOXnfDPWqguQfGIkhrti9GD0iYhfQ/WOG5wvp0IzzgGSg== -"@nomicfoundation/ethereumjs-statemanager@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" - integrity sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA== - dependencies: - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - debug "^4.3.3" - ethereum-cryptography "0.1.3" - ethers "^5.7.1" - js-sdsl "^4.1.4" +"@nomicfoundation/edr-win32-x64-msvc@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.4.1.tgz#1667b725337ca6f27ec58c63337b6a62a0d7ed09" + integrity sha512-PaZHFw455z89ZiKYNTnKu+/TiVZVRI+mRJsbRTe2N0VlYfUBS1o2gdXBM12oP1t198HR7xQwEPPAslTFxGBqHA== -"@nomicfoundation/ethereumjs-trie@6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" - integrity sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ== +"@nomicfoundation/edr@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.4.1.tgz#7d698454d228ffc5399f1c58799104b53e1b60ae" + integrity sha512-NgrMo2rI9r28uidumvd+K2/AJLdxtXsUlJr3hj/pM6S1FCd/HiWaLeLa/cjCVPcE2u1rYAa3W6UFxLCB7S5Dhw== + dependencies: + "@nomicfoundation/edr-darwin-arm64" "0.4.1" + "@nomicfoundation/edr-darwin-x64" "0.4.1" + "@nomicfoundation/edr-linux-arm64-gnu" "0.4.1" + "@nomicfoundation/edr-linux-arm64-musl" "0.4.1" + "@nomicfoundation/edr-linux-x64-gnu" "0.4.1" + "@nomicfoundation/edr-linux-x64-musl" "0.4.1" + "@nomicfoundation/edr-win32-x64-msvc" "0.4.1" + +"@nomicfoundation/ethereumjs-common@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb" + integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== dependencies: - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - "@types/readable-stream" "^2.3.13" - ethereum-cryptography "0.1.3" - readable-stream "^3.6.0" + "@nomicfoundation/ethereumjs-util" "9.0.4" -"@nomicfoundation/ethereumjs-tx@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" - integrity sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g== - dependencies: - "@chainsafe/ssz" "^0.9.2" - "@ethersproject/providers" "^5.7.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - ethereum-cryptography "0.1.3" +"@nomicfoundation/ethereumjs-rlp@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30" + integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== -"@nomicfoundation/ethereumjs-util@9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" - integrity sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ== +"@nomicfoundation/ethereumjs-tx@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da" + integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== dependencies: - "@chainsafe/ssz" "^0.10.0" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-vm@7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" - integrity sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA== - dependencies: - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-blockchain" "7.0.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-evm" "2.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-statemanager" "2.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - debug "^4.3.3" +"@nomicfoundation/ethereumjs-util@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38" + integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.4" ethereum-cryptography "0.1.3" - mcl-wasm "^0.7.1" - rustbn.js "~0.2.0" "@nomicfoundation/hardhat-chai-matchers@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.3.tgz#f4c074d39b74bd283c99e2c2bf143e3cef51ae18" - integrity sha512-A40s7EAK4Acr8UP1Yudgi9GGD9Cca/K3LHt3DzmRIje14lBfHtg9atGQ7qK56vdPcTwKmeaGn30FzxMUfPGEMw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.7.tgz#89d90b2d77a00f6fd8fe42eabe40a82b5e065075" + integrity sha512-RQfsiTwdf0SP+DtuNYvm4921X6VirCQq0Xyh+mnuGlTwEFSPZ/o27oQC+l+3Y/l48DDU7+ZcYBR+Fp+Rp94LfQ== dependencies: "@types/chai-as-promised" "^7.1.3" chai-as-promised "^7.1.1" deep-eql "^4.0.1" ordinal "^1.0.3" -"@nomicfoundation/hardhat-ethers@^3.0.4", "@nomicfoundation/hardhat-ethers@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.5.tgz#0422c2123dec7c42e7fb2be8e1691f1d9708db56" - integrity sha512-RNFe8OtbZK6Ila9kIlHp0+S80/0Bu/3p41HUpaRIoHLm6X3WekTd83vob3rE54Duufu1edCiBDxspBzi2rxHHw== +"@nomicfoundation/hardhat-ethers@^3.0.4", "@nomicfoundation/hardhat-ethers@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.6.tgz#e8ba7f9719de360c03501b85dae4999bb3a7e1c5" + integrity sha512-/xzkFQAaHQhmIAYOQmvHBPwL+NkwLzT9gRZBsgWUYeV+E6pzXsBQsHfRYbAZ3XEYare+T7S+5Tg/1KDJgepSkA== dependencies: debug "^4.1.1" lodash.isequal "^4.5.0" -"@nomicfoundation/hardhat-network-helpers@^1.0.9": - version "1.0.10" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.10.tgz#c61042ceb104fdd6c10017859fdef6529c1d6585" - integrity sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ== +"@nomicfoundation/hardhat-network-helpers@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.11.tgz#64096829661b960b88679bd5c4fbcb50654672d1" + integrity sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA== dependencies: ethereumjs-util "^7.1.4" @@ -877,10 +781,10 @@ resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-4.0.0.tgz#eb1f619218dd1414fa161dfec92d3e5e53a2f407" integrity sha512-jhcWHp0aHaL0aDYj8IJl80v4SZXWMS1A2XxXa1CA6pBiFfJKuZinCkO6wb+POAt0LIfXB3gA3AgdcOccrcwBwA== -"@nomicfoundation/hardhat-verify@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.3.tgz#173557f8cfa53c8c9da23a326f54d24fe459ae68" - integrity sha512-ESbRu9by53wu6VvgwtMtm108RSmuNsVqXtzg061D+/4R7jaWh/Wl/8ve+p6SdDX7vA1Z3L02hDO1Q3BY4luLXQ== +"@nomicfoundation/hardhat-verify@^2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.8.tgz#6a77dc03de990a1a3aa8e6dc073c393263dbf258" + integrity sha512-x/OYya7A2Kcz+3W/J78dyDHxr0ezU23DKTrRKfy5wDPCnePqnr79vm8EXqX3gYps6IjPBYyGPZ9K6E5BnrWx5Q== dependencies: "@ethersproject/abi" "^5.1.2" "@ethersproject/address" "^5.0.2" @@ -892,76 +796,58 @@ table "^6.8.0" undici "^5.14.0" -"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" - integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== - -"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" - integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== - -"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" - integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== - -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" - integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== - -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" - integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== - -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" - integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== - -"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" - integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== - -"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" - integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== - -"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" - integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== - -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" - integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz#3a9c3b20d51360b20affb8f753e756d553d49557" + integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz#74dcfabeb4ca373d95bd0d13692f44fcef133c28" + integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz#4af5849a89e5a8f511acc04f28eb5d4460ba2b6a" + integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz#54036808a9a327b2ff84446c130a6687ee702a8e" + integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz#466cda0d6e43691986c944b909fc6dbb8cfc594e" + integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz#2b35826987a6e94444140ac92310baa088ee7f94" + integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz#e6363d13b8709ca66f330562337dbc01ce8bbbd9" + integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA== "@nomicfoundation/solidity-analyzer@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" - integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz#8bcea7d300157bf3a770a851d9f5c5e2db34ac55" + integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA== optionalDependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" - "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" - "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" - "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + "@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" "@npmcli/arborist@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.5.0.tgz#ee24ecc56e4c387d78c3bce66918b386df6bd560" - integrity sha512-Ir14P+DyH4COJ9fVbmxVy+9GmyU3e/DnlBtijVN7B3Ri53Y9QmAqi1S9IifG0PTGsfa2U4zhAF8e6I/0VXfWjg== + version "6.5.1" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.5.1.tgz#b378a2e162e9b868d06f8f2c7e87e828de7e63ba" + integrity sha512-cdV8pGurLK0CifZRilMJbm2CZ3H4Snk8PAqOngj5qmgFLjEllMLvScSZ3XKfd+CK8fo/hrPHO9zazy9OYdvmUg== dependencies: "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/fs" "^3.1.0" @@ -971,7 +857,7 @@ "@npmcli/name-from-folder" "^2.0.0" "@npmcli/node-gyp" "^3.0.0" "@npmcli/package-json" "^4.0.0" - "@npmcli/query" "^3.0.0" + "@npmcli/query" "^3.1.0" "@npmcli/run-script" "^6.0.0" bin-links "^4.0.1" cacache "^17.0.4" @@ -998,12 +884,12 @@ walk-up-path "^3.0.1" "@npmcli/config@^6.4.0": - version "6.4.0" - resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-6.4.0.tgz#3b1ddfa0c452fd09beac2cf05ca49b76c7a36bc8" - integrity sha512-/fQjIbuNVIT/PbXvw178Tm97bxV0E0nVUFKHivMKtSI2pcs8xKdaWkHJxf9dTI0G/y5hp/KuCvgcUu5HwAtI1w== + version "6.4.1" + resolved "https://registry.yarnpkg.com/@npmcli/config/-/config-6.4.1.tgz#006409c739635db008e78bf58c92421cc147911d" + integrity sha512-uSz+elSGzjCMANWa5IlbGczLYPkNI/LeR+cHrgaTqTrTSh9RHhOFA4daD2eRUz6lMtOW+Fnsb+qv7V2Zz8ML0g== dependencies: "@npmcli/map-workspaces" "^3.0.2" - ci-info "^3.8.0" + ci-info "^4.0.0" ini "^4.1.0" nopt "^7.0.0" proc-log "^3.0.0" @@ -1012,9 +898,9 @@ walk-up-path "^3.0.1" "@npmcli/disparity-colors@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/disparity-colors/-/disparity-colors-3.0.0.tgz#60ea8c6eb5ba9de2d1950e15b06205b2c3ab7833" - integrity sha512-5R/z157/f20Fi0Ou4ZttL51V0xz0EdPEOauFtPCEYOLInDBRCj1/TxOJ5aGTrtShxEshN2d+hXb9ZKSi5RLBcg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/disparity-colors/-/disparity-colors-3.0.1.tgz#042d5ef548200c81e3ee3a84c994744573fe79fd" + integrity sha512-cOypTz/9IAhaPgOktbDNPeccTU88y8I1ZURbPeC0ooziK1h6dRJs2iGz1eKP1muaeVbow8GqQ0DaxLG8Bpmblw== dependencies: ansi-styles "^4.3.0" @@ -1027,9 +913,9 @@ semver "^7.3.5" "@npmcli/fs@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" - integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== dependencies: semver "^7.3.5" @@ -1048,17 +934,17 @@ which "^3.0.0" "@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" - integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== dependencies: npm-bundled "^3.0.0" npm-normalize-package-bin "^3.0.0" "@npmcli/map-workspaces@^3.0.2", "@npmcli/map-workspaces@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz#15ad7d854292e484f7ba04bc30187a8320dba799" - integrity sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg== + version "3.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== dependencies: "@npmcli/name-from-folder" "^2.0.0" glob "^10.2.2" @@ -1113,10 +999,10 @@ dependencies: which "^3.0.0" -"@npmcli/query@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.0.1.tgz#77d63ceb7d27ed748da3cc8b50d45fc341448ed6" - integrity sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA== +"@npmcli/query@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== dependencies: postcss-selector-parser "^6.0.10" @@ -1137,46 +1023,51 @@ integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== "@octokit/core@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.1.0.tgz#81dacf0197ed7855e6413f128bd6dd9e121e7d2f" - integrity sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g== + version "5.2.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.2.0.tgz#ddbeaefc6b44a39834e1bb2e58a49a117672a7ea" + integrity sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg== dependencies: "@octokit/auth-token" "^4.0.0" - "@octokit/graphql" "^7.0.0" - "@octokit/request" "^8.0.2" - "@octokit/request-error" "^5.0.0" - "@octokit/types" "^12.0.0" + "@octokit/graphql" "^7.1.0" + "@octokit/request" "^8.3.1" + "@octokit/request-error" "^5.1.0" + "@octokit/types" "^13.0.0" before-after-hook "^2.2.0" universal-user-agent "^6.0.0" -"@octokit/endpoint@^9.0.0": - version "9.0.4" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.4.tgz#8afda5ad1ffc3073d08f2b450964c610b821d1ea" - integrity sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw== +"@octokit/endpoint@^9.0.1": + version "9.0.5" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.5.tgz#e6c0ee684e307614c02fc6ac12274c50da465c44" + integrity sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw== dependencies: - "@octokit/types" "^12.0.0" + "@octokit/types" "^13.1.0" universal-user-agent "^6.0.0" -"@octokit/graphql@^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.0.2.tgz#3df14b9968192f9060d94ed9e3aa9780a76e7f99" - integrity sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q== +"@octokit/graphql@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.1.0.tgz#9bc1c5de92f026648131f04101cab949eeffe4e0" + integrity sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ== dependencies: - "@octokit/request" "^8.0.1" - "@octokit/types" "^12.0.0" + "@octokit/request" "^8.3.0" + "@octokit/types" "^13.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^19.1.0": - version "19.1.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.1.0.tgz#75ec7e64743870fc73e1ab4bc6ec252ecdd624dc" - integrity sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw== +"@octokit/openapi-types@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-20.0.0.tgz#9ec2daa0090eeb865ee147636e0c00f73790c6e5" + integrity sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA== + +"@octokit/openapi-types@^22.2.0": + version "22.2.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.2.0.tgz#75aa7dcd440821d99def6a60b5f014207ae4968e" + integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== "@octokit/plugin-paginate-rest@^9.0.0": - version "9.1.5" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz#1705bcef4dcde1f4015ee58a63dc61b68648f480" - integrity sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg== + version "9.2.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz#2e2a2f0f52c9a4b1da1a3aa17dabe3c459b9e401" + integrity sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw== dependencies: - "@octokit/types" "^12.4.0" + "@octokit/types" "^12.6.0" "@octokit/plugin-retry@^6.0.0": version "6.0.1" @@ -1188,38 +1079,45 @@ bottleneck "^2.15.3" "@octokit/plugin-throttling@^8.0.0": - version "8.1.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz#7fb0e001c0cb9383c6be07740b8ec326ed990f6b" - integrity sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A== + version "8.2.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz#9ec3ea2e37b92fac63f06911d0c8141b46dc4941" + integrity sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ== dependencies: "@octokit/types" "^12.2.0" bottleneck "^2.15.3" -"@octokit/request-error@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.0.1.tgz#277e3ce3b540b41525e07ba24c5ef5e868a72db9" - integrity sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ== +"@octokit/request-error@^5.0.0", "@octokit/request-error@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.1.0.tgz#ee4138538d08c81a60be3f320cd71063064a3b30" + integrity sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q== dependencies: - "@octokit/types" "^12.0.0" + "@octokit/types" "^13.1.0" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^8.0.1", "@octokit/request@^8.0.2": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.1.6.tgz#a76a859c30421737a3918b40973c2ff369009571" - integrity sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ== +"@octokit/request@^8.3.0", "@octokit/request@^8.3.1": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.4.0.tgz#7f4b7b1daa3d1f48c0977ad8fffa2c18adef8974" + integrity sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw== dependencies: - "@octokit/endpoint" "^9.0.0" - "@octokit/request-error" "^5.0.0" - "@octokit/types" "^12.0.0" + "@octokit/endpoint" "^9.0.1" + "@octokit/request-error" "^5.1.0" + "@octokit/types" "^13.1.0" universal-user-agent "^6.0.0" -"@octokit/types@^12.0.0", "@octokit/types@^12.2.0", "@octokit/types@^12.4.0": - version "12.4.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.4.0.tgz#8f97b601e91ce6b9776ed8152217e77a71be7aac" - integrity sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ== +"@octokit/types@^12.0.0", "@octokit/types@^12.2.0", "@octokit/types@^12.6.0": + version "12.6.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.6.0.tgz#8100fb9eeedfe083aae66473bd97b15b62aedcb2" + integrity sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw== dependencies: - "@octokit/openapi-types" "^19.1.0" + "@octokit/openapi-types" "^20.0.0" + +"@octokit/types@^13.0.0", "@octokit/types@^13.1.0": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.5.0.tgz#4796e56b7b267ebc7c921dcec262b3d5bfb18883" + integrity sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ== + dependencies: + "@octokit/openapi-types" "^22.2.0" "@openzeppelin/contracts-400@npm:@openzeppelin/contracts@4.0.0": version "4.0.0" @@ -1236,174 +1134,158 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz#ff17a80fb945f5102571f8efecb5ce5915cc4811" integrity sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A== +"@openzeppelin/contracts-upgradeable@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.0.2.tgz#3e5321a2ecdd0b206064356798c21225b6ec7105" + integrity sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ== + "@openzeppelin/contracts@4.9.3": version "4.9.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.3.tgz#00d7a8cf35a475b160b3f0293a6403c511099364" integrity sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg== -"@openzeppelin/defender-admin-client@^1.52.0": - version "1.54.1" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-admin-client/-/defender-admin-client-1.54.1.tgz#b877972992b95a0dc3787f2ade2f044586621357" - integrity sha512-kRpSUdTsnSqntp4FOXIm95t+6VKHc8CUY2Si71VDuxs0q7HSPZkdpRPSntcolwEzWy9L4a8NS/QMwDF5NJ4X1g== - dependencies: - "@openzeppelin/defender-base-client" "1.54.1" - axios "^1.4.0" - ethers "^5.7.2" - lodash "^4.17.19" - node-fetch "^2.6.0" - -"@openzeppelin/defender-base-client@1.54.1", "@openzeppelin/defender-base-client@^1.52.0": - version "1.54.1" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-base-client/-/defender-base-client-1.54.1.tgz#ed777ae56908d5a920e1f72ac735c63694e65b30" - integrity sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw== - dependencies: - amazon-cognito-identity-js "^6.0.1" - async-retry "^1.3.3" - axios "^1.4.0" - lodash "^4.17.19" - node-fetch "^2.6.0" +"@openzeppelin/contracts@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-5.0.2.tgz#b1d03075e49290d06570b2fd42154d76c2a5d210" + integrity sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA== -"@openzeppelin/defender-sdk-account-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-account-client/-/defender-sdk-account-client-1.8.0.tgz#ebefcc7f893dac1bae653efcc75b4f48abb46b1a" - integrity sha512-S/G+Cmemi3D0dBlAfQBL4/ZAVt+LtivIg+oWKGaUr3wG2usx12CURMaTTb087FlQabdpxEqiExb5xTCSeKBZ9g== +"@openzeppelin/defender-sdk-account-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-account-client/-/defender-sdk-account-client-1.13.4.tgz#16f0a0b3d28c77a8010df9bed53f1b12a0a8e353" + integrity sha512-6h0cXCAYdcq3e5qc9o3hBZu3XvWBubWiHbqvKd5UA1Rb09KwW0slb9uaFo2Rf33WUCNa1OQ7iWapozRxrozgoA== dependencies: - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" lodash "^4.17.21" -"@openzeppelin/defender-sdk-action-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-action-client/-/defender-sdk-action-client-1.8.0.tgz#971562101aedd2f35dd3ec500aacf987b7708fc3" - integrity sha512-+hngMvj/5YMAJ7lDKNWOJRPO4bG3KOZhgzzJpGIFOJo4vk3qRY/ogb30uDl1+aSXGCLTrtlTlwcRCM2rLyhZBQ== +"@openzeppelin/defender-sdk-action-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-action-client/-/defender-sdk-action-client-1.13.4.tgz#b1651daefe75001f4ab41669bc913cf0d3ba26e2" + integrity sha512-qbtWawd7n+8T9uoewole60aArGwPpyIbnWaxt9ekHl92g3uqvKGZU8m60w663YLp9AUhWSycB0mfJuYbHjMwyg== dependencies: - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" + dotenv "^16.3.1" glob "^7.1.6" jszip "^3.10.1" lodash "^4.17.21" -"@openzeppelin/defender-sdk-base-client@^1.5.0", "@openzeppelin/defender-sdk-base-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.8.0.tgz#2209a060ce61b4dfc44c7ac0c2b1d86e18b69f7d" - integrity sha512-XIJat6BW2CTM74AwG5IL0Q/aE6RXj8x7smnVKmBql4wMvmirVW+njfwzZCLhUTiBXg9AlHxIInEF14SabfIisg== +"@openzeppelin/defender-sdk-base-client@^1.10.0", "@openzeppelin/defender-sdk-base-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.13.4.tgz#51b25d46bb766e7a107b9a87ca623fae3ad5a8c3" + integrity sha512-fZjDxdL5WBt6kjKN8j6WlfIsggZKv37W1KoRkT0XwYv7Jslmr22i2qUs8ZreAzATD3ESYQs7YlO7ge0ElqdOKg== dependencies: amazon-cognito-identity-js "^6.3.6" async-retry "^1.3.3" -"@openzeppelin/defender-sdk-deploy-client@^1.5.0", "@openzeppelin/defender-sdk-deploy-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.8.0.tgz#1e186d2b3ff176c6a4c03e8207bad8022528975f" - integrity sha512-/tNS2EnHuA5l095wzMbIkGMDNHZLcZQ2eLUP8z+AeKaAUeR2z4qzZ1ul21kR3EJURAyoy8aULFZanLggoBWHrA== +"@openzeppelin/defender-sdk-deploy-client@^1.10.0", "@openzeppelin/defender-sdk-deploy-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.13.4.tgz#f5f6997774d7ea8c5ea9be5d4b0ead041270f671" + integrity sha512-1SbdImpjCYmjpDgK7Bff4vak29r/aECabVuQi5TB+7TdbOuRdVxDHu7vFhEpt3yrcPKW1joaNiUNDEc/noUsNQ== dependencies: - "@ethersproject/abi" "^5.7.0" - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" lodash "^4.17.21" -"@openzeppelin/defender-sdk-monitor-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-monitor-client/-/defender-sdk-monitor-client-1.8.0.tgz#55f1e91a06f739c8311ed1456c5c4abd76c32cdf" - integrity sha512-eZDWs01c7+8V/d6ct6RvNKYnuTzueYxwkuoZhG9BUoT5ALmtPQJlRZrjguuBzI7+zYwCS57y4ymro7453hOKeA== +"@openzeppelin/defender-sdk-monitor-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-monitor-client/-/defender-sdk-monitor-client-1.13.4.tgz#6f3e23042f5e8ee415c6187b4f7c8667630cda90" + integrity sha512-cBNcmlOx5gywbUKU13Hx9Hsd4vTNf2GvsL5x+z154ouTH5yIyVLlyDcx9eNyt47+VtpCcbedvZW12UyyMMeatw== dependencies: - "@ethersproject/abi" "^5.7.0" - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" + ethers "^6.9.0" lodash "^4.17.21" -"@openzeppelin/defender-sdk-network-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-1.8.0.tgz#84ab6c28ba8162f146304363546682f24c409154" - integrity sha512-Fuefe+cSlyG8qvPlgbVCtbYlsh0WgbbgAcalNbLq1esW6XHAMzYT2AoHISY2BVADtm7rpyb5fgT6lI3PWIoIcQ== +"@openzeppelin/defender-sdk-network-client@^1.10.0", "@openzeppelin/defender-sdk-network-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-1.13.4.tgz#98ba517bb32810d0f76b5f64a83f42ad4ca182bb" + integrity sha512-m76WQzqFET4jtFgA74V6Ui4czRoTvBy7leS+BbsIxoKX+NGODhs78y5zq7jSxsLu3c2iY69rujRkzj0Z+sCiiQ== dependencies: - "@ethersproject/abi" "^5.7.0" - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" lodash "^4.17.21" -"@openzeppelin/defender-sdk-notification-channel-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-notification-channel-client/-/defender-sdk-notification-channel-client-1.8.0.tgz#b9dcd6fee39eefc2090e5ba3a86d9c7b62b47512" - integrity sha512-V7YJkEdxDDg3L9tcRS/K0FciYdwNhDNCwU5zCPAYHwHii0PDhz6XjB2g/zWLxhZMzOtY246swrnXiOYfvjwirA== +"@openzeppelin/defender-sdk-notification-channel-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-notification-channel-client/-/defender-sdk-notification-channel-client-1.13.4.tgz#d09c58070ec6a0ee1f0f7b4138b99c87b478623d" + integrity sha512-L0l/I3/F1/wvuCPN9DGG862cJUOXrt2AXIyMNCE7uLaS4adt90wS1TWNRlKwpl5P/e3ErD3Yf2Wftz7yk0IiZg== dependencies: - "@ethersproject/abi" "^5.7.0" - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" lodash "^4.17.21" -"@openzeppelin/defender-sdk-proposal-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-proposal-client/-/defender-sdk-proposal-client-1.8.0.tgz#1273b4ac8966fcf024ae03bb96aa2c5ba4137356" - integrity sha512-EIPE3yDK0cbnHpt5ptR20yzW/ao2Qzv5v17Hwu83VG95L5csIMmy7ndjmAie15gaB9Xkw1MKdpHmHhzmohESPg== +"@openzeppelin/defender-sdk-proposal-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-proposal-client/-/defender-sdk-proposal-client-1.13.4.tgz#99bdb5687e0366e07152cb6954a8410ca3b8493d" + integrity sha512-E35MQR+FusQMyOnNPxEVsT68++1oBs7rXRRDJO1F1Cvx8wh2k7A1nllInDzEhrfSi+7TOacOjrfbZqKJNDHoqw== dependencies: - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" ethers "^6.9.0" lodash "^4.17.21" -"@openzeppelin/defender-sdk-relay-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-relay-client/-/defender-sdk-relay-client-1.8.0.tgz#fafcc4687cabe44bf61c5613da22bcf20d0c8c0e" - integrity sha512-l50OmHl51Hnf5RMZHCVI1PBqb9Af5/DZJKefKqEMA2QpOwnY9gopeFcOsyPWS+d1EDHTUDrKpsFzpCifWWyxeA== +"@openzeppelin/defender-sdk-relay-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-relay-client/-/defender-sdk-relay-client-1.13.4.tgz#7c2fa46bae4cca56904b6972e72d1c9066445b2e" + integrity sha512-BVil80+r/KKO9Yc2LdJJVv++01sdOs3dGrtjCWydReh5HKMUVT9M735+Z47ouxXUDFrepIxh7fgaKKG+TTLDYg== dependencies: - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - axios "^1.4.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + axios "^1.6.8" lodash "^4.17.21" -"@openzeppelin/defender-sdk-relay-signer-client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-relay-signer-client/-/defender-sdk-relay-signer-client-1.8.0.tgz#c7825428c44e0b2c3912dc5817e3c65081de09f6" - integrity sha512-nZyIKk7dQHWVbtSEsr7zQWVaiX3Ftn/D9ucOCr0+tuWDM70UXrZ8uvLX3MfRPKpc8GAkZjBbUPMLcppLu3g8VQ== +"@openzeppelin/defender-sdk-relay-signer-client@^1.13.4": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-relay-signer-client/-/defender-sdk-relay-signer-client-1.13.4.tgz#8ee3d635c305aa8d6890213f5a403cd501d8cc4e" + integrity sha512-j0FRSPJ24zmLV8A2JCFL2e2JD6Z4QU3K8Z+nfrfwISJlWIIauXA0p9zE4Km2AjKXo9itKZe6xgRt8xxC/CnxnQ== dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/bytes" "^5.7.0" - "@ethersproject/contracts" "^5.7.0" "@ethersproject/logger" "^5.7.0" "@ethersproject/networks" "^5.7.1" "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" "@ethersproject/strings" "^5.7.0" - "@openzeppelin/defender-sdk-base-client" "^1.8.0" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" amazon-cognito-identity-js "^6.3.6" - axios "^1.4.0" + axios "^1.6.8" + ethers "^6.9.0" lodash "^4.17.21" "@openzeppelin/defender-sdk@^1.7.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk/-/defender-sdk-1.8.0.tgz#e5455d9eb29a2eb29089742e1f27cd2afa406ff0" - integrity sha512-aFlOLKqJgRcXa5u3uzAhz53BHAUP6S2kyWu4q5M7/9FsyXP6norqe8p6eH67aLuuAZzPzYN+t5M2ebarSW4fag== - dependencies: - "@openzeppelin/defender-sdk-account-client" "^1.8.0" - "@openzeppelin/defender-sdk-action-client" "^1.8.0" - "@openzeppelin/defender-sdk-base-client" "^1.8.0" - "@openzeppelin/defender-sdk-deploy-client" "^1.8.0" - "@openzeppelin/defender-sdk-monitor-client" "^1.8.0" - "@openzeppelin/defender-sdk-network-client" "^1.8.0" - "@openzeppelin/defender-sdk-notification-channel-client" "^1.8.0" - "@openzeppelin/defender-sdk-proposal-client" "^1.8.0" - "@openzeppelin/defender-sdk-relay-client" "^1.8.0" - "@openzeppelin/defender-sdk-relay-signer-client" "^1.8.0" - -"@openzeppelin/hardhat-upgrades@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-2.5.0.tgz#29b6bdc1a998bdc1672028586510e144ec25ae7e" - integrity sha512-pRsqyRbp8LX9sTSMbL7jx4NjqjN/4PlKngmuAyRQIheYTGbRIs3FW3WyLuiCjkDlTETfmOsmzrnZxJmxDmxZIA== - dependencies: - "@openzeppelin/defender-admin-client" "^1.52.0" - "@openzeppelin/defender-base-client" "^1.52.0" - "@openzeppelin/defender-sdk-base-client" "^1.5.0" - "@openzeppelin/defender-sdk-deploy-client" "^1.5.0" - "@openzeppelin/upgrades-core" "^1.31.2" + version "1.13.4" + resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk/-/defender-sdk-1.13.4.tgz#bc1862cdce4a87732e3bd3f890da4fb71f57a387" + integrity sha512-HkJEL1xrcle/lmDgpdhp1zhjTTWxpEPHTCNfYOnSHyBc4gr/KrE6pOikFffwNzfe0FL5Rxt8vCDhOGxQJ7CtQw== + dependencies: + "@openzeppelin/defender-sdk-account-client" "^1.13.4" + "@openzeppelin/defender-sdk-action-client" "^1.13.4" + "@openzeppelin/defender-sdk-base-client" "^1.13.4" + "@openzeppelin/defender-sdk-deploy-client" "^1.13.4" + "@openzeppelin/defender-sdk-monitor-client" "^1.13.4" + "@openzeppelin/defender-sdk-network-client" "^1.13.4" + "@openzeppelin/defender-sdk-notification-channel-client" "^1.13.4" + "@openzeppelin/defender-sdk-proposal-client" "^1.13.4" + "@openzeppelin/defender-sdk-relay-client" "^1.13.4" + "@openzeppelin/defender-sdk-relay-signer-client" "^1.13.4" + +"@openzeppelin/hardhat-upgrades@^3.0.1", "@openzeppelin/hardhat-upgrades@^3.1.1": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-3.2.0.tgz#09ae9b48e2fca876ddff9b5ee20ac6629392872e" + integrity sha512-xybXIHQIZK2a1HH7ukMToRbIcU9LHfL49gtB0KYptY6f/r9lqrFOupN8aOBueRZW4Ymhc6HGL9bvj7u7t5lDdQ== + dependencies: + "@openzeppelin/defender-sdk-base-client" "^1.10.0" + "@openzeppelin/defender-sdk-deploy-client" "^1.10.0" + "@openzeppelin/defender-sdk-network-client" "^1.10.0" + "@openzeppelin/upgrades-core" "^1.32.0" chalk "^4.1.0" debug "^4.1.1" ethereumjs-util "^7.1.5" proper-lockfile "^4.1.1" - undici "^5.14.0" + undici "^6.11.1" -"@openzeppelin/upgrades-core@^1.31.2": - version "1.32.3" - resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.32.3.tgz#7f92aeab6f6c7300c8fa4c1cde14253b2bd62341" - integrity sha512-v04RbrBOTRiIhfkTRfY4M34I2wIcuz+K1cUk/6duulsMXvRpM6/IPWeXh+1Xr1K+xedJi7gcS/pNSXfYhYNXIg== +"@openzeppelin/upgrades-core@^1.32.0", "@openzeppelin/upgrades-core@^1.32.2": + version "1.34.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.34.1.tgz#660301692e706c7e701395467267128cc43c1de9" + integrity sha512-LV3hHm60htmP3HJjn2VoGqXNPn1RLFSSInRyXNbm15Z2oWKGxOfAWSC4+okRckum0yVB5g3k4/SEyqjsJRB07A== dependencies: cbor "^9.0.0" chalk "^4.1.0" @@ -1440,10 +1322,10 @@ "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" -"@scure/base@~1.1.0", "@scure/base@~1.1.4": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" - integrity sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ== +"@scure/base@~1.1.0", "@scure/base@~1.1.6": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" + integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== "@scure/bip32@1.1.5": version "1.1.5" @@ -1454,14 +1336,14 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" -"@scure/bip32@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" - integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== +"@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" + integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== dependencies: - "@noble/curves" "~1.3.0" - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.4" + "@noble/curves" "~1.4.0" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" "@scure/bip39@1.1.1": version "1.1.1" @@ -1471,13 +1353,13 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" -"@scure/bip39@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" - integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== +"@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" + integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== dependencies: - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.4" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" "@semantic-release/commit-analyzer@^10.0.0": version "10.0.4" @@ -1675,17 +1557,17 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== -"@sindresorhus/merge-streams@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz#9cd84cc15bc865a5ca35fcaae198eb899f7b5c90" - integrity sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw== +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== -"@smithy/types@^2.9.1": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.9.1.tgz#ed04d4144eed3b8bd26d20fc85aae8d6e357ebb9" - integrity sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw== +"@smithy/types@^3.1.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" + integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== dependencies: - tslib "^2.5.0" + tslib "^2.6.2" "@solidity-parser/parser@^0.14.0": version "0.14.5" @@ -1694,13 +1576,6 @@ dependencies: antlr4ts "^0.5.0-alpha.4" -"@solidity-parser/parser@^0.16.0": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.2.tgz#42cb1e3d88b3e8029b0c9befff00b634cd92d2fa" - integrity sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg== - dependencies: - antlr4ts "^0.5.0-alpha.4" - "@solidity-parser/parser@^0.18.0": version "0.18.0" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.18.0.tgz#8e77a02a09ecce957255a2f48c9a7178ec191908" @@ -1714,17 +1589,19 @@ defer-to-connect "^2.0.1" "@tenderly/hardhat-tenderly@^2.0.1": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@tenderly/hardhat-tenderly/-/hardhat-tenderly-2.1.0.tgz#20036426da8f11a5d8860703ef64cdb9086cc98d" - integrity sha512-wy6WnvrT4fxqTsln5DH3MgT+lvUV7AyqHVtSyGJgQh6NX0Q59ZXKoqedB8Hi3IkYMOhbjbPFlR0Z/zr8sYGEzQ== + version "2.2.2" + resolved "https://registry.yarnpkg.com/@tenderly/hardhat-tenderly/-/hardhat-tenderly-2.2.2.tgz#e9ff3e149af2244a8448e0ff968717f6f1ba602f" + integrity sha512-JZINDVHW0ob+tCtNppgXMKiVcpbtcdEeHGaIsRFDXGeVQ1061asouf1lILvyWSfhv5ZeIkEX/LmeOo9IlC7rkw== dependencies: "@ethersproject/bignumber" "^5.7.0" "@nomicfoundation/hardhat-ethers" "^3.0.4" - axios "^0.27.2" + "@openzeppelin/hardhat-upgrades" "^3.0.1" + "@openzeppelin/upgrades-core" "^1.32.2" + axios "^1.6.7" ethers "^6.8.1" fs-extra "^10.1.0" hardhat-deploy "^0.11.43" - tenderly "^0.8.0" + tenderly "^0.9.1" ts-node "^10.9.1" tslog "^4.3.1" typescript "^5.2.2" @@ -1735,9 +1612,9 @@ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== "@tsconfig/node12@^1.0.7": version "1.0.11" @@ -1804,9 +1681,9 @@ "@types/chai" "*" "@types/chai@*", "@types/chai@^4.3.11": - version "4.3.11" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.11.tgz#e95050bf79a932cb7305dd130254ccdf9bde671c" - integrity sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ== + version "4.3.16" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" + integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== "@types/concat-stream@^1.6.0": version "1.6.1" @@ -1866,9 +1743,9 @@ integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== "@types/node@*": - version "20.11.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.10.tgz#6c3de8974d65c362f82ee29db6b5adf4205462f9" - integrity sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg== + version "20.14.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.9.tgz#12e8e765ab27f8c421a1820c99f5f313a933b420" + integrity sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg== dependencies: undici-types "~5.26.4" @@ -1883,9 +1760,9 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^18.15.11": - version "18.19.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.10.tgz#4de314ab66faf6bc8ba691021a091ddcdf13a158" - integrity sha512-IZD8kAM02AW1HRDTPOlz3npFava678pr8Ie9Vp8uRhBROXAv8MXT2pCnGZZAKYdromsNQLHQcfWQ6EOatVLtqA== + version "18.19.39" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.39.tgz#c316340a5b4adca3aee9dcbf05de385978590593" + integrity sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ== dependencies: undici-types "~5.26.4" @@ -1912,17 +1789,9 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/qs@^6.2.31", "@types/qs@^6.9.7": - version "6.9.11" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda" - integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ== - -"@types/readable-stream@^2.3.13": - version "2.3.15" - resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" - integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== - dependencies: - "@types/node" "*" - safe-buffer "~5.1.1" + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/secp256k1@^4.0.1": version "4.0.6" @@ -1932,9 +1801,9 @@ "@types/node" "*" "@types/semver@^7.3.12": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/triple-beam@^1.3.2": version "1.3.5" @@ -1947,9 +1816,9 @@ integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== "@types/whatwg-url@^11.0.2": - version "11.0.4" - resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.4.tgz#ffed0dc8d89d91f62e3f368fcbda222a487c4f63" - integrity sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw== + version "11.0.5" + resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.5.tgz#aaa2546e60f0c99209ca13360c32c78caf2c409f" + integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== dependencies: "@types/webidl-conversions" "*" @@ -2057,19 +1926,22 @@ eslint-plugin-prefer-arrow "^1.2.3" typescript "^5.0.2" -"@zero-tech/zdc@0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@zero-tech/zdc/-/zdc-0.1.3.tgz#d62edf13234668b10ac33053b6002c9dc93a5922" - integrity sha512-0uZpRCq3/HrTU7I79EBcZyKbPv3ey5r9eyRLghCFEf6F1Pdn3xKZQkqwJQvsz0EZyR+p4AJz5jZE/bkdGucEig== +"@zero-tech/zdc@0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@zero-tech/zdc/-/zdc-0.1.6.tgz#131d13a128c494b7b5d32c208f3afdb775bf3ba2" + integrity sha512-BemYIVUs95pk0fx/otWbtLGiCJyor0SNmNKH/46iNXoSzYdeCbPFx05GsXjAE6yhu9buwHybdDRXjSj/YcQpXg== dependencies: axios "^1.6.5" mongodb "^6.3.0" winston "^3.11.0" -"@zero-tech/ztoken@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@zero-tech/ztoken/-/ztoken-2.0.0.tgz#42e2c2aa28ffbc64ce4340cf0464bcc22a155be5" - integrity sha512-t6eLaK3KFsMUZ8cD1OqAiLQgvfYvXSIsgvEwt6FPedT5h64s/5XbVc1MWW22DZ98HqmgcWyEUs3g1MBAG1orCQ== +"@zero-tech/ztoken@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@zero-tech/ztoken/-/ztoken-2.1.0.tgz#71f50b532c258588ade488644fd75d1b8028a256" + integrity sha512-5S392GkiE+mH+ZNWs1XKL/ia4YiQ9tf+i8p1qeoHBFqatwB1wP3XTl+GkosqSxaJPnw/nNq7bn2W+XBnGATxJg== + dependencies: + "@openzeppelin/contracts" "4.9.3" + "@openzeppelin/contracts-upgradeable" "4.9.3" JSONStream@^1.3.5: version "1.3.5" @@ -2094,38 +1966,22 @@ abbrev@^2.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== -abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3, abstract-level@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" - integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== - dependencies: - buffer "^6.0.3" - catering "^2.1.0" - is-buffer "^2.0.5" - level-supports "^4.0.0" - level-transcoder "^1.0.1" - module-error "^1.0.1" - queue-microtask "^1.2.3" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.4.1, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + version "8.3.3" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" -address@^1.0.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" - integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" + integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== adm-zip@^0.4.16: version "0.4.16" @@ -2150,9 +2006,9 @@ agent-base@6, agent-base@^6.0.2: debug "4" agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== dependencies: debug "^4.3.4" @@ -2190,19 +2046,19 @@ ajv@^6.12.4, ajv@^6.12.6: uri-js "^4.2.2" ajv@^8.0.1: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + version "8.16.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" + uri-js "^4.4.1" -amazon-cognito-identity-js@^6.0.1, amazon-cognito-identity-js@^6.3.6: - version "6.3.7" - resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz#65c3d7ee4e0c0a1ffea01927248989c5bd1d1868" - integrity sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ== +amazon-cognito-identity-js@^6.3.6: + version "6.3.12" + resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz#af73df033094ad4c679c19cf6122b90058021619" + integrity sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg== dependencies: "@aws-crypto/sha256-js" "1.2.2" buffer "4.9.2" @@ -2215,6 +2071,13 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -2233,11 +2096,9 @@ ansi-escapes@^4.3.0: type-fest "^0.21.3" ansi-escapes@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" - integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== - dependencies: - type-fest "^3.0.0" + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.1.tgz#76c54ce9b081dad39acec4b5d53377913825fb0f" + integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== ansi-regex@^2.0.0: version "2.1.1" @@ -2283,10 +2144,10 @@ ansicolors@~0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== -antlr4@^4.11.0: - version "4.13.1" - resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1.tgz#1e0a1830a08faeb86217cb2e6c34716004e4253d" - integrity sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA== +antlr4@^4.13.1-patch-1: + version "4.13.1-patch-1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1-patch-1.tgz#946176f863f890964a050c4f18c47fd6f7e57602" + integrity sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow== antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" @@ -2356,13 +2217,13 @@ array-back@^4.0.1, array-back@^4.0.2: resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" + call-bind "^1.0.5" + is-array-buffer "^3.0.4" array-ify@^1.0.0: version "1.0.0" @@ -2370,14 +2231,15 @@ array-ify@^1.0.0: integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" is-string "^1.0.7" array-union@^2.1.0: @@ -2391,26 +2253,28 @@ array-uniq@1.0.3: integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== array.prototype.findlast@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz#4e4b375de5adf4897fed155e2d2771564865cc3b" - integrity sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g== + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" array.prototype.flat@^1.3.2: version "1.3.2" @@ -2432,17 +2296,18 @@ array.prototype.flatmap@^1.3.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" arrify@^1.0.1: @@ -2497,10 +2362,12 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" axios@^0.21.1: version "0.21.4" @@ -2517,12 +2384,12 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -axios@^1.4.0, axios@^1.5.1, axios@^1.6.5: - version "1.6.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" - integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== +axios@^1.4.0, axios@^1.5.1, axios@^1.6.5, axios@^1.6.7, axios@^1.6.8: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== dependencies: - follow-redirects "^1.15.4" + follow-redirects "^1.15.6" form-data "^4.0.0" proxy-from-env "^1.1.0" @@ -2558,15 +2425,10 @@ big-integer@1.6.36: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== -bigint-crypto-utils@^3.0.23: - version "3.3.0" - resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" - integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== - bin-links@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.3.tgz#9e4a3c5900830aee3d7f52178b65e01dcdde64a5" - integrity sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA== + version "4.0.4" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== dependencies: cmd-shim "^6.0.0" npm-normalize-package-bin "^3.0.0" @@ -2574,9 +2436,9 @@ bin-links@^4.0.1: write-file-atomic "^5.0.0" binary-extensions@^2.0.0, binary-extensions@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== blakejs@^1.1.0: version "1.2.1" @@ -2608,6 +2470,20 @@ bottleneck@^2.15.3: resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + 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" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2623,28 +2499,18 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-level@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" - integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== - dependencies: - abstract-level "^1.0.2" - catering "^2.1.1" - module-error "^1.0.2" - run-parallel-limit "^1.1.0" - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -2678,10 +2544,10 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -bson@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.2.0.tgz#4b6acafc266ba18eeee111373c2699304a9ba0a3" - integrity sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q== +bson@^6.7.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-6.8.0.tgz#5063c41ba2437c2b8ff851b50d9e36cb7aaa7525" + integrity sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ== buffer-from@^1.0.0: version "1.1.2" @@ -2702,7 +2568,7 @@ buffer@4.9.2: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@6.0.3, buffer@^6.0.3: +buffer@6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -2718,13 +2584,6 @@ buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtins@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -2754,7 +2613,7 @@ cacache@^16.1.0: tar "^6.1.11" unique-filename "^2.0.0" -cacache@^17.0.0, cacache@^17.0.4, cacache@^17.1.3: +cacache@^17.0.0, cacache@^17.0.4, cacache@^17.1.4: version "17.1.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== @@ -2790,14 +2649,16 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" @@ -2823,7 +2684,7 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -2836,21 +2697,11 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -case@^1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" - integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== - caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -catering@^2.1.0, catering@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" - integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== - cbor@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" @@ -2859,16 +2710,16 @@ cbor@^8.1.0: nofilter "^3.1.0" cbor@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.1.tgz#b16e393d4948d44758cd54ac6151379d443b37ae" - integrity sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ== + version "9.0.2" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb" + integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ== dependencies: nofilter "^3.1.0" chai-as-promised@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" - integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + version "7.1.2" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== dependencies: check-error "^1.0.2" @@ -2919,10 +2770,10 @@ check-error@^1.0.2, check-error@^1.0.3: dependencies: get-func-name "^2.0.2" -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== +chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -2944,10 +2795,10 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.6.1, ci-info@^3.7.1, ci-info@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +ci-info@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" + integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== cidr-regex@^3.1.1: version "3.1.1" @@ -2980,17 +2831,6 @@ class-is@^1.1.0: resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== -classic-level@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.4.1.tgz#169ecf9f9c6200ad42a98c8576af449c1badbaee" - integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== - dependencies: - abstract-level "^1.0.2" - catering "^2.1.0" - module-error "^1.0.1" - napi-macros "^2.2.2" - node-gyp-build "^4.3.0" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -3003,6 +2843,11 @@ clean-stack@^5.2.0: dependencies: escape-string-regexp "5.0.0" +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-columns@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646" @@ -3022,9 +2867,9 @@ cli-table3@^0.5.0: colors "^1.1.2" cli-table3@^0.6.2, cli-table3@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" - integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + version "0.6.5" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== dependencies: string-width "^4.2.0" optionalDependencies: @@ -3063,9 +2908,9 @@ clone@^1.0.2: integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== cmd-shim@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.2.tgz#435fd9e5c95340e61715e19f90209ed6fcd9e0a4" - integrity sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw== + version "6.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== code-point-at@^1.0.0: version "1.1.0" @@ -3170,16 +3015,16 @@ command-line-usage@^6.1.0: table-layout "^1.0.2" typical "^5.2.0" -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== +commander@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + commander@^9.4.0: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" @@ -3313,11 +3158,6 @@ cosmiconfig@^8.0.0: parse-json "^5.2.0" path-type "^4.0.0" -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -3385,6 +3225,33 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dateformat@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -3395,7 +3262,14 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== -debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.0.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3435,9 +3309,9 @@ decompress-response@^6.0.0: mimic-response "^3.1.0" deep-eql@^4.0.1, deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== dependencies: type-detect "^4.0.0" @@ -3463,21 +3337,21 @@ defer-to-connect@^2.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: - get-intrinsic "^1.2.1" + es-define-property "^1.0.0" + es-errors "^1.3.0" gopd "^1.0.1" - has-property-descriptors "^1.0.0" define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3506,14 +3380,6 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -detect-port@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" - integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== - dependencies: - address "^1.0.1" - debug "4" - diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -3525,9 +3391,9 @@ diff@^4.0.1: integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diff@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== difflib@^0.2.4: version "0.2.4" @@ -3569,6 +3435,11 @@ dotenv@16.0.3: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== +dotenv@^16.3.1: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + duplexer2@~0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" @@ -3581,7 +3452,7 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: +elliptic@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -3594,6 +3465,19 @@ elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@^6.5.2, elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + 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" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -3654,61 +3538,87 @@ error-ex@^1.2.0, error-ex@^1.3.1, error-ex@^1.3.2: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" globalthis "^1.0.3" gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" is-callable "^1.2.7" - is-negative-zero "^2.0.2" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" + is-shared-array-buffer "^1.0.3" is-string "^1.0.7" - is-typed-array "^1.1.12" + is-typed-array "^1.1.13" is-weakref "^1.0.2" object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" + which-typed-array "^1.1.15" -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" -es-shim-unscopables@^1.0.0: +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== @@ -3725,9 +3635,9 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" @@ -3785,9 +3695,9 @@ eslint-import-resolver-node@^0.3.9: resolve "^1.22.4" eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" @@ -3854,15 +3764,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.37.0: - version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" - integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.56.0" - "@humanwhocodes/config-array" "^0.11.13" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -3978,11 +3888,11 @@ eth-gas-reporter@^0.2.25: sync-request "^6.0.0" ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz#b3fc1eb789509ee30db0bf99a2988ccacb8d0397" + integrity sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw== dependencies: - js-sha3 "^0.8.0" + "@noble/hashes" "^1.4.0" ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" @@ -4016,14 +3926,14 @@ ethereum-cryptography@^1.0.3: "@scure/bip39" "1.1.1" ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" - integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.0.tgz#06e2d9c0d89f98ffc6a83818f55bf85afecd50dc" + integrity sha512-hsm9JhfytIf8QME/3B7j4bc8V+VdTU+Vas1aJlvIS96ffoNAosudXvGoEvWmc7QZYdkC8mrMJz9r0fcbw7GyCA== dependencies: - "@noble/curves" "1.3.0" - "@noble/hashes" "1.3.3" - "@scure/bip32" "1.3.3" - "@scure/bip39" "1.2.2" + "@noble/curves" "1.4.0" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" ethereumjs-abi@^0.6.8: version "0.6.8" @@ -4057,7 +3967,7 @@ ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: ethereum-cryptography "^0.1.3" rlp "^2.2.4" -ethers@^5.0.13, ethers@^5.7.0, ethers@^5.7.1, ethers@^5.7.2: +ethers@^5.0.13, ethers@^5.7.0, ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== @@ -4094,17 +4004,17 @@ ethers@^5.0.13, ethers@^5.7.0, ethers@^5.7.1, ethers@^5.7.2: "@ethersproject/wordlists" "5.7.0" ethers@^6.8.1, ethers@^6.9.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.10.0.tgz#20f3c63c60d59a993f8090ad423d8a3854b3b1cd" - integrity sha512-nMNwYHzs6V1FR3Y4cdfxSQmNgZsRj1RiTU25JwvnJLmyzw9z3SKxNc2XKDuiXXo/v9ds5Mp9m6HBabgYQQ26tA== + version "6.13.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.1.tgz#2b9f9c7455cde9d38b30fe6589972eb083652961" + integrity sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A== dependencies: - "@adraffy/ens-normalize" "1.10.0" + "@adraffy/ens-normalize" "1.10.1" "@noble/curves" "1.2.0" "@noble/hashes" "1.3.2" "@types/node" "18.15.13" aes-js "4.0.0-beta.5" tslib "2.4.0" - ws "8.5.0" + ws "8.17.1" ethjs-unit@0.1.6: version "0.1.6" @@ -4222,9 +4132,9 @@ fastest-levenshtein@^1.0.16: integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.0.tgz#ca5e1a90b5e68f97fc8b61330d5819b82f5fab03" - integrity sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -4255,10 +4165,10 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -4330,9 +4240,9 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== fmix@^0.1.0: version "0.1.0" @@ -4346,10 +4256,10 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.9, follow-redirects@^1.15.4: - version "1.15.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" - integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== +follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.9, follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== for-each@^0.3.3: version "0.3.3" @@ -4359,9 +4269,9 @@ for-each@^0.3.3: is-callable "^1.1.3" foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== dependencies: cross-spawn "^7.0.0" signal-exit "^4.0.1" @@ -4471,7 +4381,7 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" -fs-minipass@^3.0.0, fs-minipass@^3.0.2: +fs-minipass@^3.0.0, fs-minipass@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== @@ -4508,11 +4418,6 @@ function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -4533,9 +4438,9 @@ gauge@^4.0.3: wide-align "^1.1.5" gauge@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.1.tgz#1efc801b8ff076b86ef3e9a7a280a975df572112" - integrity sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ== + version "5.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.2.tgz#7ab44c11181da9766333f10db8cd1e4b17fd6c46" + integrity sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ== dependencies: aproba "^1.0.3 || ^2.0.0" color-support "^1.1.3" @@ -4561,11 +4466,12 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: + es-errors "^1.3.0" function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" @@ -4591,13 +4497,14 @@ get-stream@^8.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" ghost-testrpc@^0.0.2: version "0.0.2" @@ -4657,16 +4564,28 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^10.2.2, glob@^10.2.7: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== +glob@8.1.0, glob@^8.0.1, glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^10.2.2, glob@^10.3.10: + version "10.4.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.2.tgz#bed6b95dade5c1f80b4434daced233aee76160e5" + integrity sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w== dependencies: foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^5.0.15: version "5.0.15" @@ -4687,20 +4606,9 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.1, glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" + minimatch "^3.1.1" once "^1.3.0" + path-is-absolute "^1.0.0" global-modules@^2.0.0: version "2.0.0" @@ -4726,11 +4634,12 @@ globals@^13.19.0: type-fest "^0.20.2" globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^10.0.1: version "10.0.2" @@ -4759,11 +4668,11 @@ globby@^11.1.0: slash "^3.0.0" globby@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.0.tgz#ea9c062a3614e33f516804e778590fcf055256b9" - integrity sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ== + version "14.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.1.tgz#a1b44841aa7f4c6d8af2bc39951109d77301959b" + integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== dependencies: - "@sindresorhus/merge-streams" "^1.0.0" + "@sindresorhus/merge-streams" "^2.1.0" fast-glob "^3.3.2" ignore "^5.2.4" path-type "^5.0.0" @@ -4857,31 +4766,25 @@ hardhat-deploy@^0.11.43: zksync-web3 "^0.14.3" hardhat-gas-reporter@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz#9a2afb354bc3b6346aab55b1c02ca556d0e16450" - integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz#ebe5bda5334b5def312747580cd923c2b09aef1b" + integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== dependencies: array-uniq "1.0.3" eth-gas-reporter "^0.2.25" sha1 "^1.1.1" -hardhat@^2.19.1: - version "2.19.4" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.19.4.tgz#5112c30295d8be2e18e55d847373c50483ed1902" - integrity sha512-fTQJpqSt3Xo9Mn/WrdblNGAfcANM6XC3tAEi6YogB4s02DmTf93A8QsGb8uR0KR8TFcpcS8lgiW4ugAIYpnbrQ== +hardhat@^2.22.6: + version "2.22.6" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.6.tgz#d73caece246cd8219a1815554dabc31d400fa035" + integrity sha512-abFEnd9QACwEtSvZZGSmzvw7N3zhQN1cDKz5SLHAupfG24qTHofCjqvD5kT5Wwsq5XOL0ON1Mq5rr4v0XX5ciw== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" - "@nomicfoundation/ethereumjs-block" "5.0.2" - "@nomicfoundation/ethereumjs-blockchain" "7.0.2" - "@nomicfoundation/ethereumjs-common" "4.0.2" - "@nomicfoundation/ethereumjs-evm" "2.0.2" - "@nomicfoundation/ethereumjs-rlp" "5.0.2" - "@nomicfoundation/ethereumjs-statemanager" "2.0.2" - "@nomicfoundation/ethereumjs-trie" "6.0.2" - "@nomicfoundation/ethereumjs-tx" "5.0.2" - "@nomicfoundation/ethereumjs-util" "9.0.2" - "@nomicfoundation/ethereumjs-vm" "7.0.2" + "@nomicfoundation/edr" "^0.4.1" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" "@nomicfoundation/solidity-analyzer" "^0.1.0" "@sentry/node" "^5.18.1" "@types/bn.js" "^5.1.0" @@ -4889,6 +4792,7 @@ hardhat@^2.19.1: adm-zip "^0.4.16" aggregate-error "^3.0.0" ansi-escapes "^4.3.0" + boxen "^5.1.2" chalk "^2.4.2" chokidar "^3.4.0" ci-info "^2.0.0" @@ -4911,7 +4815,7 @@ hardhat@^2.19.1: raw-body "^2.4.1" resolve "1.17.0" semver "^6.3.0" - solc "0.7.3" + solc "0.8.26" source-map-support "^0.5.13" stacktrace-parser "^0.1.10" tsort "0.0.1" @@ -4939,29 +4843,29 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.2.2" + es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" has-unicode@^2.0.1: version "2.0.1" @@ -4985,10 +4889,10 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" @@ -5036,9 +4940,9 @@ hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: lru-cache "^7.5.1" hosted-git-info@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.1.tgz#9985fcb2700467fecf7f33a4d4874e30680b5322" - integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== + version "7.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== dependencies: lru-cache "^10.0.1" @@ -5078,9 +4982,9 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" - integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" debug "^4.3.4" @@ -5109,9 +5013,9 @@ https-proxy-agent@^5.0.0: debug "4" https-proxy-agent@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" - integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== dependencies: agent-base "^7.0.2" debug "4" @@ -5165,16 +5069,16 @@ ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore-walk@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.4.tgz#89950be94b4f522225eb63a13c56badb639190e9" - integrity sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== dependencies: minimatch "^9.0.0" ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immediate@~3.0.5: version "3.0.6" @@ -5182,9 +5086,9 @@ immediate@~3.0.5: integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immutable@^4.0.0-rc.12: - version "4.3.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + version "4.3.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" + integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" @@ -5243,9 +5147,9 @@ ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== ini@^4.1.0, ini@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" - integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== + version "4.1.3" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== init-package-json@^5.0.0: version "5.0.0" @@ -5260,12 +5164,12 @@ init-package-json@^5.0.0: validate-npm-package-license "^3.0.4" validate-npm-package-name "^5.0.0" -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.2.2" + es-errors "^1.3.0" hasown "^2.0.0" side-channel "^1.0.4" @@ -5294,24 +5198,26 @@ io-ts@1.10.4: dependencies: fp-ts "^1.0.0" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ip-regex@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-arrayish@^0.2.1: version "0.2.1" @@ -5345,11 +5251,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -5363,11 +5264,18 @@ is-cidr@^4.0.2: cidr-regex "^3.1.1" is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + version "2.14.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" + integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" is-date-object@^1.0.1: version "1.0.5" @@ -5420,10 +5328,10 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== is-number-object@^1.0.4: version "1.0.7" @@ -5465,12 +5373,12 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" is-stream@^2.0.0: version "2.0.1" @@ -5503,12 +5411,12 @@ is-text-path@^2.0.0: dependencies: text-extensions "^2.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - which-typed-array "^1.1.11" + which-typed-array "^1.1.14" is-unicode-supported@^0.1.0: version "0.1.0" @@ -5573,10 +5481,10 @@ issue-parser@^6.0.0: lodash.isstring "^4.0.1" lodash.uniqby "^4.7.0" -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== +jackspeak@^3.1.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" + integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -5592,11 +5500,6 @@ js-cookie@^2.2.1: resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== -js-sdsl@^4.1.4: - version "4.4.2" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" - integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== - js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -5627,6 +5530,11 @@ js-yaml@4.1.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsdoc-type-pratt-parser@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" @@ -5647,10 +5555,10 @@ json-parse-even-better-errors@^2.3.0: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-parse-even-better-errors@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" - integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== +json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== json-schema-traverse@^0.4.1: version "0.4.1" @@ -5789,28 +5697,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -level-supports@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" - integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== - -level-transcoder@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" - integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== - dependencies: - buffer "^6.0.3" - module-error "^1.0.1" - -level@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" - integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== - dependencies: - abstract-level "^1.0.4" - browser-level "^1.0.1" - classic-level "^1.2.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -5828,17 +5714,17 @@ levn@~0.3.0: type-check "~0.3.2" libnpmaccess@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.2.tgz#7f056c8c933dd9c8ba771fa6493556b53c5aac52" - integrity sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-7.0.3.tgz#9878b75c5cf36ddfff167dd47c1a6cf1fa21193c" + integrity sha512-It+fk/NRdRfv5giLhaVeyebGi/0S2LDSAwuZ0AGQ4x//PtCVb2Hj29wgSHe+XEL+RUkvLBkxbRV+DqLtOzuVTQ== dependencies: npm-package-arg "^10.1.0" npm-registry-fetch "^14.0.3" libnpmdiff@^5.0.20: - version "5.0.20" - resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-5.0.20.tgz#fc1d310521ce9765f7bf7693ba6affa02a11bcc1" - integrity sha512-oG+qEc0qzg++1YqLwguQvXAyG8BrKq+23RHr4sCa5XZnf1U+hcKUp8itgaBY9sGRYyGXtsRgXWWFHBmqXIctDA== + version "5.0.21" + resolved "https://registry.yarnpkg.com/libnpmdiff/-/libnpmdiff-5.0.21.tgz#9d3036595a4cf393e1de07df98a40607a054d333" + integrity sha512-Zx+o/qnGoX46osnInyQQ5KI8jn2wIqXXiu4TJzE8GFd+o6kbyblJf+ihG81M1+yHK3AzkD1m4KK3+UTPXh/hBw== dependencies: "@npmcli/arborist" "^6.5.0" "@npmcli/disparity-colors" "^3.0.0" @@ -5851,13 +5737,13 @@ libnpmdiff@^5.0.20: tar "^6.1.13" libnpmexec@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-6.0.4.tgz#205c7b77be5776576367c39f8d349e388025d77e" - integrity sha512-dhFp5yA9M2g8oLg/Ys9not+pNzW8B20pcz455TGqyU5VesXnEPQwK5EPVY8W24JJn7M0jMJ6/GxosywMPOTebA== + version "6.0.5" + resolved "https://registry.yarnpkg.com/libnpmexec/-/libnpmexec-6.0.5.tgz#36eb7e5a94a653478c8dd66b4a967cadf3f2540d" + integrity sha512-yN/7uJ3iYCPaKagHfrqXuCFLKn2ddcnYpEyC/tVhisHULC95uCy8AhUdNkThRXzhFqqptejO25ZfoWOGrdqnxA== dependencies: "@npmcli/arborist" "^6.5.0" "@npmcli/run-script" "^6.0.0" - ci-info "^3.7.1" + ci-info "^4.0.0" npm-package-arg "^10.1.0" npmlog "^7.0.1" pacote "^15.0.8" @@ -5868,32 +5754,32 @@ libnpmexec@^6.0.4: walk-up-path "^3.0.1" libnpmfund@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-4.2.1.tgz#f52bed09060e003c001cdaae8904ee97a3d6d5c6" - integrity sha512-2fbmQMk3wPMdPx1gbYLNbzghj48XAsfytKrmy+A0eFXwDxCwL0BLdgXoeLQCZPpLUMSPPXdKyL6Wm4erWezhnA== + version "4.2.2" + resolved "https://registry.yarnpkg.com/libnpmfund/-/libnpmfund-4.2.2.tgz#4e50507212e64fcb6a396e4c02369f6c0fc40369" + integrity sha512-qnkP09tpryxD/iPYasHM7+yG4ZVe0e91sBVI/R8HJ1+ajeR9poWDckwiN2LEWGvtV/T/dqB++6A1NLrA5NPryw== dependencies: "@npmcli/arborist" "^6.5.0" libnpmhook@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-9.0.3.tgz#5dbd6a146feb7e11993d36a26f750ae2347bb1d9" - integrity sha512-wMZe58sI7KLhg0+nUWZW5KdMfjNNcOIIbkoP19BDHYoUF9El7eeUWkGNxUGzpHkPKiGoQ1z/v6CYin4deebeuw== + version "9.0.4" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-9.0.4.tgz#43d893e19944a2e729b2b165a74f84a69443880d" + integrity sha512-bYD8nJiPnqeMtSsRc5bztqSh6/v16M0jQjLeO959HJqf9ZRWKRpVnFx971Rz5zbPGOB2BrQa6iopsh5vons5ww== dependencies: aproba "^2.0.0" npm-registry-fetch "^14.0.3" libnpmorg@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-5.0.4.tgz#94eec2b84fbef736457eb27894c972ae6f5cac82" - integrity sha512-YqYXLMAN0Y1eJH4w3hUFN9648xfSdvJANMsdeZTOWJOW4Pqp8qapJFzQdqCfUkg+tEuQmnaFQQKXvkMZC51+Mw== + version "5.0.5" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-5.0.5.tgz#baaba5c77bdfa6808975be9134a330f84b3fa4d4" + integrity sha512-0EbtEIFthVlmaj0hhC3LlEEXUZU3vKfJwfWL//iAqKjHreMhCD3cgdkld+UeWYDgsZzwzvXmopoY0l38I0yx9Q== dependencies: aproba "^2.0.0" npm-registry-fetch "^14.0.3" libnpmpack@^5.0.20: - version "5.0.20" - resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-5.0.20.tgz#982e656e87bdfb69b458260d20c6ab243c661e5d" - integrity sha512-lPQXok0sU0V7hjb8oMD6HjYTR296aZvCJQZ1PGC7PeuKkBGuNeqSKVE2I9bwI80E4bFa9gfQ1I+rGfkNRjn6tQ== + version "5.0.21" + resolved "https://registry.yarnpkg.com/libnpmpack/-/libnpmpack-5.0.21.tgz#bcc608279840448fa8c28d8df0f326694d0b6061" + integrity sha512-mQd3pPx7Xf6i2A6QnYcCmgq34BmfVG3HJvpl422B5dLKfi9acITqcJiJ2K7adhxPKZMF5VbP2+j391cs5w+xww== dependencies: "@npmcli/arborist" "^6.5.0" "@npmcli/run-script" "^6.0.0" @@ -5901,11 +5787,11 @@ libnpmpack@^5.0.20: pacote "^15.0.8" libnpmpublish@^7.5.1: - version "7.5.1" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.5.1.tgz#80f0b5d30210156af7a1b98b1a7bff06bd868684" - integrity sha512-z/7HYMtuRrNgcftrI9ILXezZWHYHG0RaIZFfUvcLktE75vrScE3zOO+qvAbvQodQi4YvYoOGF1ySQ8tdbDCYQQ== + version "7.5.2" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.5.2.tgz#1b2780a4a56429d6dea332174286179b8d6f930c" + integrity sha512-azAxjEjAgBkbPHUGsGdMbTScyiLcTKdEnNYwGS+9yt+fUsNyiYn8hNH3+HeWKaXzFjvxi50MrHw1yp1gg5pumQ== dependencies: - ci-info "^3.6.1" + ci-info "^4.0.0" normalize-package-data "^5.0.0" npm-package-arg "^10.1.0" npm-registry-fetch "^14.0.3" @@ -5915,24 +5801,24 @@ libnpmpublish@^7.5.1: ssri "^10.0.1" libnpmsearch@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-6.0.2.tgz#b6a531a312855dd3bf84dd273b1033dd09b4cbec" - integrity sha512-p+5BF19AvnVg8mcIQhy6yWhI6jHQRVMYaIaKeITEfYAffWsqbottA/WZdMtHL76hViC6SFM1WdclM1w5eAIa1g== + version "6.0.3" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-6.0.3.tgz#f6001910b4a68341c2aa3f6f9505e665ed98759e" + integrity sha512-4FLTFsygxRKd+PL32WJlFN1g6gkfx3d90PjgSgd6kl9nJ55sZQAqNyi1M7QROKB4kN8JCNCphK8fQYDMg5bCcg== dependencies: npm-registry-fetch "^14.0.3" libnpmteam@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-5.0.3.tgz#196657e9d87c0cc914c44fee588ad2b838074a3c" - integrity sha512-7XOGhi45s+ml6TyrhJUTyrErcoDMKGKfEtiTEco4ofU7BGGAUOalVztKMVLLJgJOOXdIAIlzCHqkTXEuSiyCiA== + version "5.0.4" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-5.0.4.tgz#255ac22d94e4b9e911456bf97c1dc1013df03659" + integrity sha512-yN2zxNb8Urvvo7fTWRcP3E/KPtpZJXFweDWcl+H/s3zopGDI9ahpidddGVG98JhnPl3vjqtZvFGU3/sqVTfuIw== dependencies: aproba "^2.0.0" npm-registry-fetch "^14.0.3" libnpmversion@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-4.0.2.tgz#cad9cd1b287fcf9576a64edfe71491b49a65d06f" - integrity sha512-n1X70mFHv8Piy4yos+MFWUARSkTbyV5cdsHScaIkuwYvRAF/s2VtYScDzWB4Oe8uNEuGNdjiRR1E/Dh1tMvv6g== + version "4.0.3" + resolved "https://registry.yarnpkg.com/libnpmversion/-/libnpmversion-4.0.3.tgz#f4d85d3eb6bdbf7de8d9317abda92528e84b1a53" + integrity sha512-eD1O5zr0ko5pjOdz+2NyTEzP0kzKG8VIVyU+hIsz61cRmTrTxFRJhVBNOI1Q/inifkcM/UTl8EMfa0vX48zfoQ== dependencies: "@npmcli/git" "^4.0.1" "@npmcli/run-script" "^6.0.0" @@ -6072,7 +5958,7 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww== -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -6109,17 +5995,10 @@ lowercase-keys@^3.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== -lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" +lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.3.0.tgz#4a4aaf10c84658ab70f79a85a9a3f1e1fb11196b" + integrity sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ== lru-cache@^6.0.0: version "6.0.0" @@ -6223,11 +6102,6 @@ match-all@^1.2.6: resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== -mcl-wasm@^0.7.1: - version "0.7.9" - resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" - integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -6237,15 +6111,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -memory-level@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" - integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== - dependencies: - abstract-level "^1.0.0" - functional-red-black-tree "^1.0.1" - module-error "^1.0.1" - memory-pager@^1.0.2: version "1.5.0" resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" @@ -6294,11 +6159,11 @@ micro-ftch@^0.3.1: integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0: @@ -6314,9 +6179,9 @@ mime-types@^2.1.12: mime-db "1.52.0" mime@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-4.0.1.tgz#ad7563d1bfe30253ad97dedfae2b1009d01b9470" - integrity sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA== + version "4.0.3" + resolved "https://registry.yarnpkg.com/mime/-/mime-4.0.3.tgz#cd4a1aa052fc980dfc34f111fe1be9e8b878c5d2" + integrity sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ== mimic-fn@^2.1.0: version "2.1.0" @@ -6374,10 +6239,10 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== +minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -6414,9 +6279,9 @@ minipass-fetch@^2.0.3: encoding "^0.1.13" minipass-fetch@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" - integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== dependencies: minipass "^7.0.3" minipass-sized "^1.0.3" @@ -6465,10 +6330,10 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" @@ -6498,24 +6363,23 @@ mnemonist@^0.38.0: obliterator "^2.0.0" mocha@^10.0.0, mocha@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + version "10.5.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.5.2.tgz#0a3481fb67c0a7fc144a909b2d6a9fec35ec5989" + integrity sha512-9btlN3JKCefPf+vKd/kcKz2SXxi12z6JswkGfaAF0saQvnsqLJk504ZmbxhSoENge08E9dsymozKgFMTl5PQsA== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.3" + chokidar "^3.5.3" debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.2.0" + glob "8.1.0" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" @@ -6529,26 +6393,21 @@ modify-values@^1.0.1: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -module-error@^1.0.1, module-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" - integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== - mongodb-connection-string-url@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz#b4f87f92fd8593f3b9365f592515a06d304a1e9c" - integrity sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ== + version "3.0.1" + resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz#c13e6ac284ae401752ebafdb8cd7f16c6723b141" + integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== dependencies: "@types/whatwg-url" "^11.0.2" whatwg-url "^13.0.0" mongodb@^6.1.0, mongodb@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.3.0.tgz#ec9993b19f7ed2ea715b903fcac6171c9d1d38ca" - integrity sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA== + version "6.8.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.8.0.tgz#680450f113cdea6d2d9f7121fe57cd29111fd2ce" + integrity sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw== dependencies: - "@mongodb-js/saslprep" "^1.1.0" - bson "^6.2.0" + "@mongodb-js/saslprep" "^1.1.5" + bson "^6.7.0" mongodb-connection-string-url "^3.0.0" ms@2.1.2: @@ -6610,7 +6469,7 @@ murmur-128@^0.2.1: fmix "^0.1.0" imul "^1.0.0" -mute-stream@~1.0.0: +mute-stream@^1.0.0, mute-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== @@ -6620,16 +6479,6 @@ nano-base32@^1.0.1: resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - -napi-macros@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" - integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== - natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -6667,19 +6516,19 @@ node-emoji@^1.10.0, node-emoji@^1.11.0: dependencies: lodash "^4.17.21" -node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@^2.6.1: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" - integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== +node-gyp-build@^4.2.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== -node-gyp@^9.0.0, node-gyp@^9.4.0: +node-gyp@^9.0.0, node-gyp@^9.4.1: version "9.4.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== @@ -6716,9 +6565,9 @@ nopt@^6.0.0: abbrev "^1.0.0" nopt@^7.0.0, nopt@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7" - integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA== + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== dependencies: abbrev "^2.0.0" @@ -6753,12 +6602,11 @@ normalize-package-data@^5.0.0: validate-npm-package-license "^3.0.4" normalize-package-data@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.0.tgz#68a96b3c11edd462af7189c837b6b1064a484196" - integrity sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== + version "6.0.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" + integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== dependencies: hosted-git-info "^7.0.0" - is-core-module "^2.8.1" semver "^7.3.5" validate-npm-package-license "^3.0.4" @@ -6768,9 +6616,9 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-url@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" - integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== + version "8.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" + integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== npm-audit-report@^5.0.0: version "5.0.0" @@ -6778,13 +6626,13 @@ npm-audit-report@^5.0.0: integrity sha512-EkXrzat7zERmUhHaoren1YhTxFwsOu5jypE84k6632SXTHcQE1z8V51GC6GVZt8LxkC+tbBcKMUBZAgk8SUSbw== npm-bundled@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" - integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== dependencies: npm-normalize-package-bin "^3.0.0" -npm-install-checks@^6.0.0, npm-install-checks@^6.2.0: +npm-install-checks@^6.0.0, npm-install-checks@^6.2.0, npm-install-checks@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== @@ -6852,21 +6700,21 @@ npm-run-path@^4.0.1: path-key "^3.0.0" npm-run-path@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" - integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== dependencies: path-key "^4.0.0" npm-user-validate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-2.0.0.tgz#7b69bbbff6f7992a1d9a8968d52fd6b6db5431b6" - integrity sha512-sSWeqAYJ2dUPStJB+AEj0DyLRltr/f6YNcvCA7phkB8/RMLMnVsQ41GMwHo/ERZLYNDsyB2wPm7pZo1mqPOl7Q== + version "2.0.1" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-2.0.1.tgz#097afbf0a2351e2a8f478f1ba07960b368f2a25c" + integrity sha512-d17PKaF2h8LSGFl5j4b1gHOJt1fgH7YUcCm1kNSJvaLWWKXlBsuUvx0bBEkr0qhsVA9XP5LtRZ83hdlhm2QkgA== npm@^9.5.0: - version "9.9.2" - resolved "https://registry.yarnpkg.com/npm/-/npm-9.9.2.tgz#28133f81643bce36c1c8bcb57b51e1ee53583df7" - integrity sha512-D3tV+W0PzJOlwo8YmO6fNzaB1CrMVYd1V+2TURF6lbCbmZKqMsYgeQfPVvqiM3zbNSJPhFEnmlEXIogH2Vq7PQ== + version "9.9.3" + resolved "https://registry.yarnpkg.com/npm/-/npm-9.9.3.tgz#18272a7b966721417691fec0ca18f7fbe4a9794e" + integrity sha512-Z1l+rcQ5kYb17F3hHtO601arEpvdRYnCLtg8xo3AGtyj3IthwaraEOexI9903uANkifFbqHC8hT53KIrozWg8A== dependencies: "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/arborist" "^6.5.0" @@ -6878,21 +6726,21 @@ npm@^9.5.0: "@npmcli/run-script" "^6.0.2" abbrev "^2.0.0" archy "~1.0.0" - cacache "^17.1.3" + cacache "^17.1.4" chalk "^5.3.0" - ci-info "^3.8.0" + ci-info "^4.0.0" cli-columns "^4.0.0" cli-table3 "^0.6.3" columnify "^1.6.0" fastest-levenshtein "^1.0.16" - fs-minipass "^3.0.2" - glob "^10.2.7" + fs-minipass "^3.0.3" + glob "^10.3.10" graceful-fs "^4.2.11" hosted-git-info "^6.1.1" ini "^4.1.1" init-package-json "^5.0.0" is-cidr "^4.0.2" - json-parse-even-better-errors "^3.0.0" + json-parse-even-better-errors "^3.0.1" libnpmaccess "^7.0.2" libnpmdiff "^5.0.20" libnpmexec "^6.0.4" @@ -6906,14 +6754,14 @@ npm@^9.5.0: libnpmversion "^4.0.2" make-fetch-happen "^11.1.1" minimatch "^9.0.3" - minipass "^5.0.0" + minipass "^7.0.4" minipass-pipeline "^1.2.4" ms "^2.1.2" - node-gyp "^9.4.0" + node-gyp "^9.4.1" nopt "^7.2.0" normalize-package-data "^5.0.0" npm-audit-report "^5.0.0" - npm-install-checks "^6.2.0" + npm-install-checks "^6.3.0" npm-package-arg "^10.1.0" npm-pick-manifest "^8.0.2" npm-profile "^7.0.1" @@ -6926,12 +6774,12 @@ npm@^9.5.0: proc-log "^3.0.0" qrcode-terminal "^0.12.0" read "^2.1.0" - semver "^7.5.4" + semver "^7.6.0" sigstore "^1.9.0" spdx-expression-parse "^3.0.1" - ssri "^10.0.4" + ssri "^10.0.5" supports-color "^9.4.0" - tar "^6.1.15" + tar "^6.2.0" text-table "~0.2.0" tiny-relative-date "^1.3.0" treeverse "^3.0.0" @@ -6977,17 +6825,17 @@ object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.2, object.assign@^4.1.4: +object.assign@^4.1.2, object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -6998,41 +6846,41 @@ object.assign@^4.1.2, object.assign@^4.1.4: object-keys "^1.1.1" object.entries@^1.1.5: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" obliterator@^2.0.0: version "2.0.4" @@ -7089,16 +6937,16 @@ optionator@^0.8.1: word-wrap "~1.2.3" optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" + word-wrap "^1.2.5" ordinal@^1.0.3: version "1.0.3" @@ -7203,9 +7051,9 @@ p-map@^4.0.0: aggregate-error "^3.0.0" p-map@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-7.0.1.tgz#1faf994e597160f7851882926bfccabc1d226f80" - integrity sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw== + version "7.0.2" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-7.0.2.tgz#7c5119fada4755660f70199a66aa3fe2f85a1fe8" + integrity sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q== p-reduce@^2.0.0: version "2.1.0" @@ -7227,6 +7075,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + package-json@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" @@ -7365,12 +7218,12 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: - lru-cache "^9.1.1 || ^10.0.0" + lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-type@^1.0.0: @@ -7408,6 +7261,11 @@ pbkdf2@^3.0.17: safe-buffer "^5.0.1" sha.js "^2.4.8" +picocolors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -7453,10 +7311,15 @@ pluralize@^8.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-selector-parser@^6.0.10: - version "6.0.15" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" - integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" + integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7525,11 +7388,11 @@ prompts@^2.4.2: sisteransi "^1.0.5" promzard@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.0.tgz#3246f8e6c9895a77c0549cefb65828ac0f6c006b" - integrity sha512-KQVDEubSUHGSt5xLakaToDFrSoZhStB8dXLzk2xvwR67gJktrHFvpR63oZgHyK19WKbHFLXJqCPXdVR3aBP8Ig== + version "1.0.2" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-1.0.2.tgz#2226e7c6508b1da3471008ae17066a7c3251e660" + integrity sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ== dependencies: - read "^2.0.0" + read "^3.0.1" proper-lockfile@^4.1.1: version "4.1.2" @@ -7566,13 +7429,13 @@ qrcode-terminal@^0.12.0: integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== qs@^6.4.0, qs@^6.9.4: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + version "6.12.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" -queue-microtask@^1.2.2, queue-microtask@^1.2.3: +queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== @@ -7699,6 +7562,13 @@ read@^2.0.0, read@^2.1.0: dependencies: mute-stream "~1.0.0" +read@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" + integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== + dependencies: + mute-stream "^1.0.0" + readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -7767,14 +7637,15 @@ regenerator-runtime@^0.14.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" registry-auth-token@^5.0.0, registry-auth-token@^5.0.1: version "5.0.2" @@ -7814,7 +7685,7 @@ require-from-string@^1.1.0: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== -require-from-string@^2.0.0, require-from-string@^2.0.2: +require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== @@ -7921,13 +7792,6 @@ rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.0" -run-parallel-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" - integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== - dependencies: - queue-microtask "^1.2.2" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -7935,18 +7799,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== - -safe-array-concat@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" - integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" + call-bind "^1.0.7" + get-intrinsic "^1.2.4" has-symbols "^1.0.3" isarray "^2.0.5" @@ -7960,13 +7819,13 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex-test@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" - integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" + call-bind "^1.0.6" + es-errors "^1.3.0" is-regex "^1.1.4" safe-stable-stringify@^2.3.1: @@ -8069,12 +7928,10 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" +semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.6.0: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== serialize-javascript@6.0.0: version "6.0.0" @@ -8088,25 +7945,27 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" - integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: - define-data-property "^1.1.1" + define-data-property "^1.1.4" + es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.2" + get-intrinsic "^1.2.4" gopd "^1.0.1" - has-property-descriptors "^1.0.1" + has-property-descriptors "^1.0.2" -set-function-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== dependencies: - define-data-property "^1.0.1" + define-data-property "^1.1.4" + es-errors "^1.3.0" functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" setimmediate@^1.0.5: version "1.0.5" @@ -8162,14 +8021,15 @@ shelljs@^0.8.3: interpret "^1.0.0" rechoir "^0.6.2" -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== +side-channel@^1.0.4, side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" @@ -8247,25 +8107,23 @@ socks-proxy-agent@^7.0.0: socks "^2.6.2" socks@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== dependencies: - ip "^2.0.0" + ip-address "^9.0.5" smart-buffer "^4.2.0" -solc@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" - integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== +solc@0.8.26: + version "0.8.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.26.tgz#afc78078953f6ab3e727c338a2fefcd80dd5b01a" + integrity sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g== dependencies: command-exists "^1.2.8" - commander "3.0.2" + commander "^8.1.0" follow-redirects "^1.12.1" - fs-extra "^0.30.0" js-sha3 "0.8.0" memorystream "^0.3.1" - require-from-string "^2.0.0" semver "^5.5.0" tmp "0.0.33" @@ -8280,14 +8138,14 @@ solc@^0.4.20: semver "^5.3.0" yargs "^4.7.1" -solhint@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-4.1.1.tgz#137c935ef028f01ba13687a1f237288d94dae1bf" - integrity sha512-7G4iF8H5hKHc0tR+/uyZesSKtfppFIMvPSW+Ku6MSL25oVRuyFeqNhOsXHfkex64wYJyXs4fe+pvhB069I19Tw== +solhint@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-5.0.1.tgz#f0f783bd9d945e5a27b102295a3f28edba241d6c" + integrity sha512-QeQLS9HGCnIiibt+xiOa/+MuP7BWz9N7C5+Mj9pLHshdkNhuo3AzCpWmjfWVZBUuwIUO3YyCRVIcYLR3YOKGfg== dependencies: - "@solidity-parser/parser" "^0.16.0" + "@solidity-parser/parser" "^0.18.0" ajv "^6.12.6" - antlr4 "^4.11.0" + antlr4 "^4.13.1-patch-1" ast-parents "^0.0.1" chalk "^4.1.2" commander "^10.0.0" @@ -8307,29 +8165,28 @@ solhint@^4.0.0: prettier "^2.8.3" solidity-ast@^0.4.38, solidity-ast@^0.4.51: - version "0.4.55" - resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.55.tgz#00b685e6eefb2e8dfb67df1fe0afbe3b3bfb4b28" - integrity sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA== + version "0.4.56" + resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.56.tgz#94fe296f12e8de1a3bed319bc06db8d05a113d7a" + integrity sha512-HgmsA/Gfklm/M8GFbCX/J1qkVH0spXHgALCNZ8fA8x5X+MFdn/8CP2gr5OVyXjXw6RZTPC/Sxl2RUDQOXyNMeA== dependencies: array.prototype.findlast "^1.2.2" -solidity-coverage@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.6.tgz#c7b18dc9edfeba11064726c37d96265f689c9478" - integrity sha512-vV03mA/0nNMskOdVwNarUcqk0N/aYdelxAbf6RZ5l84FcYHbqDTr2JXyeYMp4bT48qHtAQjnKrygW1FrECyWNw== +solidity-coverage@^0.8.12: + version "0.8.12" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.12.tgz#c4fa2f64eff8ada7a1387b235d6b5b0e6c6985ed" + integrity sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw== dependencies: "@ethersproject/abi" "^5.0.9" "@solidity-parser/parser" "^0.18.0" chalk "^2.4.2" death "^1.1.0" - detect-port "^1.3.0" difflib "^0.2.4" fs-extra "^8.1.0" ghost-testrpc "^0.0.2" global-modules "^2.0.0" globby "^10.0.1" jsonschema "^1.2.4" - lodash "^4.17.15" + lodash "^4.17.21" mocha "^10.2.0" node-emoji "^1.10.0" pify "^4.0.1" @@ -8388,9 +8245,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz#c07a4ede25b16e4f78e6707bbd84b15a45c19c1b" - integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: version "3.0.1" @@ -8401,9 +8258,9 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + version "3.0.18" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== split2@^4.0.0: version "4.2.0" @@ -8424,15 +8281,20 @@ split@^1.0.1: dependencies: through "2" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -ssri@^10.0.0, ssri@^10.0.1, ssri@^10.0.4: - version "10.0.5" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" - integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== +ssri@^10.0.0, ssri@^10.0.1, ssri@^10.0.5: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== dependencies: minipass "^7.0.3" @@ -8473,7 +8335,7 @@ string-format@^2.0.0: resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8508,32 +8370,33 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" string_decoder@^1.1.1: version "1.3.0" @@ -8696,9 +8559,9 @@ table-layout@^1.0.2: wordwrapjs "^4.0.0" table@^6.8.0, table@^6.8.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -8706,10 +8569,10 @@ table@^6.8.0, table@^6.8.1: string-width "^4.2.3" strip-ansi "^6.0.1" -tar@^6.1.11, tar@^6.1.13, tar@^6.1.15, tar@^6.1.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== +tar@^6.1.11, tar@^6.1.13, tar@^6.1.2, tar@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -8733,10 +8596,10 @@ tempy@^3.0.0: type-fest "^2.12.2" unique-string "^3.0.0" -tenderly@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/tenderly/-/tenderly-0.8.0.tgz#ffda1f40597b91470e728900e3bdfe6a4f152ec5" - integrity sha512-4Faw9jkwMuBOva82lAtvhTa9isc503GkWwVWSsR8ONm+i3SeFatv7hNyYPZIifQBeuU9GOVNkWHCAXon6NE/aw== +tenderly@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/tenderly/-/tenderly-0.9.1.tgz#de988bc5b65a106c2e1f84faf17863ba9bb81173" + integrity sha512-EGhYYbOgIC0EUebrMIwCRIL9NrGrC8q3gTY/3JNSqvQrNX4RLUgMHungTG4bkgGAwJoehC57vsAeKqR1PVIyjw== dependencies: axios "^0.27.2" cli-table3 "^0.6.2" @@ -8833,9 +8696,13 @@ tr46@~0.0.3: integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== traverse@~0.6.6: - version "0.6.8" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.8.tgz#5e5e0c41878b57e4b73ad2f3d1e36a715ea4ab15" - integrity sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA== + version "0.6.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.9.tgz#76cfdbacf06382d460b76f8b735a44a6209d8b81" + integrity sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg== + dependencies: + gopd "^1.0.1" + typedarray.prototype.slice "^1.0.3" + which-typed-array "^1.1.15" treeverse@^3.0.0: version "3.0.0" @@ -8925,15 +8792,15 @@ tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.1, tslib@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.3.1, tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tslog@^4.3.1, tslog@^4.4.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/tslog/-/tslog-4.9.2.tgz#35de3a073784dfe3849caeaa028010c7a62b7f4a" - integrity sha512-wBM+LRJoNl34Bdu8mYEFxpvmOUedpNUwMNQB/NcuPIZKwdDde6xLHUev3bBjXQU7gdurX++X/YE7gLH8eXYsiQ== + version "4.9.3" + resolved "https://registry.yarnpkg.com/tslog/-/tslog-4.9.3.tgz#d4167d5f51748bdeab593945bc2d8f9827ea0dba" + integrity sha512-oDWuGVONxhVEBtschLf2cs/Jy8i7h1T+CpdkTNWQgdAF7DhRo2G8vMCgILKe7ojdEkLhICWgI1LYSSKaJsRgcw== tsort@0.0.1: version "0.0.1" @@ -9025,15 +8892,15 @@ type-fest@^2.12.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-fest@^3.0.0, type-fest@^3.8.0: +type-fest@^3.8.0: version "3.13.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== type-fest@^4.2.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.10.1.tgz#35e6cd34d1fe331cf261d8ebb83e64788b89db4b" - integrity sha512-7ZnJYTp6uc04uYRISWtiX3DSKB/fxNQT0B5o1OUeCqiQiwF+JC9+rJiZIDrPrNCLLuTqyQmh4VdQqh/ZOkv9MQ== + version "4.20.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.20.1.tgz#d97bb1e923bf524e5b4b43421d586760fb2ee8be" + integrity sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg== typechain@^8.3.2: version "8.3.2" @@ -9051,44 +8918,61 @@ typechain@^8.3.2: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - is-typed-array "^1.1.9" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typedarray.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz#bce2f685d3279f543239e4d595e0d021731d2d1a" + integrity sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-errors "^1.3.0" + typed-array-buffer "^1.0.2" + typed-array-byte-offset "^1.0.2" typedarray@^0.0.6: version "0.0.6" @@ -9096,9 +8980,9 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript@^5.0.2, typescript@^5.2.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + version "5.5.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507" + integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew== typical@^4.0.0: version "4.0.0" @@ -9111,9 +8995,9 @@ typical@^5.2.0: integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + version "3.18.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" + integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== unbox-primitive@^1.0.2: version "1.0.2" @@ -9131,12 +9015,17 @@ undici-types@~5.26.4: integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== undici@^5.14.0: - version "5.28.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" - integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== dependencies: "@fastify/busboy" "^2.0.0" +undici@^6.11.1: + version "6.19.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.19.2.tgz#231bc5de78d0dafb6260cf454b294576c2f3cd31" + integrity sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA== + unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -9202,7 +9091,7 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -9243,11 +9132,9 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-expression-parse "^3.0.0" validate-npm-package-name@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" - integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== - dependencies: - builtins "^5.0.0" + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== varint@^5.0.0: version "5.0.2" @@ -9267,9 +9154,9 @@ wcwidth@^1.0.0: defaults "^1.0.3" web3-utils@^1.0.0-beta.31, web3-utils@^1.3.6: - version "1.10.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" - integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== + version "1.10.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== dependencies: "@ethereumjs/util" "^8.1.0" bn.js "^5.2.1" @@ -9322,16 +9209,16 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.2" which@^1.1.1, which@^1.3.1: version "1.3.1" @@ -9361,24 +9248,31 @@ wide-align@^1.1.5: dependencies: string-width "^1.0.2 || 2 || 3 || 4" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== -winston-transport@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.6.0.tgz#f1c1a665ad1b366df72199e27892721832a19e1b" - integrity sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg== +winston-transport@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" + integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== dependencies: logform "^2.3.2" readable-stream "^3.6.0" triple-beam "^1.3.0" winston@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.11.0.tgz#2d50b0a695a2758bb1c95279f0a88e858163ed91" - integrity sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g== + version "3.13.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" + integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== dependencies: "@colors/colors" "^1.6.0" "@dabh/diagnostics" "^2.0.2" @@ -9390,9 +9284,9 @@ winston@^3.11.0: safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.5.0" + winston-transport "^4.7.0" -word-wrap@~1.2.3: +word-wrap@^1.2.5, word-wrap@~1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== @@ -9459,15 +9353,15 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== xtend@~4.0.1: version "4.0.2" @@ -9484,11 +9378,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"