diff --git a/.eslintrc b/.eslintrc
index 08315a2f..ad215f61 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -22,7 +22,8 @@
"assert": false,
"web3": false,
"usePlugin": false,
- "extendEnvironment": false
+ "extendEnvironment": false,
+ "BigInt": true
},
"ignorePatterns": [
"types/**/*",
@@ -34,7 +35,7 @@
"strict": ["error", "global"],
// Code style
"array-bracket-spacing": ["off"],
- "camelcase": ["error", {"properties": "always", "ignoreImports": true}],
+ "camelcase": ["error", {"properties": "always", "allow": [".*__factory"]}],
"comma-dangle": ["error", "always-multiline"],
"comma-spacing": ["error", {"before": false, "after": true}],
"dot-notation": ["error", {"allowKeywords": true, "allowPattern": ""}],
diff --git a/.prettierrc b/.prettierrc
index 6d740784..c1de0fc9 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -6,8 +6,7 @@
"files": "*.sol",
"options": {
"printWidth": 140,
- "singleQuote": true,
- "explicitTypes": "always"
+ "singleQuote": true
}
},
{
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a95289ec..2ea50b0f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## v0.9.10
+
+- Migrated to `ethers@6`, updated other dependencies
+
## v0.9.9
- Add `.clay` TLD
diff --git a/contracts/IAddressReader.sol b/contracts/IAddressReader.sol
index 8d29106c..cc83d66b 100644
--- a/contracts/IAddressReader.sol
+++ b/contracts/IAddressReader.sol
@@ -10,11 +10,7 @@ interface IAddressReader {
* @param token Token
* @param tokenId The token id to fetch records from.
*/
- function getAddress(
- string calldata network,
- string calldata token,
- uint256 tokenId
- ) external view returns (string memory);
+ function getAddress(string calldata network, string calldata token, uint256 tokenId) external view returns (string memory);
/**
* @dev Function to get address record key by network and token key
@@ -22,11 +18,7 @@ interface IAddressReader {
* @param token Token
* @param tokenId The token id to fetch records from.
*/
- function getAddressKey(
- string calldata network,
- string calldata token,
- uint256 tokenId
- ) external view returns (string memory);
+ function getAddressKey(string calldata network, string calldata token, uint256 tokenId) external view returns (string memory);
/**
* @dev Function to get the list of address record keys by network and token
diff --git a/contracts/IDataReader.sol b/contracts/IDataReader.sol
index 9d4c96ce..08452028 100644
--- a/contracts/IDataReader.sol
+++ b/contracts/IDataReader.sol
@@ -9,58 +9,40 @@ interface IDataReader {
* @param keys Keys to query values.
* @param tokenId The token id to fetch.
*/
- function getData(string[] calldata keys, uint256 tokenId)
- external
- view
- returns (
- address resolver,
- address owner,
- string[] memory values
- );
+ function getData(
+ string[] calldata keys,
+ uint256 tokenId
+ ) external view returns (address resolver, address owner, string[] memory values);
/**
* @dev Function to get resolver address, owner address and requested records for array of tokens.
* @param keys Keys to query values.
* @param tokenIds Array of token ids to fetch.
*/
- function getDataForMany(string[] calldata keys, uint256[] calldata tokenIds)
- external
- view
- returns (
- address[] memory resolvers,
- address[] memory owners,
- string[][] memory values
- );
+ function getDataForMany(
+ string[] calldata keys,
+ uint256[] calldata tokenIds
+ ) external view returns (address[] memory resolvers, address[] memory owners, string[][] memory values);
/**
* @dev Function to get resolver address, owner address and requested records.
* @param keyHashes Key hashes to query values.
* @param tokenId The token id to fetch.
*/
- function getDataByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- returns (
- address resolver,
- address owner,
- string[] memory keys,
- string[] memory values
- );
+ function getDataByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view returns (address resolver, address owner, string[] memory keys, string[] memory values);
/**
* @dev Function to get resolver address, owner address and requested records for array of tokens.
* @param keyHashes Key hashes to query values.
* @param tokenIds Array of token ids to fetch.
*/
- function getDataByHashForMany(uint256[] calldata keyHashes, uint256[] calldata tokenIds)
- external
- view
- returns (
- address[] memory resolvers,
- address[] memory owners,
- string[][] memory keys,
- string[][] memory values
- );
+ function getDataByHashForMany(
+ uint256[] calldata keyHashes,
+ uint256[] calldata tokenIds
+ ) external view returns (address[] memory resolvers, address[] memory owners, string[][] memory keys, string[][] memory values);
/**
* @param tokenIds Array of token ids to fetch.
diff --git a/contracts/IMintingManager.sol b/contracts/IMintingManager.sol
index 42543fe4..9f95c082 100644
--- a/contracts/IMintingManager.sol
+++ b/contracts/IMintingManager.sol
@@ -82,11 +82,7 @@ interface IMintingManager is IERC1967 {
* @param tld id of parent token
* @param label SLD label to mint
*/
- function claimTo(
- address to,
- uint256 tld,
- string calldata label
- ) external;
+ function claimTo(address to, uint256 tld, string calldata label) external;
/**
* @dev Claims free domain. The fuction adds prefix to label.
@@ -94,13 +90,7 @@ interface IMintingManager is IERC1967 {
* @param tld id of parent token
* @param label SLD label to mint
*/
- function claimToWithRecords(
- address to,
- uint256 tld,
- string calldata label,
- string[] calldata keys,
- string[] calldata values
- ) external;
+ function claimToWithRecords(address to, uint256 tld, string calldata label, string[] calldata keys, string[] calldata values) external;
/**
* @dev Purchases a SLD using native token.
diff --git a/contracts/IRecordReader.sol b/contracts/IRecordReader.sol
index 751781ff..c5a2b2b0 100644
--- a/contracts/IRecordReader.sol
+++ b/contracts/IRecordReader.sol
@@ -32,8 +32,8 @@ interface IRecordReader {
* @param keyHashes The key to query the value of.
* @param tokenId The token id to set.
*/
- function getManyByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- returns (string[] memory keys, string[] memory values);
+ function getManyByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view returns (string[] memory keys, string[] memory values);
}
diff --git a/contracts/IRecordStorage.sol b/contracts/IRecordStorage.sol
index c6ba6db0..cf937dce 100644
--- a/contracts/IRecordStorage.sol
+++ b/contracts/IRecordStorage.sol
@@ -18,11 +18,7 @@ interface IRecordStorage is IRecordReader {
* @param value The value to set key to
* @param tokenId ERC-721 token id to set
*/
- function set(
- string calldata key,
- string calldata value,
- uint256 tokenId
- ) external;
+ function set(string calldata key, string calldata value, uint256 tokenId) external;
/**
* @dev Set records by keys
@@ -30,11 +26,7 @@ interface IRecordStorage is IRecordReader {
* @param values Records values
* @param tokenId ERC-721 token id of the domain
*/
- function setMany(
- string[] memory keys,
- string[] memory values,
- uint256 tokenId
- ) external;
+ function setMany(string[] memory keys, string[] memory values, uint256 tokenId) external;
/**
* @dev Set record by key hash
@@ -42,11 +34,7 @@ interface IRecordStorage is IRecordReader {
* @param value The value to set key to
* @param tokenId ERC-721 token id to set
*/
- function setByHash(
- uint256 keyHash,
- string calldata value,
- uint256 tokenId
- ) external;
+ function setByHash(uint256 keyHash, string calldata value, uint256 tokenId) external;
/**
* @dev Set records by key hashes
@@ -54,11 +42,7 @@ interface IRecordStorage is IRecordReader {
* @param values Records values
* @param tokenId ERC-721 token id of the domain
*/
- function setManyByHash(
- uint256[] calldata keyHashes,
- string[] calldata values,
- uint256 tokenId
- ) external;
+ function setManyByHash(uint256[] calldata keyHashes, string[] calldata values, uint256 tokenId) external;
/**
* @dev Reset all domain records and set new ones
@@ -66,11 +50,7 @@ interface IRecordStorage is IRecordReader {
* @param values New record values
* @param tokenId ERC-721 token id of the domain
*/
- function reconfigure(
- string[] memory keys,
- string[] memory values,
- uint256 tokenId
- ) external;
+ function reconfigure(string[] memory keys, string[] memory values, uint256 tokenId) external;
/**
* @dev Function to reset all existing records on a domain.
diff --git a/contracts/IRootRegistry.sol b/contracts/IRootRegistry.sol
index 2e1cfc12..103dcf3b 100644
--- a/contracts/IRootRegistry.sol
+++ b/contracts/IRootRegistry.sol
@@ -19,10 +19,5 @@ interface IRootRegistry is IMintableERC721 {
* @param keys New record keys
* @param values New record values
*/
- function withdrawFromPolygon(
- bytes calldata inputData,
- uint256 tokenId,
- string[] calldata keys,
- string[] calldata values
- ) external;
+ function withdrawFromPolygon(bytes calldata inputData, uint256 tokenId, string[] calldata keys, string[] calldata values) external;
}
diff --git a/contracts/MintingManager.sol b/contracts/MintingManager.sol
index 8270ec7c..d0408f79 100644
--- a/contracts/MintingManager.sol
+++ b/contracts/MintingManager.sol
@@ -193,11 +193,7 @@ contract MintingManager is ERC2771Context, MinterRole, Blocklist, Pausable, IMin
_issueWithRecords(_msgSender(), _buildLabels(tld, _freeSLDLabel(label)), empty, empty, 0, true);
}
- function claimTo(
- address to,
- uint256 tld,
- string calldata label
- ) external override onlyAllowedSLD(tld, label) whenNotPaused {
+ function claimTo(address to, uint256 tld, string calldata label) external override onlyAllowedSLD(tld, label) whenNotPaused {
string[] memory empty;
_issueWithRecords(to, _buildLabels(tld, _freeSLDLabel(label)), empty, empty, 0, true);
}
@@ -381,11 +377,7 @@ contract MintingManager is ERC2771Context, MinterRole, Blocklist, Pausable, IMin
_block(tokenId);
}
- function _ensureAllowed(
- uint256 tld,
- string memory label,
- uint64 expiry
- ) private view {
+ function _ensureAllowed(uint256 tld, string memory label, uint64 expiry) private view {
require(_isTld(tld), 'MintingManager: TLD_NOT_REGISTERED');
require(_expirableTlds[tld] == (expiry > 0), 'MintingManager: TLD_EXPIRABLE_MISMATCH');
diff --git a/contracts/ProxyReader.sol b/contracts/ProxyReader.sol
index f88c2d6e..b324d53f 100644
--- a/contracts/ProxyReader.sol
+++ b/contracts/ProxyReader.sol
@@ -148,12 +148,10 @@ contract ProxyReader is ERC165Upgradeable, MulticallUpgradeable, Ownable, IRegis
}
}
- function getManyByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- override
- returns (string[] memory keys, string[] memory values)
- {
+ function getManyByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view override returns (string[] memory keys, string[] memory values) {
keys = new string[](keyHashes.length);
values = new string[](keyHashes.length);
if (_useUns(tokenId)) {
@@ -168,29 +166,17 @@ contract ProxyReader is ERC165Upgradeable, MulticallUpgradeable, Ownable, IRegis
}
}
- function getData(string[] calldata keys, uint256 tokenId)
- external
- view
- override
- returns (
- address resolver,
- address owner,
- string[] memory values
- )
- {
+ function getData(
+ string[] calldata keys,
+ uint256 tokenId
+ ) external view override returns (address resolver, address owner, string[] memory values) {
return _getData(keys, tokenId);
}
- function getDataForMany(string[] calldata keys, uint256[] calldata tokenIds)
- external
- view
- override
- returns (
- address[] memory resolvers,
- address[] memory owners,
- string[][] memory values
- )
- {
+ function getDataForMany(
+ string[] calldata keys,
+ uint256[] calldata tokenIds
+ ) external view override returns (address[] memory resolvers, address[] memory owners, string[][] memory values) {
resolvers = new address[](tokenIds.length);
owners = new address[](tokenIds.length);
values = new string[][](tokenIds.length);
@@ -200,30 +186,21 @@ contract ProxyReader is ERC165Upgradeable, MulticallUpgradeable, Ownable, IRegis
}
}
- function getDataByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- override
- returns (
- address resolver,
- address owner,
- string[] memory keys,
- string[] memory values
- )
- {
+ function getDataByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view override returns (address resolver, address owner, string[] memory keys, string[] memory values) {
return _getDataByHash(keyHashes, tokenId);
}
- function getDataByHashForMany(uint256[] calldata keyHashes, uint256[] calldata tokenIds)
+ function getDataByHashForMany(
+ uint256[] calldata keyHashes,
+ uint256[] calldata tokenIds
+ )
external
view
override
- returns (
- address[] memory resolvers,
- address[] memory owners,
- string[][] memory keys,
- string[][] memory values
- )
+ returns (address[] memory resolvers, address[] memory owners, string[][] memory keys, string[][] memory values)
{
resolvers = new address[](tokenIds.length);
owners = new address[](tokenIds.length);
@@ -350,15 +327,10 @@ contract ProxyReader is ERC165Upgradeable, MulticallUpgradeable, Ownable, IRegis
}
}
- function _getData(string[] calldata keys, uint256 tokenId)
- private
- view
- returns (
- address resolver,
- address owner,
- string[] memory values
- )
- {
+ function _getData(
+ string[] calldata keys,
+ uint256 tokenId
+ ) private view returns (address resolver, address owner, string[] memory values) {
values = new string[](keys.length);
if (_useUns(tokenId)) {
resolver = _unsRegistry.resolverOf(tokenId);
@@ -375,16 +347,10 @@ contract ProxyReader is ERC165Upgradeable, MulticallUpgradeable, Ownable, IRegis
}
}
- function _getDataByHash(uint256[] calldata keyHashes, uint256 tokenId)
- private
- view
- returns (
- address resolver,
- address owner,
- string[] memory keys,
- string[] memory values
- )
- {
+ function _getDataByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) private view returns (address resolver, address owner, string[] memory keys, string[] memory values) {
keys = new string[](keyHashes.length);
values = new string[](keyHashes.length);
if (_useUns(tokenId)) {
diff --git a/contracts/RecordStorage.sol b/contracts/RecordStorage.sol
index 95fb95eb..ec27b7b0 100644
--- a/contracts/RecordStorage.sol
+++ b/contracts/RecordStorage.sol
@@ -28,12 +28,10 @@ abstract contract RecordStorage is KeyStorage, IRecordStorage {
(key, value) = _getByHash(keyHash, tokenId);
}
- function getManyByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- override
- returns (string[] memory keys, string[] memory values)
- {
+ function getManyByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view override returns (string[] memory keys, string[] memory values) {
keys = new string[](keyHashes.length);
values = new string[](keyHashes.length);
for (uint256 i = 0; i < keyHashes.length; i++) {
@@ -45,50 +43,30 @@ abstract contract RecordStorage is KeyStorage, IRecordStorage {
return _tokenPresets[tokenId] == 0 ? tokenId : _tokenPresets[tokenId];
}
- function _set(
- string calldata key,
- string calldata value,
- uint256 tokenId
- ) internal {
+ function _set(string calldata key, string calldata value, uint256 tokenId) internal {
uint256 keyHash = uint256(keccak256(abi.encodePacked(key)));
_addKey(keyHash, key);
_set(keyHash, key, value, tokenId);
}
- function _setMany(
- string[] calldata keys,
- string[] calldata values,
- uint256 tokenId
- ) internal {
+ function _setMany(string[] calldata keys, string[] calldata values, uint256 tokenId) internal {
for (uint256 i = 0; i < keys.length; i++) {
_set(keys[i], values[i], tokenId);
}
}
- function _setByHash(
- uint256 keyHash,
- string calldata value,
- uint256 tokenId
- ) internal {
+ function _setByHash(uint256 keyHash, string calldata value, uint256 tokenId) internal {
require(_existsKey(keyHash), 'RecordStorage: KEY_NOT_FOUND');
_set(keyHash, getKey(keyHash), value, tokenId);
}
- function _setManyByHash(
- uint256[] calldata keyHashes,
- string[] calldata values,
- uint256 tokenId
- ) internal {
+ function _setManyByHash(uint256[] calldata keyHashes, string[] calldata values, uint256 tokenId) internal {
for (uint256 i = 0; i < keyHashes.length; i++) {
_setByHash(keyHashes[i], values[i], tokenId);
}
}
- function _reconfigure(
- string[] calldata keys,
- string[] calldata values,
- uint256 tokenId
- ) internal {
+ function _reconfigure(string[] calldata keys, string[] calldata values, uint256 tokenId) internal {
_reset(tokenId);
_setMany(keys, values, tokenId);
}
@@ -115,12 +93,7 @@ abstract contract RecordStorage is KeyStorage, IRecordStorage {
return _records[_presetOf(tokenId)][keyHash];
}
- function _set(
- uint256 keyHash,
- string memory key,
- string memory value,
- uint256 tokenId
- ) private {
+ function _set(uint256 keyHash, string memory key, string memory value, uint256 tokenId) private {
if (bytes(_records[_presetOf(tokenId)][keyHash]).length == 0) {
emit NewKey(tokenId, key, key);
}
diff --git a/contracts/UNSRegistry.sol b/contracts/UNSRegistry.sol
index e05daf71..4d7ad2a1 100644
--- a/contracts/UNSRegistry.sol
+++ b/contracts/UNSRegistry.sol
@@ -208,12 +208,7 @@ contract UNSRegistry is
// This is the keccak-256 hash of "uns.cns_registry" subtracted by 1
bytes32 internal constant _CNS_REGISTRY_SLOT = 0x8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec92378;
- function onERC721Received(
- address,
- address from,
- uint256 tokenId,
- bytes calldata data
- ) external override returns (bytes4) {
+ function onERC721Received(address, address from, uint256 tokenId, bytes calldata data) external override returns (bytes4) {
if (_msgSender() == StorageSlotUpgradeable.getAddressSlot(_CNS_REGISTRY_SLOT).value) {
ICNSRegistry(_msgSender()).burn(tokenId);
if (data.length > 0 && abi.decode(data, (bool))) {
@@ -323,11 +318,7 @@ contract UNSRegistry is
/**
* @dev See {RootRegistry-mint(address,uint256,bytes)}.
*/
- function mint(
- address user,
- uint256 tokenId,
- bytes calldata
- ) external override onlyPredicate {
+ function mint(address user, uint256 tokenId, bytes calldata) external override onlyPredicate {
_mint(user, tokenId);
}
@@ -415,12 +406,7 @@ contract UNSRegistry is
return uint256(keccak256(abi.encodePacked(tokenId, keccak256(abi.encodePacked(label)))));
}
- function _mint(
- address to,
- uint256 tokenId,
- string memory uri,
- bool withReverse
- ) internal {
+ function _mint(address to, uint256 tokenId, string memory uri, bool withReverse) internal {
_mint(to, tokenId);
emit NewURI(tokenId, uri);
@@ -442,11 +428,7 @@ contract UNSRegistry is
return super._msgData();
}
- function _beforeTokenTransfer(
- address from,
- address to,
- uint256 tokenId
- ) internal override {
+ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override {
super._beforeTokenTransfer(from, to, tokenId);
if (to == address(0)) {
@@ -463,11 +445,7 @@ contract UNSRegistry is
}
}
- function _setReverse(
- address addr,
- uint256 tokenId,
- string memory uri
- ) internal {
+ function _setReverse(address addr, uint256 tokenId, string memory uri) internal {
if (bytes(_tokenNames[tokenId]).length == 0) {
_tokenNames[tokenId] = uri;
}
@@ -475,11 +453,7 @@ contract UNSRegistry is
emit SetReverse(addr, tokenId);
}
- function _safeSetReverse(
- address addr,
- uint256 tokenId,
- string memory uri
- ) internal {
+ function _safeSetReverse(address addr, uint256 tokenId, string memory uri) internal {
if (address(0xdead) != addr && _reverses[addr] == 0) {
_setReverse(addr, tokenId, uri);
}
diff --git a/contracts/cns/IMintingController.sol b/contracts/cns/IMintingController.sol
index 0e92863f..8adaa884 100644
--- a/contracts/cns/IMintingController.sol
+++ b/contracts/cns/IMintingController.sol
@@ -8,28 +8,11 @@ interface IMintingController {
function safeMintSLD(address to, string calldata label) external;
- function safeMintSLD(
- address to,
- string calldata label,
- bytes calldata data
- ) external;
+ function safeMintSLD(address to, string calldata label, bytes calldata data) external;
- function mintSLDWithResolver(
- address to,
- string memory label,
- address resolver
- ) external;
+ function mintSLDWithResolver(address to, string memory label, address resolver) external;
- function safeMintSLDWithResolver(
- address to,
- string calldata label,
- address resolver
- ) external;
+ function safeMintSLDWithResolver(address to, string calldata label, address resolver) external;
- function safeMintSLDWithResolver(
- address to,
- string calldata label,
- address resolver,
- bytes calldata data
- ) external;
+ function safeMintSLDWithResolver(address to, string calldata label, address resolver, bytes calldata data) external;
}
diff --git a/contracts/cns/IResolver.sol b/contracts/cns/IResolver.sol
index 019dd402..9ddcdaa6 100644
--- a/contracts/cns/IResolver.sol
+++ b/contracts/cns/IResolver.sol
@@ -4,11 +4,7 @@
pragma solidity ^0.8.0;
interface IResolver {
- function preconfigure(
- string[] memory keys,
- string[] memory values,
- uint256 tokenId
- ) external;
+ function preconfigure(string[] memory keys, string[] memory values, uint256 tokenId) external;
function get(string calldata key, uint256 tokenId) external view returns (string memory);
@@ -16,14 +12,10 @@ interface IResolver {
function getByHash(uint256 keyHash, uint256 tokenId) external view returns (string memory key, string memory value);
- function getManyByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- returns (string[] memory keys, string[] memory values);
-
- function set(
- string calldata key,
- string calldata value,
+ function getManyByHash(
+ uint256[] calldata keyHashes,
uint256 tokenId
- ) external;
+ ) external view returns (string[] memory keys, string[] memory values);
+
+ function set(string calldata key, string calldata value, uint256 tokenId) external;
}
diff --git a/contracts/custody/ENSCustody.sol b/contracts/custody/ENSCustody.sol
index f1ac2b3d..fc0ea2ec 100644
--- a/contracts/custody/ENSCustody.sol
+++ b/contracts/custody/ENSCustody.sol
@@ -61,11 +61,7 @@ contract ENSCustody is
_disableInitializers();
}
- function initialize(
- address controller,
- address wrapper,
- address registrar
- ) public initializer {
+ function initialize(address controller, address wrapper, address registrar) public initializer {
StorageSlotUpgradeable.getAddressSlot(_ENS_CONTROLLER_SLOT).value = controller;
StorageSlotUpgradeable.getAddressSlot(_ENS_WRAPPER_SLOT).value = wrapper;
StorageSlotUpgradeable.getAddressSlot(_ENS_BASE_REGISTRAR_SLOT).value = registrar;
@@ -81,25 +77,16 @@ contract ENSCustody is
StorageSlotUpgradeable.getAddressSlot(_ENS_BASE_REGISTRAR_SLOT).value = baseRegistrar;
}
- function supportsInterface(bytes4 interfaceId)
- public
- view
- virtual
- override(AccessControlUpgradeable, IERC165Upgradeable)
- returns (bool)
- {
+ function supportsInterface(
+ bytes4 interfaceId
+ ) public view virtual override(AccessControlUpgradeable, IERC165Upgradeable) returns (bool) {
return
interfaceId == type(IERC721ReceiverUpgradeable).interfaceId ||
interfaceId == type(IERC1155ReceiverUpgradeable).interfaceId ||
super.supportsInterface(interfaceId);
}
- function onERC721Received(
- address,
- address,
- uint256 tokenId,
- bytes calldata data
- ) external returns (bytes4) {
+ function onERC721Received(address, address, uint256 tokenId, bytes calldata data) external returns (bytes4) {
address registrar = StorageSlotUpgradeable.getAddressSlot(_ENS_BASE_REGISTRAR_SLOT).value;
if (_msgSender() == registrar) {
diff --git a/contracts/custody/ZilliqaRecover.sol b/contracts/custody/ZilliqaRecover.sol
index 90435703..9878c71b 100644
--- a/contracts/custody/ZilliqaRecover.sol
+++ b/contracts/custody/ZilliqaRecover.sol
@@ -178,12 +178,7 @@ contract ZilliqaRecover is ContextUpgradeable, ERC2771RegistryContext, Forwarder
return address(uint160(uint256(hash)));
}
- function onERC721Received(
- address,
- address,
- uint256 tokenId,
- bytes calldata
- ) external view returns (bytes4) {
+ function onERC721Received(address, address, uint256 tokenId, bytes calldata) external view returns (bytes4) {
if (_msgSender() != address(registry) || znsOwnerOf(tokenId) == address(0x00)) {
revert UnknownTokenReceived(tokenId, _msgSender());
}
@@ -203,11 +198,7 @@ contract ZilliqaRecover is ContextUpgradeable, ERC2771RegistryContext, Forwarder
return super._msgData();
}
- function _claim(
- uint256 tokenId,
- address _zilAddress,
- address newOwnerAddress
- ) private {
+ function _claim(uint256 tokenId, address _zilAddress, address newOwnerAddress) private {
if (znsOwnerOf(tokenId) != _zilAddress) {
revert TokenOwnedByOtherZilAddress(tokenId, znsOwnerOf(tokenId), _zilAddress);
}
diff --git a/contracts/history/ProxyReaderV04.sol b/contracts/history/ProxyReaderV04.sol
index 5171d918..dd3476ac 100644
--- a/contracts/history/ProxyReaderV04.sol
+++ b/contracts/history/ProxyReaderV04.sol
@@ -130,12 +130,10 @@ contract ProxyReaderV04 is ERC165Upgradeable, MulticallUpgradeable, IRegistryRea
}
}
- function getManyByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- override
- returns (string[] memory keys, string[] memory values)
- {
+ function getManyByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view override returns (string[] memory keys, string[] memory values) {
keys = new string[](keyHashes.length);
values = new string[](keyHashes.length);
if (_useUns(tokenId)) {
@@ -150,29 +148,17 @@ contract ProxyReaderV04 is ERC165Upgradeable, MulticallUpgradeable, IRegistryRea
}
}
- function getData(string[] calldata keys, uint256 tokenId)
- external
- view
- override
- returns (
- address resolver,
- address owner,
- string[] memory values
- )
- {
+ function getData(
+ string[] calldata keys,
+ uint256 tokenId
+ ) external view override returns (address resolver, address owner, string[] memory values) {
return _getData(keys, tokenId);
}
- function getDataForMany(string[] calldata keys, uint256[] calldata tokenIds)
- external
- view
- override
- returns (
- address[] memory resolvers,
- address[] memory owners,
- string[][] memory values
- )
- {
+ function getDataForMany(
+ string[] calldata keys,
+ uint256[] calldata tokenIds
+ ) external view override returns (address[] memory resolvers, address[] memory owners, string[][] memory values) {
resolvers = new address[](tokenIds.length);
owners = new address[](tokenIds.length);
values = new string[][](tokenIds.length);
@@ -182,30 +168,21 @@ contract ProxyReaderV04 is ERC165Upgradeable, MulticallUpgradeable, IRegistryRea
}
}
- function getDataByHash(uint256[] calldata keyHashes, uint256 tokenId)
- external
- view
- override
- returns (
- address resolver,
- address owner,
- string[] memory keys,
- string[] memory values
- )
- {
+ function getDataByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) external view override returns (address resolver, address owner, string[] memory keys, string[] memory values) {
return _getDataByHash(keyHashes, tokenId);
}
- function getDataByHashForMany(uint256[] calldata keyHashes, uint256[] calldata tokenIds)
+ function getDataByHashForMany(
+ uint256[] calldata keyHashes,
+ uint256[] calldata tokenIds
+ )
external
view
override
- returns (
- address[] memory resolvers,
- address[] memory owners,
- string[][] memory keys,
- string[][] memory values
- )
+ returns (address[] memory resolvers, address[] memory owners, string[][] memory keys, string[][] memory values)
{
resolvers = new address[](tokenIds.length);
owners = new address[](tokenIds.length);
@@ -254,15 +231,10 @@ contract ProxyReaderV04 is ERC165Upgradeable, MulticallUpgradeable, IRegistryRea
}
}
- function _getData(string[] calldata keys, uint256 tokenId)
- private
- view
- returns (
- address resolver,
- address owner,
- string[] memory values
- )
- {
+ function _getData(
+ string[] calldata keys,
+ uint256 tokenId
+ ) private view returns (address resolver, address owner, string[] memory values) {
values = new string[](keys.length);
if (_useUns(tokenId)) {
resolver = _unsRegistry.resolverOf(tokenId);
@@ -279,16 +251,10 @@ contract ProxyReaderV04 is ERC165Upgradeable, MulticallUpgradeable, IRegistryRea
}
}
- function _getDataByHash(uint256[] calldata keyHashes, uint256 tokenId)
- private
- view
- returns (
- address resolver,
- address owner,
- string[] memory keys,
- string[] memory values
- )
- {
+ function _getDataByHash(
+ uint256[] calldata keyHashes,
+ uint256 tokenId
+ ) private view returns (address resolver, address owner, string[] memory keys, string[] memory values) {
keys = new string[](keyHashes.length);
values = new string[](keyHashes.length);
if (_useUns(tokenId)) {
diff --git a/contracts/history/UNSRegistryV07.sol b/contracts/history/UNSRegistryV07.sol
index d2750007..820afe01 100644
--- a/contracts/history/UNSRegistryV07.sol
+++ b/contracts/history/UNSRegistryV07.sol
@@ -176,12 +176,7 @@ contract UNSRegistryV07 is
// This is the keccak-256 hash of "uns.cns_registry" subtracted by 1
bytes32 internal constant _CNS_REGISTRY_SLOT = 0x8ffb960699dc2ba88f34d0e41c029c3c36c95149679fe1d0153a9582bec92378;
- function onERC721Received(
- address,
- address from,
- uint256 tokenId,
- bytes calldata data
- ) external override returns (bytes4) {
+ function onERC721Received(address, address from, uint256 tokenId, bytes calldata data) external override returns (bytes4) {
if (_msgSender() == StorageSlotUpgradeable.getAddressSlot(_CNS_REGISTRY_SLOT).value) {
ICNSRegistry(_msgSender()).burn(tokenId);
if (data.length > 0 && abi.decode(data, (bool))) {
@@ -291,11 +286,7 @@ contract UNSRegistryV07 is
/**
* @dev See {RootRegistry-mint(address,uint256,bytes)}.
*/
- function mint(
- address user,
- uint256 tokenId,
- bytes calldata
- ) external override onlyPredicate {
+ function mint(address user, uint256 tokenId, bytes calldata) external override onlyPredicate {
_mint(user, tokenId);
}
@@ -374,12 +365,7 @@ contract UNSRegistryV07 is
return uint256(keccak256(abi.encodePacked(tokenId, keccak256(abi.encodePacked(label)))));
}
- function _mint(
- address to,
- uint256 tokenId,
- string memory uri,
- bool withReverse
- ) internal {
+ function _mint(address to, uint256 tokenId, string memory uri, bool withReverse) internal {
_mint(to, tokenId);
emit NewURI(tokenId, uri);
@@ -401,11 +387,7 @@ contract UNSRegistryV07 is
return super._msgData();
}
- function _beforeTokenTransfer(
- address from,
- address to,
- uint256 tokenId
- ) internal override {
+ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override {
super._beforeTokenTransfer(from, to, tokenId);
// This prevents the upgraded token from being burned or withdrawn from L2
@@ -416,11 +398,7 @@ contract UNSRegistryV07 is
}
}
- function _setReverse(
- address addr,
- uint256 tokenId,
- string memory uri
- ) internal {
+ function _setReverse(address addr, uint256 tokenId, string memory uri) internal {
if (bytes(_tokenNames[tokenId]).length == 0) {
_tokenNames[tokenId] = uri;
}
@@ -428,11 +406,7 @@ contract UNSRegistryV07 is
emit SetReverse(addr, tokenId);
}
- function _safeSetReverse(
- address addr,
- uint256 tokenId,
- string memory uri
- ) internal {
+ function _safeSetReverse(address addr, uint256 tokenId, string memory uri) internal {
if (address(0xdead) != addr && _reverses[addr] == 0) {
_setReverse(addr, tokenId, uri);
}
diff --git a/contracts/metatx/BaseForwarder.sol b/contracts/metatx/BaseForwarder.sol
index 5c49e210..3f6c9eef 100644
--- a/contracts/metatx/BaseForwarder.sol
+++ b/contracts/metatx/BaseForwarder.sol
@@ -12,11 +12,7 @@ abstract contract BaseForwarder is IForwarder {
using ECDSAUpgradeable for bytes32;
using SignatureCheckerUpgradeable for address;
- function _verify(
- ForwardRequest memory req,
- address target,
- bytes memory signature
- ) internal view virtual returns (bool) {
+ function _verify(ForwardRequest memory req, address target, bytes memory signature) internal view virtual returns (bool) {
uint256 nonce = this.nonceOf(req.tokenId);
bytes32 hash = keccak256(abi.encodePacked(keccak256(req.data), target, req.nonce)).toEthSignedMessageHash();
@@ -41,9 +37,7 @@ abstract contract BaseForwarder is IForwarder {
return _verifyCallResult(success, returndata, 'BaseForwarder: CALL_FAILED');
}
- function _invalidateNonce(
- uint256 /* tokenId */
- ) internal virtual {}
+ function _invalidateNonce(uint256 /* tokenId */) internal virtual {}
function _buildData(
address from,
@@ -54,11 +48,7 @@ abstract contract BaseForwarder is IForwarder {
return abi.encodePacked(data, from, tokenId);
}
- function _verifyCallResult(
- bool success,
- bytes memory returndata,
- string memory errorMessage
- ) private pure returns (bytes memory) {
+ function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns (bytes memory) {
if (success) {
return returndata;
} else {
diff --git a/contracts/metatx/BaseRoutingForwarder.sol b/contracts/metatx/BaseRoutingForwarder.sol
index 111ff4df..ff4103fb 100644
--- a/contracts/metatx/BaseRoutingForwarder.sol
+++ b/contracts/metatx/BaseRoutingForwarder.sol
@@ -15,23 +15,15 @@ import './BaseForwarder.sol';
abstract contract BaseRoutingForwarder is BaseForwarder {
mapping(bytes4 => bytes4) private _routes;
- function _buildRouteData(
- bytes4 selector,
- bytes memory data,
- bytes memory signature
- ) internal view virtual returns (bytes memory);
+ function _buildRouteData(bytes4 selector, bytes memory data, bytes memory signature) internal view virtual returns (bytes memory);
- function _verify(
- ForwardRequest memory req,
- address target,
- bytes memory signature
- ) internal view override returns (bool) {
+ function _verify(ForwardRequest memory req, address target, bytes memory signature) internal view override returns (bool) {
return super._verify(req, target, signature) && _isKnownRoute(req.data);
}
function _buildData(
- address, /* from */
- uint256, /* tokenId */
+ address /* from */,
+ uint256 /* tokenId */,
bytes memory data,
bytes memory signature
) internal view override returns (bytes memory) {
diff --git a/contracts/mocks/BaseRoutingForwarderMock.sol b/contracts/mocks/BaseRoutingForwarderMock.sol
index 6712ae23..258ebed3 100644
--- a/contracts/mocks/BaseRoutingForwarderMock.sol
+++ b/contracts/mocks/BaseRoutingForwarderMock.sol
@@ -54,11 +54,7 @@ contract BaseRoutingForwarderMock is BaseRoutingForwarder {
revert('mockFor');
}
- function _buildRouteData(
- bytes4 selector,
- bytes memory data,
- bytes memory signature
- ) internal pure override returns (bytes memory) {
+ function _buildRouteData(bytes4 selector, bytes memory data, bytes memory signature) internal pure override returns (bytes memory) {
if (selector == bytes4(keccak256('transferFromFor(address,address,uint256,bytes)'))) {
(address p1, address p2, uint256 p3) = abi.decode(data, (address, address, uint256));
return abi.encodeWithSelector(selector, p1, p2, p3, signature);
diff --git a/contracts/mocks/ERC1271Mock.sol b/contracts/mocks/ERC1271Mock.sol
index 2dac4a74..3cf14631 100644
--- a/contracts/mocks/ERC1271Mock.sol
+++ b/contracts/mocks/ERC1271Mock.sol
@@ -4,6 +4,4 @@
pragma solidity ^0.8.0;
// solhint-disable-next-line no-empty-blocks
-contract ERC1271Mock {
-
-}
+contract ERC1271Mock {}
diff --git a/contracts/mocks/ERC20UnsafeMock.sol b/contracts/mocks/ERC20UnsafeMock.sol
index 5354094d..71922946 100644
--- a/contracts/mocks/ERC20UnsafeMock.sol
+++ b/contracts/mocks/ERC20UnsafeMock.sol
@@ -11,11 +11,7 @@ contract ERC20UnsafeMock is ERC20Mock {
return false;
}
- function transferFrom(
- address from,
- address to,
- uint256 value
- ) public virtual override returns (bool) {
+ function transferFrom(address from, address to, uint256 value) public virtual override returns (bool) {
super.transferFrom(from, to, value);
return false;
}
diff --git a/contracts/mocks/ERC721ReceiverMock.sol b/contracts/mocks/ERC721ReceiverMock.sol
index 0f19b47f..1d1866d8 100644
--- a/contracts/mocks/ERC721ReceiverMock.sol
+++ b/contracts/mocks/ERC721ReceiverMock.sol
@@ -4,12 +4,7 @@
pragma solidity ^0.8.0;
contract ERC721ReceiverMock {
- function onERC721Received(
- address,
- address,
- uint256,
- bytes memory
- ) public pure returns (bytes4) {
+ function onERC721Received(address, address, uint256, bytes memory) public pure returns (bytes4) {
return 0x150b7a02;
}
}
diff --git a/contracts/utils/Strings.sol b/contracts/utils/Strings.sol
index ad0772f0..1f1cc27e 100644
--- a/contracts/utils/Strings.sol
+++ b/contracts/utils/Strings.sol
@@ -42,11 +42,7 @@ library Strings {
* @param len The sub slice length.
* @return The slice of the original slice.
*/
- function slice(
- Slice memory self,
- uint256 index,
- uint256 len
- ) internal pure returns (Slice memory) {
+ function slice(Slice memory self, uint256 index, uint256 len) internal pure returns (Slice memory) {
return Slice(len, self._ptr + index);
}
}
diff --git a/hardhat.config.ts b/hardhat.config.ts
index fb5f7bd9..abb1ede9 100644
--- a/hardhat.config.ts
+++ b/hardhat.config.ts
@@ -34,14 +34,17 @@ declare module 'hardhat/types/config' {
}
import '@typechain/hardhat';
-import '@nomiclabs/hardhat-ethers';
-import '@nomiclabs/hardhat-waffle';
+import '@nomicfoundation/hardhat-ethers';
+import '@nomicfoundation/hardhat-verify';
+import '@nomicfoundation/hardhat-chai-matchers';
+
+// "@nomiclabs/hardhat-waffle": "^2.0.1",
+// import '@nomiclabs/hardhat-waffle';
+
import '@nomiclabs/hardhat-solhint';
-import '@nomiclabs/hardhat-etherscan';
import 'hardhat-tracer';
import '@openzeppelin/hardhat-upgrades';
-import '@openzeppelin/hardhat-defender';
// There are no type declarations for
import 'solidity-coverage';
@@ -161,7 +164,7 @@ const config: HardhatUserConfig = {
},
typechain: {
outDir: 'types',
- target: 'ethers-v5',
+ target: 'ethers-v6',
},
gasReporter: {
enabled: argv.enableGasReport,
diff --git a/package.json b/package.json
index 3788384b..e36a3b6e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "uns",
- "version": "0.9.9",
+ "version": "0.9.10",
"description": "UNS contracts and tools",
"repository": "https://github.com/unstoppabledomains/uns.git",
"main": "./dist/index.js",
@@ -16,7 +16,7 @@
"test": "yarn test:sol && yarn test:sandbox",
"test:sol": "hardhat test --typecheck",
"test:sandbox": "env HARDHAT_NETWORK=sandbox mocha --require ts-node/register --exit ./sandbox/**/*.test.ts",
- "rebuild:sandbox": "env HARDHAT_NETWORK=sandbox DEBUG='UNS:*' ts-node ./sandbox/rebuild.ts",
+ "rebuild:sandbox": "env HARDHAT_NETWORK=sandbox DEBUG='UNS:*' ts-node --files ./sandbox/rebuild.ts",
"lint": "yarn lint:ts && yarn lint:sol",
"lint:fix": "yarn lint:ts:fix && yarn lint:sol:fix",
"lint:ts": "eslint --ignore-path .gitignore .",
@@ -39,16 +39,15 @@
"devDependencies": {
"@ensdomains/ens-contracts": "^0.0.21",
"@ethereumjs/tx": "^4.0.1",
- "@nomiclabs/hardhat-ethers": "^2.2.1",
- "@nomiclabs/hardhat-etherscan": "^3.1.0",
- "@nomiclabs/hardhat-solhint": "^2.0.1",
- "@nomiclabs/hardhat-waffle": "^2.0.1",
+ "@nomicfoundation/hardhat-chai-matchers": "^2.0.6",
+ "@nomicfoundation/hardhat-ethers": "^3.0.0",
+ "@nomicfoundation/hardhat-verify": "^1.1.0",
+ "@nomiclabs/hardhat-solhint": "^3.0.1",
"@openzeppelin/contracts-upgradeable": "^4.7.3",
- "@openzeppelin/hardhat-defender": "^1.8.1",
- "@openzeppelin/hardhat-upgrades": "^1.20.0",
- "@openzeppelin/upgrades-core": "^1.19.1",
- "@typechain/ethers-v5": "^10.1.0",
- "@typechain/hardhat": "^6.1.2",
+ "@openzeppelin/hardhat-upgrades": "^2.0.0",
+ "@openzeppelin/upgrades-core": "^1.32.5",
+ "@typechain/ethers-v6": "^0.5.0",
+ "@typechain/hardhat": "^9.1.0",
"@types/bip39": "^3.0.0",
"@types/chai": "^4.3.3",
"@types/debug": "^4.1.7",
@@ -71,26 +70,28 @@
"eslint-plugin-mocha-no-only": "^1.1.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.1.1",
- "ethereum-waffle": "3.4.4",
+ "ethereumjs-block": "^1.7.1",
+ "ethereumjs-common": "^1.5.2",
+ "ethereumjs-tx": "^1.3.7",
"ethereumjs-util": "^7.1.0",
- "ethers": "^5.7.2",
- "hardhat": "^2.11.2",
+ "ethers": "^6.1.0",
+ "hardhat": "~2.20.0",
"hardhat-abi-exporter": "^2.2.1",
- "hardhat-contract-sizer": "^2.6.1",
- "hardhat-gas-reporter": "^1.0.9",
- "hardhat-tracer": "^2.3.2",
+ "hardhat-contract-sizer": "^2.10.0",
+ "hardhat-gas-reporter": "^2.1.1",
+ "hardhat-tracer": "^2.8.1",
"husky": "^8.0.1",
"lodash.merge": "^4.6.2",
"merkle-patricia-tree": "^4.0.0",
"mocha": "^10.0.0",
"prettier": "^2.3.0",
- "prettier-plugin-solidity": "^1.0.0-beta.24",
+ "prettier-plugin-solidity": "^1.3.1",
"solhint": "^3.3.7",
"solidity-coverage": "^0.8.4",
"tar": "^6.1.9",
"ts-mocha": "^10.0.0",
"ts-node": "^10.9.1",
- "typechain": "^8.1.0",
+ "typechain": "^8.3.2",
"typescript": "^4.7.4",
"yargs": "^17.6.0"
},
@@ -98,7 +99,7 @@
"@ensdomains/address-encoder": "^0.2.22",
"bip39": "^3.0.0",
"bip44-constants": "^243.0.0",
- "ganache": "^7.4.0",
+ "ganache": "^7.9.2",
"hdkey": "^2.0.1",
"web3": "^1.7.4"
},
diff --git a/sandbox/db.tgz b/sandbox/db.tgz
index 616cd6df..29043b7d 100644
Binary files a/sandbox/db.tgz and b/sandbox/db.tgz differ
diff --git a/sandbox/ganache-service.ts b/sandbox/ganache-service.ts
index f4eb6171..c92fa57f 100644
--- a/sandbox/ganache-service.ts
+++ b/sandbox/ganache-service.ts
@@ -2,7 +2,7 @@ import { server, Server, EthereumProvider, ServerOptions } from 'ganache';
const DEFAULT_PORT = 7545;
-export type ServerConfigOptions = ServerOptions<'ethereum'> & {
+export type ServerConfigOptions = ServerOptions & {
url: string;
port?: number;
hostname?: string;
@@ -16,7 +16,7 @@ export class GanacheService {
constructor (options: ServerConfigOptions) {
this.options = this.validateAndTransformOptions(options);
- this.server = server<'ethereum'>(this.options as ServerOptions<'ethereum'>);
+ this.server = server(this.options as ServerOptions);
this.provider = this.server.provider;
}
diff --git a/sandbox/index.test.ts b/sandbox/index.test.ts
index dde498c2..fce6cca0 100644
--- a/sandbox/index.test.ts
+++ b/sandbox/index.test.ts
@@ -1,11 +1,11 @@
// process.env.HARDHAT_NETWORK = 'sandbox';
import { assert, expect } from 'chai';
import { ethers, network } from 'hardhat';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { utils } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { AbiCoder } from 'ethers';
import { NameService, getNetworkConfig } from '../src/config';
import { MintingManager, UNSRegistry } from '../types/contracts';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
import { BUFFERED_REGISTRATION_COST, REGISTRATION_TIME, TLD, ZERO_ADDRESS } from '../test/helpers/constants';
import {
CNSRegistry,
@@ -37,7 +37,7 @@ describe('Sandbox', async () => {
let sandbox: Sandbox;
- const abiCoder = new utils.AbiCoder();
+ const abiCoder = new AbiCoder();
before(async () => {
sandbox = await Sandbox.start({ verbose: true });
@@ -50,18 +50,19 @@ describe('Sandbox', async () => {
const { contracts: unsContracts } = getNetworkConfig(chainId, NameService.UNS);
const { contracts: ensContracts } = getNetworkConfig(chainId, NameService.ENS);
- unsRegistry = new UNSRegistry__factory(owner).attach(unsContracts.UNSRegistry.address);
- cnsRegistry = new CNSRegistry__factory(owner).attach(unsContracts.CNSRegistry.address);
- mintingManager = new MintingManager__factory(owner).attach(unsContracts.MintingManager.address);
- mintingManager = new MintingManager__factory(owner).attach(unsContracts.MintingManager.address);
- zilliqaRecover = new ZilliqaRecover__factory(owner).attach(unsContracts.ZilliqaRecover.address);
+ unsRegistry = UNSRegistry__factory.connect(unsContracts.UNSRegistry.address, owner);
+ cnsRegistry = CNSRegistry__factory.connect(unsContracts.CNSRegistry.address, owner);
+ mintingManager = MintingManager__factory.connect(unsContracts.MintingManager.address, owner);
+ mintingManager = MintingManager__factory.connect(unsContracts.MintingManager.address, owner);
+ zilliqaRecover = ZilliqaRecover__factory.connect(unsContracts.ZilliqaRecover.address, owner);
predicateAddress = unsContracts.MintableERC721Predicate.address;
- ethRegistrarController = new ETHRegistrarController__factory(owner).attach(
+ ethRegistrarController = ETHRegistrarController__factory.connect(
ensContracts.ETHRegistrarController.address,
+ owner,
);
- custody = new ENSCustody__factory(owner).attach(ensContracts.ENSCustody.address);
+ custody = ENSCustody__factory.connect(ensContracts.ENSCustody.address, owner);
});
beforeEach(async () => {
@@ -112,7 +113,7 @@ describe('Sandbox', async () => {
await cnsRegistry['safeTransferFrom(address,address,uint256,bytes)'](
owner.address,
- unsRegistry.address,
+ await unsRegistry.getAddress(),
tokenId,
abiCoder.encode(['bool'], [false]),
);
@@ -120,7 +121,7 @@ describe('Sandbox', async () => {
expect(await unsRegistry.ownerOf(tokenId)).to.be.eq(owner.address);
// Somehow error cannot be decoded automatically here, used try...catch
try {
- await cnsRegistry.callStatic.ownerOf(tokenId);
+ await cnsRegistry.ownerOf.staticCall(tokenId);
assert.fail('Error is ecpected');
} catch (error) {}
});
@@ -134,7 +135,7 @@ describe('Sandbox', async () => {
await cnsRegistry['safeTransferFrom(address,address,uint256,bytes)'](
owner.address,
- unsRegistry.address,
+ await unsRegistry.getAddress(),
tokenId,
abiCoder.encode(['bool'], [true]),
);
@@ -142,7 +143,7 @@ describe('Sandbox', async () => {
expect(await unsRegistry.ownerOf(tokenId)).to.be.eq(predicateAddress);
// Somehow error cannot be decoded automatically here, used try...catch
try {
- await cnsRegistry.callStatic.ownerOf(tokenId);
+ await cnsRegistry.ownerOf.staticCall(tokenId);
assert.fail('Error is ecpected');
} catch (error) {}
});
@@ -152,7 +153,7 @@ describe('Sandbox', async () => {
await tx.wait();
const tokenId = await cnsRegistry.childIdOf(TLD.ZIL, domainPrefix);
- expect(await unsRegistry.ownerOf(tokenId)).to.be.eq(zilliqaRecover.address);
+ expect(await unsRegistry.ownerOf(tokenId)).to.be.eq(await zilliqaRecover.getAddress());
expect(await zilliqaRecover.znsOwnerOf(tokenId)).to.be.eq(owner.address);
});
});
@@ -160,7 +161,7 @@ describe('Sandbox', async () => {
describe('ENS', () => {
const secret = '0x0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF';
- const registerName = async (name, txOptions = { value: BUFFERED_REGISTRATION_COST }) => {
+ const registerName = async (name: string, txOptions = { value: BUFFERED_REGISTRATION_COST }) => {
const commitment = await ethRegistrarController.makeCommitment(
name,
registrantAddress,
@@ -173,13 +174,14 @@ describe('Sandbox', async () => {
);
let tx = await ethRegistrarController.commit(commitment);
-
- expect(await ethRegistrarController.commitments(commitment)).to.equal(
- (await ethers.provider.getBlock(unwrap(tx, 'blockNumber'))).timestamp,
+ const block = await ethers.provider.getBlock(
+ unwrap(tx, 'blockNumber'),
);
+ expect(await ethRegistrarController.commitments(commitment)).to.equal(block?.timestamp);
+
await increaseTimeBy(
- (await ethRegistrarController.minCommitmentAge()).toNumber(),
+ await ethRegistrarController.minCommitmentAge(),
);
tx = await ethRegistrarController.register(
@@ -198,8 +200,8 @@ describe('Sandbox', async () => {
};
const registerAndParkName = async (
- name,
- minter,
+ name: string,
+ minter: SignerWithAddress,
resolver = ZERO_ADDRESS,
selfCustody = false,
callData: string[] = [],
@@ -218,10 +220,13 @@ describe('Sandbox', async () => {
selfCustody,
);
const commitTx = await custody.connect(minter).commit(commitment);
- const { timestamp } = await ethers.provider.getBlock(unwrap(commitTx, 'blockNumber'));
+ const block = await ethers.provider.getBlock(unwrap(commitTx, 'blockNumber'));
+ const timestamp = block?.timestamp;
expect(await ethRegistrarController.commitments(commitment)).to.equal(timestamp);
- await increaseTimeBy((await ethRegistrarController.minCommitmentAge()).toNumber());
+ await increaseTimeBy(
+ await ethRegistrarController.minCommitmentAge(),
+ );
// register
const registerTx = await custody
diff --git a/sandbox/index.ts b/sandbox/index.ts
index 9268057e..da54ff50 100644
--- a/sandbox/index.ts
+++ b/sandbox/index.ts
@@ -7,8 +7,8 @@ import secp256k1 from 'secp256k1';
import createKeccakHash from 'keccak';
import debug from 'debug';
import { EthereumProvider } from 'ganache';
-import { HttpNetworkUserConfig } from 'hardhat/types';
-import { unwrap } from '../src/helpers';
+import type { HttpNetworkUserConfig } from 'hardhat/types';
+import { unwrap } from '../src/utils';
import { GanacheService } from './ganache-service';
const log = debug('UNS:sandbox');
diff --git a/sandbox/rebuild.ts b/sandbox/rebuild.ts
index 0375e5d5..8fd99f39 100644
--- a/sandbox/rebuild.ts
+++ b/sandbox/rebuild.ts
@@ -2,7 +2,7 @@ import fs from 'fs';
import tar from 'tar';
import { NameService, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
import { Sandbox } from '.';
// NOTE: Node module execution is used for rebuilding sandbox package
diff --git a/scripts/blockexplorer_links.ts b/scripts/blockexplorer_links.ts
index 44671f87..79cf14df 100644
--- a/scripts/blockexplorer_links.ts
+++ b/scripts/blockexplorer_links.ts
@@ -1,9 +1,8 @@
import * as fs from 'fs';
-import { unwrap } from '../src/helpers';
type ContractSetup = {
address: string;
- forwarder?: string;
+ forwarder: string;
implementation?: string;
legacyAddresses: string[];
deprecated: boolean;
@@ -41,7 +40,7 @@ const link = (network: string, address: string): string => {
const contractLinks = (
network: string,
- address?: string | string[],
+ address: string | string[],
): string => {
const addresses =
address instanceof Array
@@ -50,7 +49,7 @@ const contractLinks = (
? [address]
: [];
return addresses.length
- ? addresses.map((a) => link(network, unwrap(a))).join('
')
+ ? addresses.map((a) => link(network, a)).join('
')
: '—';
};
diff --git a/scripts/build_blocklist.ts b/scripts/build_blocklist.ts
index fc95c1f5..cc28a9f1 100644
--- a/scripts/build_blocklist.ts
+++ b/scripts/build_blocklist.ts
@@ -1,10 +1,9 @@
import path from 'path';
import fs from 'fs';
-import { network } from 'hardhat';
-import { Contract } from 'ethers';
-import { Event } from '@ethersproject/contracts';
+import { network, ethers } from 'hardhat';
+import { BaseContract, EventLog, toBeHex } from 'ethers';
import { getNetworkConfig } from '../src/config';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
import { UNSRegistry__factory } from '../types/factories/contracts';
import { CNSRegistry__factory } from '../types/factories/dot-crypto/contracts';
@@ -31,14 +30,8 @@ async function main () {
const cnsRegistry = new CNSRegistry__factory().attach(CNSRegistry.address);
const eventsCNS = await fetchEvents(cnsRegistry, parseInt(CNSRegistry.deploymentBlock, 16));
- const tokens = eventsUNS.concat(eventsCNS).map((t: Event) => {
- return (
- '0x' +
- t.args.tokenId
- .toHexString()
- .replace(/^(0x)?/, '')
- .padStart(64, '0')
- );
+ const tokens = eventsUNS.concat(eventsCNS).map((t: EventLog) => {
+ return toBeHex(t.args.tokenId, 32);
});
await save(chainId, { tokens: [...new Set(tokens)] });
@@ -46,24 +39,25 @@ async function main () {
}
async function fetchEvents (
- contract: Contract,
+ contract: BaseContract,
fromBlock: number,
toBlock?: number,
limit = 10000,
-): Promise> {
+): Promise> {
if (!toBlock) {
- toBlock = await contract.provider.getBlockNumber();
+ toBlock = await ethers.provider.getBlockNumber();
}
const maxBlock = fromBlock + limit;
const _toBlock = Math.min(maxBlock, toBlock);
- console.log(`Fetching events blocks [${contract.address}: ${fromBlock}-${_toBlock}]`);
+ console.log(`Fetching events blocks [${await contract.getAddress()}: ${fromBlock}-${_toBlock}]`);
const transferFilter = contract.filters.Transfer('0x0000000000000000000000000000000000000000');
try {
- const events = await contract.queryFilter(transferFilter, fromBlock, _toBlock);
+ const events = (await contract.queryFilter(transferFilter, fromBlock, _toBlock)) as EventLog[];
return toBlock > maxBlock ? events.concat(await fetchEvents(contract, _toBlock)) : events;
- } catch (err) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ } catch (err: any) {
console.log('FAIL', err);
if (err.message === 'query returned more than 10000 results') {
diff --git a/scripts/build_dotcoin_upgrade_list.ts b/scripts/build_dotcoin_upgrade_list.ts
index 1316e647..1dd77e29 100644
--- a/scripts/build_dotcoin_upgrade_list.ts
+++ b/scripts/build_dotcoin_upgrade_list.ts
@@ -1,16 +1,15 @@
import path from 'path';
import fs from 'fs';
-import { network } from 'hardhat';
-import { utils, BigNumber, Contract } from 'ethers';
-import { Log } from '@ethersproject/abstract-provider';
+import { network, ethers } from 'hardhat';
+import { BaseContract, id, Log, toBeHex } from 'ethers';
import { getNetworkConfig } from '../src/config';
import { UNSRegistry__factory } from '../types/factories/contracts';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
-const NEW_URI_EVENT_TOPIC = utils.id('NewURI(uint256,string)');
+const NEW_URI_EVENT_TOPIC = id('NewURI(uint256,string)');
-const normalizeTokenId = (bigNumber: BigNumber) => {
- return utils.hexZeroPad(bigNumber.toHexString(), 32).toLowerCase();
+const normalizeTokenId = (number: bigint) => {
+ return toBeHex(number, 32).toLowerCase();
};
type State = {
@@ -60,7 +59,7 @@ function getContractsConfig (chainId: number) {
}
async function fetchLogs (
- contract: Contract,
+ contract: BaseContract,
topics: string[],
fromBlock: number,
toBlock: number,
@@ -69,18 +68,19 @@ async function fetchLogs (
const maxBlock = fromBlock + limit;
const _toBlock = Math.min(maxBlock, toBlock);
- console.log(`Fetching events blocks [${contract.address}: ${fromBlock}-${_toBlock}]`);
+ console.log(`Fetching events blocks [${await contract.getAddress()}: ${fromBlock}-${_toBlock}]`);
try {
- const events = await contract.provider.getLogs({
- address: contract.address,
+ const events = await ethers.provider.getLogs({
+ address: await contract.getAddress(),
topics,
fromBlock,
toBlock: _toBlock,
});
return toBlock > maxBlock ? events.concat(await fetchLogs(contract, topics, _toBlock, toBlock, limit)) : events;
- } catch (err) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ } catch (err: any) {
console.log('FAIL', err);
if (err.message === 'query returned more than 10000 results') {
@@ -124,7 +124,7 @@ async function main () {
throw new Error('Current network configuration does not hase UNSRegistry');
}
- const unsRegistryContract = new UNSRegistry__factory().attach(contractsConfig.UNSRegistry.address);
+ const unsRegistryContract = UNSRegistry__factory.connect(contractsConfig.UNSRegistry.address);
const currentState = readState(chainId);
const newState = JSON.parse(JSON.stringify(currentState));
@@ -134,7 +134,7 @@ async function main () {
: currentState.latestSyncedL2Block;
const fromBlock = Math.max(latestSyncedBlock, parseInt(contractsConfig.UNSRegistry.deploymentBlock));
- const toBlock = await unsRegistryContract.provider.getBlockNumber();
+ const toBlock = await ethers.provider.getBlockNumber();
console.log('Fetching events from ' + fromBlock + ' to ' + toBlock);
@@ -150,7 +150,12 @@ async function main () {
const parsedLogs = result.map((log) => unsRegistryContract.interface.parseLog(log));
- parsedLogs.forEach(({ name, args }) => {
+ parsedLogs.forEach((log) => {
+ if (!log) {
+ return;
+ }
+
+ const { name, args } = log;
if (name !== 'NewURI') {
return;
}
diff --git a/scripts/create_multisig.ts b/scripts/create_multisig.ts
new file mode 100644
index 00000000..e93b5f13
--- /dev/null
+++ b/scripts/create_multisig.ts
@@ -0,0 +1,20 @@
+import { network } from 'hardhat';
+import { getNetworkConfig } from '../src/config';
+import { unwrap } from '../src/utils';
+
+async function main () {
+ console.log('Network:', network.name);
+
+ const chainId: number = unwrap(network.config, 'chainId');
+ const config = getNetworkConfig(chainId);
+ if (!config) {
+ throw new Error(`Config not found for network ${chainId}`);
+ }
+}
+
+main()
+ .then(() => process.exit(0))
+ .catch(error => {
+ console.error(error);
+ process.exit(1);
+ });
diff --git a/scripts/deploy.ts b/scripts/deploy.ts
index 1bcdd419..1709bb5d 100644
--- a/scripts/deploy.ts
+++ b/scripts/deploy.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_CNS_Forwarders.ts b/scripts/deploy_CNS_Forwarders.ts
index fe7c5fea..cdee524c 100644
--- a/scripts/deploy_CNS_Forwarders.ts
+++ b/scripts/deploy_CNS_Forwarders.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_DotCoinBurner.ts b/scripts/deploy_DotCoinBurner.ts
index 8119b309..61530fc4 100644
--- a/scripts/deploy_DotCoinBurner.ts
+++ b/scripts/deploy_DotCoinBurner.ts
@@ -2,7 +2,7 @@ import { network } from 'hardhat';
import { mergeNetworkConfig, getNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_ENSCustody.ts b/scripts/deploy_ENSCustody.ts
index 46280d0c..03c98e72 100644
--- a/scripts/deploy_ENSCustody.ts
+++ b/scripts/deploy_ENSCustody.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { NameService, getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_MintingManagerForwarder.ts b/scripts/deploy_MintingManagerForwarder.ts
index 52727059..3dd4d5be 100644
--- a/scripts/deploy_MintingManagerForwarder.ts
+++ b/scripts/deploy_MintingManagerForwarder.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_ProxyReader.ts b/scripts/deploy_ProxyReader.ts
index 05349cc1..a9d6664c 100644
--- a/scripts/deploy_ProxyReader.ts
+++ b/scripts/deploy_ProxyReader.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_UNS.ts b/scripts/deploy_UNS.ts
index 9581be52..57f796c8 100644
--- a/scripts/deploy_UNS.ts
+++ b/scripts/deploy_UNS.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_UNSOperator.ts b/scripts/deploy_UNSOperator.ts
index af4816fe..4e708c74 100644
--- a/scripts/deploy_UNSOperator.ts
+++ b/scripts/deploy_UNSOperator.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_UNS_only.ts b/scripts/deploy_UNS_only.ts
index 30064b50..349e022f 100644
--- a/scripts/deploy_UNS_only.ts
+++ b/scripts/deploy_UNS_only.ts
@@ -2,7 +2,7 @@ import { network } from 'hardhat';
import merge from 'lodash.merge';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_ZilliqaRecover.ts b/scripts/deploy_ZilliqaRecover.ts
index d69bfa51..5dc5ed04 100644
--- a/scripts/deploy_ZilliqaRecover.ts
+++ b/scripts/deploy_ZilliqaRecover.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/deploy_full.ts b/scripts/deploy_full.ts
index f30ac634..a99f274e 100644
--- a/scripts/deploy_full.ts
+++ b/scripts/deploy_full.ts
@@ -2,7 +2,7 @@ import { network } from 'hardhat';
import { mergeNetworkConfig, getNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/prepare_ProxyReader.ts b/scripts/prepare_ProxyReader.ts
index 806b219b..58f5db3e 100644
--- a/scripts/prepare_ProxyReader.ts
+++ b/scripts/prepare_ProxyReader.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/propose_ENSCustody.ts b/scripts/propose_ENSCustody.ts
index 2e97470d..6ee23198 100644
--- a/scripts/propose_ENSCustody.ts
+++ b/scripts/propose_ENSCustody.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { NameService, getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/propose_MintingManager.ts b/scripts/propose_MintingManager.ts
index 664d373d..d096ccb6 100644
--- a/scripts/propose_MintingManager.ts
+++ b/scripts/propose_MintingManager.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/propose_ProxyReader.ts b/scripts/propose_ProxyReader.ts
index 1a87ca0e..01251ed3 100644
--- a/scripts/propose_ProxyReader.ts
+++ b/scripts/propose_ProxyReader.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/propose_UNSRegistry.ts b/scripts/propose_UNSRegistry.ts
index a2a56dfe..4aa9a57f 100644
--- a/scripts/propose_UNSRegistry.ts
+++ b/scripts/propose_UNSRegistry.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/upgrade.ts b/scripts/upgrade.ts
index 7abe65d4..3bfd4edd 100644
--- a/scripts/upgrade.ts
+++ b/scripts/upgrade.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/upgrade_MintingManager.ts b/scripts/upgrade_MintingManager.ts
index 8025dc5f..13cc5bb4 100644
--- a/scripts/upgrade_MintingManager.ts
+++ b/scripts/upgrade_MintingManager.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/upgrade_ProxyReader.ts b/scripts/upgrade_ProxyReader.ts
index 428f5ac6..2d1bdc15 100644
--- a/scripts/upgrade_ProxyReader.ts
+++ b/scripts/upgrade_ProxyReader.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { mergeNetworkConfig, getNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/upgrade_UNSOperator.ts b/scripts/upgrade_UNSOperator.ts
index 22076597..e37a3034 100644
--- a/scripts/upgrade_UNSOperator.ts
+++ b/scripts/upgrade_UNSOperator.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { mergeNetworkConfig, getNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/upgrade_UNSRegistry.ts b/scripts/upgrade_UNSRegistry.ts
index 767202aa..791558e4 100644
--- a/scripts/upgrade_UNSRegistry.ts
+++ b/scripts/upgrade_UNSRegistry.ts
@@ -1,7 +1,7 @@
import { network } from 'hardhat';
import { getNetworkConfig, mergeNetworkConfig } from '../src/config';
import { Deployer } from '../src/deployer';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
async function main () {
console.log('Network:', network.name);
diff --git a/scripts/upload_blockchain_families.ts b/scripts/upload_blockchain_families.ts
index 667ccae9..280cb56c 100644
--- a/scripts/upload_blockchain_families.ts
+++ b/scripts/upload_blockchain_families.ts
@@ -2,7 +2,7 @@ import fs from 'fs';
import { ethers, network } from 'hardhat';
import { parse } from 'csv-parse/sync';
import { chunk, at } from 'lodash';
-import { unwrap } from '../src/helpers';
+import { unwrap } from '../src/utils';
import { getNetworkConfig } from '../src/config';
import { ProxyReader__factory } from '../types/factories/contracts';
import { ProxyReader } from '../types/contracts/ProxyReader';
diff --git a/src/deployer.ts b/src/deployer.ts
index a1c2401c..d564c9a6 100644
--- a/src/deployer.ts
+++ b/src/deployer.ts
@@ -3,13 +3,13 @@ import fs from 'fs';
import { ethers, network, config } from 'hardhat';
import { merge } from 'lodash';
import debug from 'debug';
-import { Contract, ContractFactory } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { BaseContract, toBeHex, ZeroAddress } from 'ethers';
import { NetworkConfig } from 'hardhat/types';
import { TransactionResponse } from '@ethersproject/abstract-provider';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { ArtifactName, NsConfig, NsNetworkConfig, ContractConfigMap, UnsContractName, ContractName } from './types';
import { Task, tasks } from './tasks';
-import { unwrap } from './helpers';
+import { unwrap } from './utils';
const log = debug('UNS:deployer');
@@ -18,77 +18,30 @@ type DeployerOptions = {
proxy: boolean;
};
+type DeployedContract = {
+ address: string;
+ legacyAddresses: string[];
+ deploymentBlock: string;
+ implementation: string;
+ forwarder: string;
+ transaction: TransactionResponse;
+}
+
type DeployConfig = {
contracts: {
- [k in ArtifactName]: {
- address: string;
- legacyAddresses: string[];
- deploymentBlock: string;
- implementation: string;
- forwarder: string;
- transaction: TransactionResponse;
- };
+ [k in ArtifactName]: DeployedContract;
};
};
type AccountsMap = Record;
-type ArtifactsMap = {
- [k in ArtifactName]: ContractFactory;
-};
-
const DEFAULT_OPTIONS: DeployerOptions = {
basePath: './.deployer',
proxy: true,
};
-async function getArtifacts (): Promise {
- return {
- CNSRegistry: await ethers.getContractFactory('CNSRegistry'),
- CNSRegistryForwarder: await ethers.getContractFactory('CNSRegistryForwarder'),
- SignatureController: await ethers.getContractFactory('SignatureController'),
- MintingController: await ethers.getContractFactory('MintingController'),
- URIPrefixController: await ethers.getContractFactory('URIPrefixController'),
- Resolver: await ethers.getContractFactory('dot-crypto/contracts/Resolver.sol:Resolver'),
- ResolverForwarder: await ethers.getContractFactory('ResolverForwarder'),
- UNSRegistry: await ethers.getContractFactory('UNSRegistry'),
- MintingManager: await ethers.getContractFactory('MintingManager'),
- UNSOperator: await ethers.getContractFactory('UNSOperator'),
- MintingManagerForwarder: await ethers.getContractFactory('MintingManagerForwarder'),
- ProxyReader: await ethers.getContractFactory('contracts/ProxyReader.sol:ProxyReader'),
- DummyStateSender: await ethers.getContractFactory('DummyStateSender'),
- SimpleCheckpointManager: await ethers.getContractFactory('SimpleCheckpointManager'),
- MintableERC721Predicate: await ethers.getContractFactory('MintableERC721Predicate'),
- RootChainManager: await ethers.getContractFactory('RootChainManager'),
- DotCoinBurner: await ethers.getContractFactory('DotCoinBurner'),
- ZilliqaRecover: await ethers.getContractFactory('ZilliqaRecover'),
-
- ENSRegistry: await ethers.getContractFactory('ENSRegistry'),
- BaseRegistrarImplementation: await ethers.getContractFactory('BaseRegistrarImplementation'),
- ReverseRegistrar: await ethers.getContractFactory('ReverseRegistrar'),
- NameWrapper: await ethers.getContractFactory('NameWrapper'),
- DummyOracle: await ethers.getContractFactory('DummyOracle'),
- StablePriceOracle: await ethers.getContractFactory('StablePriceOracle'),
- ETHRegistrarController: await ethers.getContractFactory('ETHRegistrarController'),
- PublicResolver: await ethers.getContractFactory('PublicResolver'),
- ENSCustody: await ethers.getContractFactory('ENSCustody'),
- LegacyENSRegistry: await ethers.getContractFactory('LegacyENSRegistry'),
- LegacyETHRegistrarController: await ethers.getContractFactory('LegacyETHRegistrarController'),
- DNSRegistrar: await ethers.getContractFactory('DNSRegistrar'),
- DNSSECImpl: await ethers.getContractFactory('DNSSECImpl'),
- TLDPublicSuffixList: await ethers.getContractFactory('TLDPublicSuffixList'),
- RSASHA256Algorithm: await ethers.getContractFactory('RSASHA256Algorithm'),
- DummyAlgorithm: await ethers.getContractFactory('DummyAlgorithm'),
- SHA1Digest: await ethers.getContractFactory('SHA1Digest'),
- SHA256Digest: await ethers.getContractFactory('SHA256Digest'),
- SHA1NSEC3Digest: await ethers.getContractFactory('SHA1NSEC3Digest'),
- Root: await ethers.getContractFactory('Root'),
- };
-}
-
export class Deployer {
public options: DeployerOptions;
- public artifacts: ArtifactsMap;
public accounts: AccountsMap;
public log: debug.Debugger;
@@ -103,7 +56,6 @@ export class Deployer {
return new Deployer(
options ?? DEFAULT_OPTIONS,
- await getArtifacts(),
{ owner },
_unsConfig.minters[network.name],
_unsConfig.multisig[network.name],
@@ -112,7 +64,6 @@ export class Deployer {
constructor (
options: DeployerOptions,
- artifacts: ArtifactsMap,
accounts: AccountsMap,
minters: string[],
multisig: string,
@@ -121,7 +72,6 @@ export class Deployer {
...DEFAULT_OPTIONS,
...options,
};
- this.artifacts = artifacts;
this.accounts = accounts;
this.minters = minters;
this.multisig = multisig;
@@ -137,7 +87,6 @@ export class Deployer {
this.log('Initialized deployer', {
options: this.options,
- artifacts: Object.keys(artifacts),
accounts: Object.values(accounts)
.filter((a) => !!a)
.map((a) => a.address),
@@ -180,7 +129,7 @@ export class Deployer {
...emptyConfig,
address: value.address,
implementation: value.implementation,
- deploymentBlock: value.transaction && ethers.BigNumber.from(value.transaction.blockNumber).toHexString(),
+ deploymentBlock: value.transaction && toBeHex(BigInt(value.transaction.blockNumber ?? 0)),
forwarder: value.forwarder,
legacyAddresses: value.legacyAddresses,
};
@@ -203,19 +152,19 @@ export class Deployer {
async saveContractConfig (
name: ContractName,
- contract: Contract,
+ contract: BaseContract,
implAddress?: string,
- forwarder?: Contract,
+ forwarder?: BaseContract,
): Promise {
const config = this.getDeployConfig();
const _config = merge(config, {
contracts: {
[name]: {
- address: contract.address,
+ address: await contract.getAddress(),
implementation: implAddress,
- transaction: contract.deployTransaction && (await contract.deployTransaction.wait()),
- forwarder: forwarder && forwarder.address,
+ transaction: (await contract.deploymentTransaction()?.wait()),
+ forwarder: forwarder && await forwarder.getAddress(),
},
},
});
@@ -240,14 +189,28 @@ export class Deployer {
this._saveConfig(_config);
}
- async saveForwarderConfig (name: UnsContractName, contract: Contract): Promise {
+ async saveForwarderConfig (name: UnsContractName, contract: BaseContract): Promise {
const config = this.getDeployConfig();
const _config = merge(config, {
contracts: {
[name]: {
...((config.contracts || {})[name] || {}),
- forwarder: contract.address,
+ forwarder: await contract.getAddress(),
+ },
+ },
+ });
+
+ this._saveConfig(_config);
+ }
+
+ async saveContractEmptyConfig (name: UnsContractName) {
+ const config = this.getDeployConfig();
+
+ const _config = merge(config, {
+ contracts: {
+ [name]: {
+ address: ZeroAddress,
},
},
});
diff --git a/src/helpers.ts b/src/helpers.ts
index 86c7727a..dc3238fc 100644
--- a/src/helpers.ts
+++ b/src/helpers.ts
@@ -1,24 +1,57 @@
-import { sha3 } from 'web3-utils';
-import { ArtifactName, DependenciesMap, ContractConfig } from './types';
+import {
+ ContractAddressOrInstance,
+ DeployProxyOptions,
+ UpgradeProxyOptions,
+} from '@openzeppelin/hardhat-upgrades/dist/utils';
+import type { BaseContract, ContractFactory } from 'ethers';
+import { network, upgrades } from 'hardhat';
+import { DependenciesMap, ContractName, NsNetworkConfig } from './types';
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export function unwrap (object: object, key: string): any {
- if (!object[key]) {
- throw new Error(`Unwrap: cannot find key ${key} on object ${object.toString()}`);
+export const ensureDeployed = (config: NsNetworkConfig, ...contracts: ContractName[]): DependenciesMap => {
+ return contracts
+ .map((name) => {
+ const contract = config.contracts[name];
+ if (!contract?.address) {
+ throw new Error(`${name} contract not found for network ${network.config.chainId}`);
+ }
+ return { [name]: contract };
+ })
+ .reduce((a, b) => ({ ...a, ...b }));
+};
+
+export const ensureUpgradable = (config: NsNetworkConfig): void => {
+ if (!config.contracts.ProxyAdmin?.address) {
+ throw new Error('Current network configuration does not support upgrading');
}
+};
- return object[key];
-}
+export const deployProxy = async (
+ implFactory: ContractFactory,
+ args?: unknown[],
+ opts?: DeployProxyOptions,
+): Promise => {
+ const proxy = await upgrades.deployProxy(implFactory, args, opts);
-export function unwrapDependencies (dependencies: DependenciesMap, keys: ArtifactName[]): ContractConfig[] {
- return keys.map((key) => unwrap(dependencies, key));
-}
+ await proxy.waitForDeployment();
-export function notNullSha (value: string) {
- const res = sha3(value);
- if (!res) {
- throw new Error('notNullSha: SHA returns null');
- }
+ return proxy as unknown as T;
+};
+
+export const upgradeProxy = async (
+ proxy: ContractAddressOrInstance,
+ implFactory: ContractFactory,
+ opts?: UpgradeProxyOptions,
+): Promise => {
+ const upgraded = await upgrades.upgradeProxy(proxy, implFactory, opts);
+
+ await upgraded.waitForDeployment();
+
+ return proxy as unknown as T;
+};
- return res;
-}
+/**
+ * Only used for ProxyReader, as ProxyReader has a `getAddress` contract function
+ */
+export const getContractAddress = async (contract: BaseContract): Promise => {
+ return contract.getAddress();
+};
diff --git a/src/tasks.ts b/src/tasks.ts
index 43a23983..3c97d7b4 100644
--- a/src/tasks.ts
+++ b/src/tasks.ts
@@ -1,19 +1,14 @@
-import { defender, network, upgrades } from 'hardhat';
-import { Contract, utils } from 'ethers';
+import { network, upgrades, ethers, defender } from 'hardhat';
+import { Contract, keccak256, namehash, parseEther } from 'ethers';
import { merge } from 'lodash';
-import { namehash } from 'ethers/lib/utils';
+import { getContractAddress } from '@openzeppelin/hardhat-upgrades/dist/utils';
import { ZERO_ADDRESS, ZERO_WORD } from '../test/helpers/constants';
+import { ENSCustody, MintingManager, ProxyReader, UNSOperator, UNSRegistry, ZilliqaRecover } from '../types';
import { Deployer } from './deployer';
-import {
- ArtifactName,
- DependenciesMap,
- EnsContractName,
- UnsContractName,
- NsNetworkConfig,
- ContractName,
-} from './types';
+import { ArtifactName, DependenciesMap, EnsContractName, UnsContractName, NsNetworkConfig } from './types';
import verify from './verify';
-import { notNullSha, unwrap, unwrapDependencies } from './helpers';
+import { unwrap, unwrapDependencies, notNullSha } from './utils';
+import { deployProxy, ensureDeployed, ensureUpgradable } from './helpers';
export type Task = {
tags: string[];
@@ -24,77 +19,68 @@ export type Task = {
const isSandbox = network.config.chainId === 1337;
-const ensureDeployed = (config: NsNetworkConfig, ...contracts: ContractName[]): DependenciesMap => {
- return contracts
- .map((name) => {
- const contract = config.contracts[name];
- if (!contract?.address) {
- throw new Error(`${name} contract not found for network ${network.config.chainId}`);
- }
- return { [name]: contract };
- })
- .reduce((a, b) => ({ ...a, ...b }));
-};
-
-const ensureUpgradable = (config: NsNetworkConfig): void => {
- if (!config.contracts.ProxyAdmin?.address) {
- throw new Error('Current network configuration does not support upgrading');
- }
-};
-
export const deployCNSTask: Task = {
tags: ['cns', 'full'],
priority: 0,
run: async (ctx: Deployer) => {
const { owner } = ctx.accounts;
- const { CNSRegistry, SignatureController, MintingController, URIPrefixController, Resolver } = ctx.artifacts;
-
// CNS Registry
- const cnsRegistry = await CNSRegistry.connect(owner).deploy();
+ const cnsRegistry = await ethers.deployContract(ArtifactName.CNSRegistry, [], owner);
await ctx.saveContractConfig(UnsContractName.CNSRegistry, cnsRegistry);
- await cnsRegistry.deployTransaction.wait();
- await verify(ctx, cnsRegistry.address, []);
+ await cnsRegistry.waitForDeployment();
+ await verify(ctx, await cnsRegistry.getAddress(), []);
// CNS Controllers
- const signatureController = await SignatureController.connect(owner).deploy(cnsRegistry.address);
+ const signatureController = await ethers.deployContract(
+ ArtifactName.SignatureController,
+ [await cnsRegistry.getAddress()],
+ owner,
+ );
await ctx.saveContractConfig(UnsContractName.SignatureController, signatureController);
- await signatureController.deployTransaction.wait();
- await verify(ctx, signatureController.address, [cnsRegistry.address]);
+ await signatureController.waitForDeployment();
+ await verify(ctx, await signatureController.getAddress(), [await cnsRegistry.getAddress()]);
- const mintingController = await MintingController.connect(owner).deploy(cnsRegistry.address);
+ const mintingController = await ethers.deployContract(
+ ArtifactName.MintingController,
+ [await cnsRegistry.getAddress()],
+ owner,
+ );
await ctx.saveContractConfig(UnsContractName.MintingController, mintingController);
- await mintingController.deployTransaction.wait();
- await verify(ctx, mintingController.address, [cnsRegistry.address]);
+ await mintingController.waitForDeployment();
+ await verify(ctx, await mintingController.getAddress(), [await cnsRegistry.getAddress()]);
- const uriPrefixController = await URIPrefixController.connect(owner).deploy(cnsRegistry.address);
+ const uriPrefixController = await ethers.deployContract(
+ ArtifactName.URIPrefixController,
+ [await cnsRegistry.getAddress()],
+ owner,
+ );
await ctx.saveContractConfig(UnsContractName.URIPrefixController, uriPrefixController);
- await uriPrefixController.deployTransaction.wait();
- await verify(ctx, uriPrefixController.address, [cnsRegistry.address]);
+ await uriPrefixController.waitForDeployment();
+ await verify(ctx, await uriPrefixController.getAddress(), [await cnsRegistry.getAddress()]);
// Configuration
- await cnsRegistry.connect(owner).addController(signatureController.address);
- await cnsRegistry.connect(owner).addController(mintingController.address);
- await cnsRegistry.connect(owner).addController(uriPrefixController.address);
+ await cnsRegistry.addController(await signatureController.getAddress());
+ await cnsRegistry.addController(await mintingController.getAddress());
+ await cnsRegistry.addController(await uriPrefixController.getAddress());
// CNS Resolver
- const resolver = await Resolver.connect(owner).deploy(cnsRegistry.address, mintingController.address);
+ const resolver = await ethers.deployContract(
+ ArtifactName.Resolver,
+ [await cnsRegistry.getAddress(), await mintingController.getAddress()],
+ owner,
+ );
await ctx.saveContractConfig(UnsContractName.Resolver, resolver);
- await resolver.deployTransaction.wait();
- await verify(ctx, resolver.address, [cnsRegistry.address, mintingController.address]);
+ await resolver.waitForDeployment();
+ await verify(ctx, await resolver.getAddress(), [
+ await cnsRegistry.getAddress(),
+ await mintingController.getAddress(),
+ ]);
// Stub unsupported contracts
- await ctx.saveContractConfig(UnsContractName.WhitelistedMinter, {
- address: '0x0000000000000000000000000000000000000000',
- } as Contract);
- await ctx.saveContractConfig(UnsContractName.DomainZoneController, {
- address: '0x0000000000000000000000000000000000000000',
- } as Contract);
- await ctx.saveContractConfig(UnsContractName.TwitterValidationOperator, {
- address: '0x0000000000000000000000000000000000000000',
- } as Contract);
- await ctx.saveContractConfig(UnsContractName.FreeMinter, {
- address: '0x0000000000000000000000000000000000000000',
- } as Contract);
+ await ctx.saveContractEmptyConfig(UnsContractName.WhitelistedMinter);
+ await ctx.saveContractEmptyConfig(UnsContractName.DomainZoneController);
+ await ctx.saveContractEmptyConfig(UnsContractName.TwitterValidationOperator);
+ await ctx.saveContractEmptyConfig(UnsContractName.FreeMinter);
},
ensureDependencies: () => ({}),
};
@@ -106,25 +92,30 @@ export const deployCNSForwardersTask: Task = {
const { owner } = ctx.accounts;
const [CNSRegistry, SignatureController, Resolver] = unwrapDependencies(dependencies, [
- ArtifactName.CNSRegistry,
- ArtifactName.SignatureController,
- ArtifactName.Resolver,
+ UnsContractName.CNSRegistry,
+ UnsContractName.SignatureController,
+ UnsContractName.Resolver,
]);
- const cnsRegistryForwarder = await ctx.artifacts.CNSRegistryForwarder.connect(owner).deploy(
- SignatureController.address,
+ const cnsRegistryForwarder = await ethers.deployContract(
+ ArtifactName.CNSRegistryForwarder,
+ [SignatureController.address],
+ owner,
);
+
await ctx.saveForwarderConfig(UnsContractName.CNSRegistry, cnsRegistryForwarder);
- await cnsRegistryForwarder.deployTransaction.wait();
- await verify(ctx, cnsRegistryForwarder.address, [SignatureController.address]);
+ await cnsRegistryForwarder.waitForDeployment();
+ await verify(ctx, await cnsRegistryForwarder.getAddress(), [SignatureController.address]);
- const resolverForwarder = await ctx.artifacts.ResolverForwarder.connect(owner).deploy(
- CNSRegistry.address,
- Resolver.address,
+ const resolverForwarder = await ethers.deployContract(
+ ArtifactName.ResolverForwarder,
+ [CNSRegistry.address, Resolver.address],
+ owner,
);
+
await ctx.saveForwarderConfig(UnsContractName.Resolver, resolverForwarder);
- await resolverForwarder.deployTransaction.wait();
- await verify(ctx, resolverForwarder.address, [CNSRegistry.address, Resolver.address]);
+ await resolverForwarder.waitForDeployment();
+ await verify(ctx, await resolverForwarder.getAddress(), [CNSRegistry.address, Resolver.address]);
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig): DependenciesMap => {
@@ -147,17 +138,17 @@ const deployUNSTask = {
const [CNSRegistry, MintingController, URIPrefixController, Resolver, RootChainManager] = unwrapDependencies(
dependencies,
[
- ArtifactName.CNSRegistry,
- ArtifactName.MintingController,
- ArtifactName.URIPrefixController,
- ArtifactName.Resolver,
- ArtifactName.RootChainManager,
+ UnsContractName.CNSRegistry,
+ UnsContractName.MintingController,
+ UnsContractName.URIPrefixController,
+ UnsContractName.Resolver,
+ UnsContractName.RootChainManager,
],
);
- let unsRegistry: Contract;
- let mintingManager: Contract;
- let unsOperator: Contract;
+ let unsRegistry: UNSRegistry;
+ let mintingManager: MintingManager;
+ let unsOperator: UNSOperator;
let proxyAdmin: Contract;
let unsRegistryImpl: string;
@@ -165,70 +156,71 @@ const deployUNSTask = {
let unsOperatorImpl: string;
if (ctx.options.proxy) {
- unsRegistry = await upgrades.deployProxy(ctx.artifacts.UNSRegistry.connect(owner), [], {
+ unsRegistry = await deployProxy(await ethers.getContractFactory(ArtifactName.UNSRegistry, owner), [], {
initializer: false,
unsafeAllow: ['delegatecall'],
});
- await unsRegistry.deployTransaction.wait();
- mintingManager = await upgrades.deployProxy(ctx.artifacts.MintingManager.connect(owner), [], {
+ mintingManager = await deployProxy(await ethers.getContractFactory(ArtifactName.MintingManager, owner), [], {
initializer: false,
});
- await mintingManager.deployTransaction.wait();
- unsOperator = await upgrades.deployProxy(ctx.artifacts.UNSOperator.connect(owner), []);
- await unsOperator.deployTransaction.wait();
+ unsOperator = await deployProxy(await ethers.getContractFactory(ArtifactName.UNSOperator, owner));
proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- unsRegistryImpl = await proxyAdmin.callStatic.getProxyImplementation(unsRegistry.address);
+ unsRegistryImpl = await proxyAdmin.getProxyImplementation.staticCall(await unsRegistry.getAddress());
await ctx.saveContractConfig(UnsContractName.UNSRegistry, unsRegistry, unsRegistryImpl, unsRegistry);
await verify(ctx, unsRegistryImpl, []);
- mintingManagerImpl = await proxyAdmin.callStatic.getProxyImplementation(mintingManager.address);
+ mintingManagerImpl = await proxyAdmin.getProxyImplementation.staticCall(await mintingManager.getAddress());
await ctx.saveContractConfig(UnsContractName.MintingManager, mintingManager, mintingManagerImpl);
await verify(ctx, mintingManagerImpl, []);
- unsOperatorImpl = await proxyAdmin.callStatic.getProxyImplementation(unsOperator.address);
+ unsOperatorImpl = await proxyAdmin.getProxyImplementation.staticCall(await unsOperator.getAddress());
await ctx.saveContractConfig(UnsContractName.UNSOperator, unsOperator, unsOperatorImpl);
await verify(ctx, unsOperatorImpl, []);
} else {
- unsRegistry = await ctx.artifacts.UNSRegistry.connect(owner).deploy();
+ unsRegistry = await ethers.deployContract(UnsContractName.UNSRegistry, owner);
await ctx.saveContractConfig(UnsContractName.UNSRegistry, unsRegistry);
- await unsRegistry.deployTransaction.wait();
- await verify(ctx, unsRegistry.address, []);
+ await unsRegistry.waitForDeployment();
+ await verify(ctx, await unsRegistry.getAddress(), []);
- mintingManager = await ctx.artifacts.MintingManager.connect(owner).deploy();
+ mintingManager = await ethers.deployContract(UnsContractName.MintingManager, owner);
await ctx.saveContractConfig(UnsContractName.MintingManager, mintingManager);
- await mintingManager.deployTransaction.wait();
- await verify(ctx, mintingManager.address, []);
+ await mintingManager.waitForDeployment();
+ await verify(ctx, await mintingManager.getAddress(), []);
- unsOperator = await ctx.artifacts.UNSOperator.connect(owner).deploy();
+ unsOperator = await ethers.deployContract(UnsContractName.UNSOperator, owner);
await ctx.saveContractConfig(UnsContractName.UNSOperator, unsOperator);
- await unsOperator.deployTransaction.wait();
- await verify(ctx, unsOperator.address, []);
+ await unsOperator.waitForDeployment();
+ await verify(ctx, await unsOperator.getAddress(), []);
}
const registryInitTx = await unsRegistry
.connect(owner)
- .initialize(mintingManager.address, CNSRegistry.address, RootChainManager.address, ZERO_ADDRESS);
+ .initialize(await mintingManager.getAddress(), CNSRegistry.address, RootChainManager.address, ZERO_ADDRESS);
await registryInitTx.wait();
- const forwarder = await ctx.artifacts.MintingManagerForwarder.connect(owner).deploy(mintingManager.address);
+ const forwarder = await ethers.deployContract(
+ ArtifactName.MintingManagerForwarder,
+ [await mintingManager.getAddress()],
+ owner,
+ );
await ctx.saveForwarderConfig(UnsContractName.MintingManager, forwarder);
- await forwarder.deployTransaction.wait();
- await verify(ctx, forwarder.address, [mintingManager.address]);
+ await forwarder.waitForDeployment();
+ await verify(ctx, await forwarder.getAddress(), [await mintingManager.getAddress()]);
const mintingManagerInitTx = await mintingManager
.connect(owner)
.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
MintingController.address,
URIPrefixController.address,
Resolver.address,
- unsOperator.address,
- forwarder.address,
+ await unsOperator.getAddress(),
+ await forwarder.getAddress(),
);
await mintingManagerInitTx.wait();
@@ -266,28 +258,28 @@ const deployUNSProxyReaderTask: Task = {
const { owner } = ctx.accounts;
const [UNSRegistry, CNSRegistry, MintingManager] = unwrapDependencies(dependencies, [
- ArtifactName.UNSRegistry,
- ArtifactName.CNSRegistry,
- ArtifactName.MintingManager,
+ UnsContractName.UNSRegistry,
+ UnsContractName.CNSRegistry,
+ UnsContractName.MintingManager,
]);
- const proxyReader = await upgrades.deployProxy(
- ctx.artifacts.ProxyReader.connect(owner),
+ const proxyReader = await deployProxy(
+ await ethers.getContractFactory(ArtifactName.ProxyReader, owner),
[UNSRegistry.address, CNSRegistry.address],
{ unsafeAllow: ['delegatecall'] },
);
- await proxyReader.deployTransaction.wait();
+ await proxyReader.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const proxyReaderImpl = await proxyAdmin.callStatic.getProxyImplementation(proxyReader.address);
+ const proxyReaderImpl = await proxyAdmin.getProxyImplementation.staticCall(await getContractAddress(proxyReader));
await ctx.saveContractConfig(UnsContractName.ProxyReader, proxyReader, proxyReaderImpl);
await verify(ctx, proxyReaderImpl, []);
- const mintingManager = ctx.artifacts.MintingManager.attach(MintingManager.address);
+ const mintingManager = await ethers.getContractAt(ArtifactName.MintingManager, MintingManager.address, owner);
- await mintingManager.connect(owner).addProxyReaders([proxyReader.address]);
+ await mintingManager.addProxyReaders([await getContractAddress(proxyReader)]);
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig): DependenciesMap => {
@@ -309,18 +301,26 @@ const configureCNSTask = {
const { owner } = ctx.accounts;
const [MintingController, URIPrefixController, MintingManager] = unwrapDependencies(dependencies, [
- ArtifactName.MintingController,
- ArtifactName.URIPrefixController,
- ArtifactName.MintingManager,
+ UnsContractName.MintingController,
+ UnsContractName.URIPrefixController,
+ UnsContractName.MintingManager,
]);
- const mintingController = ctx.artifacts.MintingController.attach(MintingController.address).connect(owner);
+ const mintingController = await ethers.getContractAt(
+ ArtifactName.MintingController,
+ MintingController.address,
+ owner,
+ );
if (!(await mintingController.isMinter(MintingManager.address))) {
await mintingController.addMinter(MintingManager.address);
}
- const uriPrefixController = ctx.artifacts.URIPrefixController.attach(URIPrefixController.address).connect(owner);
+ const uriPrefixController = await ethers.getContractAt(
+ ArtifactName.URIPrefixController,
+ URIPrefixController.address,
+ owner,
+ );
if (!(await uriPrefixController.isWhitelisted(MintingManager.address))) {
await uriPrefixController.addWhitelisted(MintingManager.address);
@@ -328,7 +328,7 @@ const configureCNSTask = {
// Set tokenURI prefix only for Sandbox
if (isSandbox) {
- const mintingManager = ctx.artifacts.MintingManager.attach(MintingManager.address).connect(owner);
+ const mintingManager = await ethers.getContractAt(ArtifactName.MintingManager, MintingManager.address, owner);
await mintingManager.setTokenURIPrefix('https://example.com/');
}
},
@@ -352,14 +352,18 @@ const deployMMForwarderTask = {
const { owner } = ctx.accounts;
const MintingManager = unwrap(dependencies, ArtifactName.MintingManager);
- const forwarder = await ctx.artifacts.MintingManagerForwarder.connect(owner).deploy(MintingManager.address);
+ const forwarder = await ethers.deployContract(
+ ArtifactName.MintingManagerForwarder,
+ [MintingManager.address],
+ owner,
+ );
- const mintingManager = ctx.artifacts.MintingManager.attach(MintingManager.address).connect(owner);
+ const mintingManager = await ethers.getContractAt(ArtifactName.MintingManager, MintingManager.address, owner);
- await mintingManager.setForwarder(forwarder.address);
+ await mintingManager.setForwarder(await forwarder.getAddress());
await ctx.saveForwarderConfig(UnsContractName.MintingManager, forwarder);
- await forwarder.deployTransaction.wait();
- await verify(ctx, forwarder.address, [MintingManager.address]);
+ await forwarder.waitForDeployment();
+ await verify(ctx, await forwarder.getAddress(), [MintingManager.address]);
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig): DependenciesMap => {
@@ -375,13 +379,16 @@ const deployUNSOperatorTask: Task = {
run: async (ctx: Deployer) => {
const { owner } = ctx.accounts;
- const unsOperator = await upgrades.deployProxy(ctx.artifacts.UNSOperator.connect(owner), []);
- await unsOperator.deployTransaction.wait();
+ const unsOperator = await upgrades.deployProxy(
+ await ethers.getContractFactory(ArtifactName.UNSOperator, owner),
+ [],
+ );
+ await unsOperator.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const unsOperatorImpl = await proxyAdmin.callStatic.getProxyImplementation(unsOperator.address);
+ const unsOperatorImpl = await proxyAdmin.getProxyImplementation.staticCall(unsOperator.address);
await ctx.saveContractConfig(UnsContractName.UNSOperator, unsOperator, unsOperatorImpl);
await verify(ctx, unsOperatorImpl, []);
},
@@ -402,23 +409,23 @@ const deployZilliqaRecoverTask: Task = {
run: async (ctx: Deployer, dependencies: DependenciesMap) => {
const { owner } = ctx.accounts;
const [UNSRegistry, MintingManager] = unwrapDependencies(dependencies, [
- ArtifactName.UNSRegistry,
- ArtifactName.MintingManager,
+ UnsContractName.UNSRegistry,
+ UnsContractName.MintingManager,
]);
- const zilliqaRecover = await upgrades.deployProxy(ctx.artifacts.ZilliqaRecover.connect(owner), [
- UNSRegistry?.address,
- MintingManager?.address,
- ]);
- await zilliqaRecover.deployTransaction.wait();
+ const zilliqaRecover = await deployProxy(
+ await ethers.getContractFactory(ArtifactName.ZilliqaRecover, owner),
+ [UNSRegistry.address, MintingManager.address],
+ );
if (isSandbox) {
- const mintingManager = ctx.artifacts.MintingManager.attach(MintingManager.address).connect(owner);
- await mintingManager.functions.addMinter(zilliqaRecover.address);
+ const mintingManager = await ethers.getContractAt(ArtifactName.MintingManager, MintingManager.address, owner);
+ await mintingManager.addMinter(await zilliqaRecover.getAddress());
}
const proxyAdmin = await upgrades.admin.getInstance();
- const zilliqaRecoverImpl = await proxyAdmin.callStatic.getProxyImplementation(zilliqaRecover.address);
+ const zilliqaRecoverImpl = await proxyAdmin.getProxyImplementation.staticCall(await zilliqaRecover.getAddress());
+
await ctx.saveContractConfig(UnsContractName.ZilliqaRecover, zilliqaRecover, zilliqaRecoverImpl, zilliqaRecover);
await verify(ctx, zilliqaRecoverImpl, []);
},
@@ -436,13 +443,16 @@ const upgradeUNSRegistryTask: Task = {
run: async (ctx: Deployer, dependencies: DependenciesMap) => {
const UNSRegistry = unwrap(dependencies, ArtifactName.UNSRegistry);
- const unsRegistry = await upgrades.upgradeProxy(UNSRegistry.address, ctx.artifacts.UNSRegistry);
- await unsRegistry.deployTransaction.wait();
+ const unsRegistry = await upgrades.upgradeProxy(
+ UNSRegistry.address,
+ await ethers.getContractFactory(ArtifactName.UNSRegistry),
+ );
+ await unsRegistry.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const unsRegistryImpl = await proxyAdmin.callStatic.getProxyImplementation(unsRegistry.address);
+ const unsRegistryImpl = await proxyAdmin.getProxyImplementation.staticCall(unsRegistry.address);
await ctx.saveContractConfig(UnsContractName.UNSRegistry, unsRegistry, unsRegistryImpl, unsRegistry);
await verify(ctx, unsRegistryImpl, []);
},
@@ -461,13 +471,16 @@ const upgradeMintingManagerTask: Task = {
run: async (ctx: Deployer, dependencies: DependenciesMap) => {
const MintingManager = unwrap(dependencies, ArtifactName.MintingManager);
- const mintingManager = await upgrades.upgradeProxy(MintingManager.address, ctx.artifacts.MintingManager);
- await mintingManager.deployTransaction.wait();
+ const mintingManager = await upgrades.upgradeProxy(
+ MintingManager.address,
+ await ethers.getContractFactory(ArtifactName.MintingManager),
+ );
+ await mintingManager.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const mintingManagerImpl = await proxyAdmin.callStatic.getProxyImplementation(mintingManager.address);
+ const mintingManagerImpl = await proxyAdmin.getProxyImplementation.staticCall(mintingManager.address);
await ctx.saveContractConfig(UnsContractName.MintingManager, mintingManager, mintingManagerImpl);
await verify(ctx, mintingManagerImpl, []);
},
@@ -486,15 +499,17 @@ const upgradeProxyReaderTask: Task = {
run: async (ctx: Deployer, dependencies: DependenciesMap) => {
const ProxyReader = unwrap(dependencies, ArtifactName.ProxyReader);
- const proxyReader = await upgrades.upgradeProxy(ProxyReader.address, ctx.artifacts.ProxyReader, {
- unsafeAllow: ['delegatecall'],
- });
- await proxyReader.deployTransaction.wait();
+ const proxyReader = await upgrades.upgradeProxy(
+ ProxyReader.address,
+ await ethers.getContractFactory(ArtifactName.ProxyReader),
+ { unsafeAllow: ['delegatecall'] },
+ );
+ await proxyReader.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const proxyReaderImpl = await proxyAdmin.callStatic.getProxyImplementation(proxyReader.address);
+ const proxyReaderImpl = await proxyAdmin.getProxyImplementation.staticCall(proxyReader.address);
await ctx.saveContractConfig(UnsContractName.ProxyReader, proxyReader, proxyReaderImpl);
await verify(ctx, proxyReaderImpl, []);
@@ -513,13 +528,16 @@ const upgradeUNSOperatorTask: Task = {
run: async (ctx: Deployer, dependencies: DependenciesMap) => {
const UNSOperator = unwrap(dependencies, ArtifactName.UNSOperator);
- const unsOperator = await upgrades.upgradeProxy(UNSOperator.address, ctx.artifacts.UNSOperator);
- await unsOperator.deployTransaction.wait();
+ const unsOperator = await upgrades.upgradeProxy(
+ UNSOperator.address,
+ await ethers.getContractFactory(ArtifactName.UNSOperator),
+ );
+ await unsOperator.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const unsOperatorImpl = await proxyAdmin.callStatic.getProxyImplementation(unsOperator.address);
+ const unsOperatorImpl = await proxyAdmin.getProxyImplementation.staticCall(unsOperator.address);
await ctx.saveContractConfig(UnsContractName.UNSOperator, unsOperator, unsOperatorImpl);
await verify(ctx, unsOperatorImpl, []);
@@ -543,20 +561,24 @@ const proposeUNSRegistryTask: Task = {
throw new Error('Version parameter is not provided');
}
- if(!ctx.multisig) {
+ if (!ctx.multisig) {
throw new Error('Multisig address is not provided');
}
ctx.log('Preparing proposal...');
- const proposal = await defender.proposeUpgrade(UNSRegistry.address, ctx.artifacts.UNSRegistry, {
- title: `Propose UNSRegistry to v${version}`,
- multisig: ctx.multisig,
- unsafeAllow: ['delegatecall'],
- });
+ const proposal = await defender.proposeUpgrade(
+ UNSRegistry.address,
+ await ethers.getContractFactory(ArtifactName.UNSRegistry),
+ {
+ title: `Propose UNSRegistry to v${version}`,
+ multisig: ctx.multisig,
+ unsafeAllow: ['delegatecall'],
+ },
+ );
if (proposal.metadata?.newImplementationAddress) {
await ctx.saveContractConfig(
UnsContractName.UNSRegistry,
- ctx.artifacts.UNSRegistry.attach(UNSRegistry.address),
+ await ethers.getContractAt(ArtifactName.UNSRegistry, UNSRegistry.address),
proposal.metadata.newImplementationAddress,
);
await verify(ctx, proposal.metadata.newImplementationAddress, []);
@@ -582,19 +604,24 @@ const proposeMintingManagerTask: Task = {
throw new Error('Version parameter is not provided');
}
- if(!ctx.multisig) {
+ if (!ctx.multisig) {
throw new Error('Multisig address is not provided');
}
ctx.log('Preparing proposal...');
- const proposal = await defender.proposeUpgrade(MintingManager.address, ctx.artifacts.MintingManager, {
- title: `Propose MintingManager to v${version}`,
- multisig: ctx.multisig,
- });
+ const proposal = await defender.proposeUpgrade(
+ MintingManager.address,
+ await ethers.getContractFactory(ArtifactName.MintingManager),
+ {
+ title: `Propose MintingManager to v${version}`,
+ multisig: ctx.multisig,
+ },
+ );
+
if (proposal.metadata?.newImplementationAddress) {
await ctx.saveContractConfig(
UnsContractName.MintingManager,
- ctx.artifacts.MintingManager.attach(MintingManager.address),
+ await ethers.getContractAt(ArtifactName.MintingManager, MintingManager.address),
proposal.metadata.newImplementationAddress,
);
await verify(ctx, proposal.metadata.newImplementationAddress, []);
@@ -620,20 +647,24 @@ const proposeProxyReaderTask: Task = {
throw new Error('Version parameter is not provided');
}
- if(!ctx.multisig) {
+ if (!ctx.multisig) {
throw new Error('Multisig address is not provided');
}
ctx.log('Preparing proposal...');
- const proposal = await defender.proposeUpgrade(ProxyReader.address, ctx.artifacts.ProxyReader, {
- title: `Propose ProxyReader to v${version}`,
- multisig: ctx.multisig,
- unsafeAllow: ['delegatecall'],
- });
+ const proposal = await defender.proposeUpgrade(
+ ProxyReader.address,
+ await ethers.getContractFactory(ArtifactName.ProxyReader),
+ {
+ title: `Propose ProxyReader to v${version}`,
+ multisig: ctx.multisig,
+ unsafeAllow: ['delegatecall'],
+ },
+ );
if (proposal.metadata?.newImplementationAddress) {
await ctx.saveContractConfig(
UnsContractName.ProxyReader,
- ctx.artifacts.ProxyReader.attach(ProxyReader.address),
+ await ethers.getContractAt(ArtifactName.ProxyReader, ProxyReader.address),
proposal.metadata.newImplementationAddress,
);
await verify(ctx, proposal.metadata.newImplementationAddress, []);
@@ -658,19 +689,19 @@ const deployPolygonPosBridgeTask: Task = {
run: async (ctx: Deployer) => {
const { owner } = ctx.accounts;
- const stateSender = await ctx.artifacts.DummyStateSender.connect(owner).deploy();
- const checkpointManager = await ctx.artifacts[ArtifactName.CheckpointManager].connect(owner).deploy();
+ const stateSender = await ethers.deployContract(ArtifactName.DummyStateSender, [], owner);
+ const checkpointManager = await ethers.deployContract(ArtifactName.CheckpointManager, [], owner);
// deploy Predicate
- const predicate = await ctx.artifacts.MintableERC721Predicate.connect(owner).deploy();
+ const predicate = await ethers.deployContract(ArtifactName.MintableERC721Predicate, [], owner);
await predicate.initialize(owner.address);
await ctx.saveContractConfig(UnsContractName.MintableERC721Predicate, predicate);
// deploy RootChainManager
- const rootChainManager = await ctx.artifacts.RootChainManager.connect(owner).deploy();
+ const rootChainManager = await ethers.deployContract(ArtifactName.RootChainManager, [], owner);
await rootChainManager.initialize(owner.address);
- await rootChainManager.setCheckpointManager(checkpointManager.address);
- await rootChainManager.setStateSender(stateSender.address);
+ await rootChainManager.setCheckpointManager(await checkpointManager.getAddress());
+ await rootChainManager.setStateSender(await stateSender.getAddress());
await ctx.saveContractConfig(UnsContractName.RootChainManager, rootChainManager);
},
ensureDependencies: () => ({}),
@@ -683,19 +714,23 @@ const configurePolygonPosBridgeTask: Task = {
const { owner } = ctx.accounts;
const [UNSRegistry, MintableERC721Predicate, RootChainManager] = unwrapDependencies(dependencies, [
- ArtifactName.UNSRegistry,
- ArtifactName.MintableERC721Predicate,
- ArtifactName.RootChainManager,
+ UnsContractName.UNSRegistry,
+ UnsContractName.MintableERC721Predicate,
+ UnsContractName.RootChainManager,
]);
- const rootChainManager = ctx.artifacts.RootChainManager.attach(RootChainManager.address).connect(owner);
+ const rootChainManager = await ethers.getContractAt(ArtifactName.RootChainManager, RootChainManager.address, owner);
- const tokenType = utils.keccak256(UNSRegistry.address);
+ const tokenType = keccak256(UNSRegistry.address);
await rootChainManager.registerPredicate(tokenType, MintableERC721Predicate.address);
await rootChainManager.mapToken(UNSRegistry.address, UNSRegistry.address, tokenType);
- const predicate = ctx.artifacts.MintableERC721Predicate.attach(MintableERC721Predicate.address).connect(owner);
- await predicate.grantRole(await predicate.MANAGER_ROLE(), rootChainManager.address);
+ const predicate = await ethers.getContractAt(
+ ArtifactName.MintableERC721Predicate,
+ MintableERC721Predicate.address,
+ owner,
+ );
+ await predicate.grantRole(await predicate.MANAGER_ROLE(), await rootChainManager.getAddress());
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig) => {
config = merge(ctx.getDeployConfig(), config);
@@ -716,10 +751,10 @@ const deployDotCoinBurnerTask: Task = {
const { owner } = ctx.accounts;
const UNSRegistry = unwrap(dependencies, ArtifactName.UNSRegistry);
- const dotCoinBurner = await ctx.artifacts.DotCoinBurner.connect(owner).deploy(UNSRegistry.address);
+ const dotCoinBurner = await ethers.deployContract(ArtifactName.DotCoinBurner, [UNSRegistry.address], owner);
await ctx.saveContractConfig(UnsContractName.DotCoinBurner, dotCoinBurner);
- await dotCoinBurner.deployTransaction.wait();
- await verify(ctx, dotCoinBurner.address, [UNSRegistry.address]);
+ await dotCoinBurner.waitForDeployment();
+ await verify(ctx, await dotCoinBurner.getAddress(), [UNSRegistry.address]);
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig) => {
config = merge(ctx.getDeployConfig(), config);
@@ -734,25 +769,27 @@ const prepareProxyReaderTask: Task = {
run: async (ctx: Deployer, dependencies: DependenciesMap) => {
const ProxyReader = unwrap(dependencies, ArtifactName.ProxyReader);
- const newImplementationAddr = (await upgrades.prepareUpgrade(ProxyReader.address, ctx.artifacts.ProxyReader, {
- unsafeAllow: ['delegatecall'],
- })) as string;
+ const newImplementationAddr = (await upgrades.prepareUpgrade(
+ ProxyReader.address,
+ await ethers.getContractFactory(ArtifactName.ProxyReader),
+ { unsafeAllow: ['delegatecall'] },
+ )) as string;
ctx.log('Deployed ProxyReader implementation: ', newImplementationAddr);
- if (newImplementationAddr) {
- await ctx.saveContractConfig(
- UnsContractName.ProxyReader,
- ctx.artifacts.ProxyReader.attach(ProxyReader.address),
- newImplementationAddr,
- );
- await verify(ctx, newImplementationAddr, []);
+ if (!newImplementationAddr) {
+ ctx.log('Implementation not deployed... Skipping');
+ return;
}
+ const proxyReader = await ethers.getContractAt(ArtifactName.ProxyReader, ProxyReader.address);
+
+ await ctx.saveContractConfig(UnsContractName.ProxyReader, proxyReader, newImplementationAddr);
+ await verify(ctx, newImplementationAddr, []);
const { owner } = ctx.accounts;
- const callData = ctx.artifacts.ProxyReader.interface.encodeFunctionData('setOwner(address)', [owner.address]);
+ const callData = proxyReader.interface.encodeFunctionData('setOwner(address)', [owner.address]);
- console.log(`setOwner encoded data(owner ${newImplementationAddr}): ${callData}`);
+ ctx.log(`setOwner encoded data(owner ${newImplementationAddr}): ${callData}`);
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig) => {
config = merge(ctx.getDeployConfig(), config);
@@ -768,70 +805,96 @@ const deployENSTask = {
run: async (ctx: Deployer) => {
const { owner } = ctx.accounts;
- const ens = await ctx.artifacts[ArtifactName.ENSRegistry].connect(owner).deploy();
+ const ens = await ethers.deployContract(ArtifactName.ENSRegistry, [], owner);
await ctx.saveContractConfig(EnsContractName.ENSRegistry, ens);
- const baseRegistrar = await ctx.artifacts[ArtifactName.BaseRegistrarImplementation]
- .connect(owner)
- .deploy(ens.address, namehash('eth'));
+ const baseRegistrar = await ethers.deployContract(
+ ArtifactName.BaseRegistrarImplementation,
+ [await ens.getAddress(), namehash('eth')],
+ owner,
+ );
await ctx.saveContractConfig(EnsContractName.BaseRegistrarImplementation, baseRegistrar);
- const reverseRegistrar = await ctx.artifacts[ArtifactName.ReverseRegistrar].connect(owner).deploy(ens.address);
+ const reverseRegistrar = await ethers.deployContract(
+ ArtifactName.ReverseRegistrar,
+ [await ens.getAddress()],
+ owner,
+ );
await ctx.saveContractConfig(EnsContractName.ReverseRegistrar, reverseRegistrar);
await ens.setSubnodeOwner(ZERO_WORD, notNullSha('reverse'), await owner.getAddress());
- await ens.setSubnodeOwner(namehash('reverse'), notNullSha('addr'), reverseRegistrar.address);
+ await ens.setSubnodeOwner(namehash('reverse'), notNullSha('addr'), await reverseRegistrar.getAddress());
- const nameWrapper = await ctx.artifacts[ArtifactName.NameWrapper]
- .connect(owner)
- .deploy(ens.address, baseRegistrar.address, await owner.getAddress());
+ const nameWrapper = await ethers.deployContract(
+ ArtifactName.NameWrapper,
+ [await ens.getAddress(), await baseRegistrar.getAddress(), await owner.getAddress()],
+ owner,
+ );
await ctx.saveContractConfig(EnsContractName.NameWrapper, nameWrapper);
- await ens.setSubnodeOwner(ZERO_WORD, notNullSha('eth'), baseRegistrar.address);
+ await ens.setSubnodeOwner(ZERO_WORD, notNullSha('eth'), await baseRegistrar.getAddress());
- const dummyOracle = await ctx.artifacts[ArtifactName.DummyOracle].connect(owner).deploy('100000000');
+ const dummyOracle = await ethers.deployContract(ArtifactName.DummyOracle, ['100000000'], owner);
await ctx.saveContractConfig(EnsContractName.DummyOracle, dummyOracle);
- const priceOracle = await ctx.artifacts[ArtifactName.StablePriceOracle]
- .connect(owner)
- .deploy(dummyOracle.address, [0, 0, 4, 2, 1]);
+ const priceOracle = await ethers.deployContract(
+ ArtifactName.StablePriceOracle,
+ [await dummyOracle.getAddress(), [0, 0, 4, 2, 1]],
+ owner,
+ );
await ctx.saveContractConfig(EnsContractName.StablePriceOracle, priceOracle);
- const controller = await ctx.artifacts[ArtifactName.ETHRegistrarController]
- .connect(owner)
- .deploy(
- baseRegistrar.address,
- priceOracle.address,
- 600,
- 86400,
- reverseRegistrar.address,
- nameWrapper.address,
- ens.address,
- );
+ const controller = await ethers.deployContract(ArtifactName.ETHRegistrarController, [
+ await baseRegistrar.getAddress(),
+ await priceOracle.getAddress(),
+ 600,
+ 86400,
+ await reverseRegistrar.getAddress(),
+ await nameWrapper.getAddress(),
+ await ens.getAddress(),
+ ]);
await ctx.saveContractConfig(EnsContractName.ETHRegistrarController, controller);
- const legacyController = await ctx.artifacts[ArtifactName.LegacyETHRegistrarController]
- .connect(owner)
- .deploy(baseRegistrar.address, priceOracle.address, 600, 86400);
+ const legacyController = await ethers.deployContract(
+ ArtifactName.LegacyETHRegistrarController,
+ [await baseRegistrar.getAddress(), await priceOracle.getAddress(), 600, 86400],
+ owner,
+ );
await ctx.saveContractConfig(EnsContractName.LegacyETHRegistrarController, legacyController);
- await nameWrapper.setController(controller.address, true);
- await nameWrapper.setController(legacyController.address, true);
- await baseRegistrar.addController(nameWrapper.address);
- await baseRegistrar.addController(controller.address);
- await baseRegistrar.addController(legacyController.address);
- await reverseRegistrar.setController(controller.address, true);
- await reverseRegistrar.setController(legacyController.address, true);
- const resolver = await ctx.artifacts[ArtifactName.PublicResolver]
- .connect(owner)
- .deploy(ens.address, nameWrapper.address, controller.address, reverseRegistrar.address);
+ await nameWrapper.setController(await controller.getAddress(), true);
+ await nameWrapper.setController(await legacyController.getAddress(), true);
+ await baseRegistrar.addController(await nameWrapper.getAddress());
+ await baseRegistrar.addController(await controller.getAddress());
+ await baseRegistrar.addController(await legacyController.getAddress());
+ await reverseRegistrar.setController(await controller.getAddress(), true);
+ await reverseRegistrar.setController(await legacyController.getAddress(), true);
+
+ const resolver = await ethers.deployContract(
+ ArtifactName.PublicResolver,
+ [
+ await ens.getAddress(),
+ await nameWrapper.getAddress(),
+ await controller.getAddress(),
+ await reverseRegistrar.getAddress(),
+ ],
+ owner,
+ );
+
await ctx.saveContractConfig(EnsContractName.PublicResolver, resolver);
- const legacyResolver = await ctx.artifacts[ArtifactName.PublicResolver]
- .connect(owner)
- .deploy(ens.address, nameWrapper.address, controller.address, reverseRegistrar.address);
- await ctx.saveContractLegacyAddresses(EnsContractName.PublicResolver, [legacyResolver.address]);
- await reverseRegistrar.setDefaultResolver(resolver.address);
- const legacyEnsRegistry = await ctx.artifacts[ArtifactName.LegacyENSRegistry].connect(owner).deploy();
+ const legacyResolver = await ethers.deployContract(
+ ArtifactName.PublicResolver,
+ [
+ await ens.getAddress(),
+ await nameWrapper.getAddress(),
+ await controller.getAddress(),
+ await reverseRegistrar.getAddress(),
+ ],
+ owner,
+ );
+ await ctx.saveContractLegacyAddresses(EnsContractName.PublicResolver, [await legacyResolver.getAddress()]);
+ await reverseRegistrar.setDefaultResolver(await resolver.getAddress());
+ const legacyEnsRegistry = await ethers.deployContract(ArtifactName.LegacyENSRegistry, [], owner);
await legacyEnsRegistry.setSubnodeOwner(ZERO_WORD, notNullSha('eth'), await owner.getAddress());
await ctx.saveContractConfig(EnsContractName.LegacyENSRegistry, legacyEnsRegistry);
@@ -847,36 +910,38 @@ const deployENSTask = {
[ArtifactName.SHA1NSEC3Digest]: 1,
};
const algorithmsAndDigests = {
- [ArtifactName.RSASHA256Algorithm]: await ctx.artifacts[ArtifactName.RSASHA256Algorithm].connect(owner).deploy(),
- [ArtifactName.DummyAlgorithm]: await ctx.artifacts[ArtifactName.DummyAlgorithm].connect(owner).deploy(),
- [ArtifactName.SHA256Digest]: await ctx.artifacts[ArtifactName.SHA256Digest].connect(owner).deploy(),
- [ArtifactName.SHA1Digest]: await ctx.artifacts[ArtifactName.SHA1Digest].connect(owner).deploy(),
- [ArtifactName.SHA1NSEC3Digest]: await ctx.artifacts[ArtifactName.SHA1NSEC3Digest].connect(owner).deploy(),
+ [ArtifactName.RSASHA256Algorithm]: await ethers.deployContract(ArtifactName.RSASHA256Algorithm, [], owner),
+ [ArtifactName.DummyAlgorithm]: await ethers.deployContract(ArtifactName.DummyAlgorithm, [], owner),
+ [ArtifactName.SHA256Digest]: await ethers.deployContract(ArtifactName.SHA256Digest, [], owner),
+ [ArtifactName.SHA1Digest]: await ethers.deployContract(ArtifactName.SHA1Digest, [], owner),
+ [ArtifactName.SHA1NSEC3Digest]: await ethers.deployContract(ArtifactName.SHA1NSEC3Digest, [], owner),
};
const rootTrustAnchors =
// eslint-disable-next-line max-len
'0x00002b000100000e1000244a5c080249aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb500002b000100000e1000244f660802e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d';
- const dnssecOracle = await ctx.artifacts[ArtifactName.DNSSECImpl].connect(owner).deploy(rootTrustAnchors);
+ const dnssecOracle = await ethers.deployContract(ArtifactName.DNSSECImpl, [rootTrustAnchors], owner);
for (const [algorithm, id] of Object.entries(algorithmsIds)) {
- await dnssecOracle.setAlgorithm(id, algorithmsAndDigests[algorithm].address);
+ await dnssecOracle.setAlgorithm(id, await algorithmsAndDigests[algorithm].getAddress());
}
for (const [digest, id] of Object.entries(digestsIds)) {
- await dnssecOracle.setDigest(id, algorithmsAndDigests[digest].address);
+ await dnssecOracle.setDigest(id, await algorithmsAndDigests[digest].getAddress());
}
for (const [nSecDigest, id] of Object.entries(nSecDigestsIds)) {
- await dnssecOracle.setNSEC3Digest(id, algorithmsAndDigests[nSecDigest].address);
+ await dnssecOracle.setNSEC3Digest(id, await algorithmsAndDigests[nSecDigest].getAddress());
}
await ctx.saveContractConfig(EnsContractName.DNSSECImpl, dnssecOracle);
- const tldPublicSuffixList = await ctx.artifacts[ArtifactName.TLDPublicSuffixList].connect(owner).deploy();
- const dnsRegistrar = await ctx.artifacts[ArtifactName.DNSRegistrar]
- .connect(owner)
- .deploy(dnssecOracle.address, tldPublicSuffixList.address, ens.address);
- const root = await ctx.artifacts[ArtifactName.Root].connect(owner).deploy(ens.address);
+ const tldPublicSuffixList = await ethers.deployContract(ArtifactName.TLDPublicSuffixList, [], owner);
+ const dnsRegistrar = await ethers.deployContract(ArtifactName.DNSRegistrar, [
+ await dnssecOracle.getAddress(),
+ await tldPublicSuffixList.getAddress(),
+ await ens.getAddress(),
+ ]);
+ const root = await ethers.deployContract(ArtifactName.Root, [await ens.getAddress()], owner);
await ctx.saveContractConfig(EnsContractName.Root, root);
- await root.setController(dnsRegistrar.address, true);
- await root.setController(owner.address, true);
- await ens.setOwner(ZERO_WORD, root.address);
+ await root.setController(await dnsRegistrar.getAddress(), true);
+ await root.setController(await owner.getAddress(), true);
+ await ens.setOwner(ZERO_WORD, await root.getAddress());
await ctx.saveContractConfig(EnsContractName.DNSRegistrar, dnsRegistrar);
},
ensureDependencies: () => ({}),
@@ -889,22 +954,22 @@ const deployENSCustodyTask: Task = {
const { owner } = ctx.accounts;
const [ETHRegistrarController, NameWrapper, BaseRegistrarImplementation] = unwrapDependencies(dependencies, [
- ArtifactName.ETHRegistrarController,
- ArtifactName.NameWrapper,
- ArtifactName.BaseRegistrarImplementation,
+ EnsContractName.ETHRegistrarController,
+ EnsContractName.NameWrapper,
+ EnsContractName.BaseRegistrarImplementation,
]);
- const custody = await upgrades.deployProxy(ctx.artifacts.ENSCustody.connect(owner), [
+ const custody = await deployProxy(await ethers.getContractFactory(ArtifactName.ENSCustody, owner), [
ETHRegistrarController.address,
NameWrapper.address,
BaseRegistrarImplementation.address,
]);
- await custody.deployTransaction.wait();
+ await custody.waitForDeployment();
const proxyAdmin = await upgrades.admin.getInstance();
await ctx.saveContractConfig(UnsContractName.ProxyAdmin, proxyAdmin);
- const custodyImpl = await proxyAdmin.callStatic.getProxyImplementation(custody.address);
+ const custodyImpl = await proxyAdmin.getProxyImplementation.staticCall(await custody.getAddress());
await ctx.saveContractConfig(EnsContractName.ENSCustody, custody, custodyImpl, custody);
await verify(ctx, custodyImpl, []);
@@ -943,19 +1008,24 @@ const proposeENSCustodyTask: Task = {
throw new Error('Version parameter is not provided');
}
- if(!ctx.multisig) {
+ if (!ctx.multisig) {
throw new Error('Multisig address is not provided');
}
ctx.log('Preparing proposal...');
- const proposal = await defender.proposeUpgrade(ENSCustody.address, ctx.artifacts.ENSCustody, {
- title: `Propose ENSCustody to v${version}`,
- multisig: ctx.multisig,
- });
+ const proposal = await defender.proposeUpgrade(
+ ENSCustody.address,
+ await ethers.getContractFactory(ArtifactName.ENSCustody),
+ {
+ title: `Propose ENSCustody to v${version}`,
+ multisig: ctx.multisig,
+ },
+ );
+
if (proposal.metadata?.newImplementationAddress) {
await ctx.saveContractConfig(
EnsContractName.ENSCustody,
- ctx.artifacts.ENSCustody.attach(ENSCustody.address),
+ await ethers.getContractAt(ArtifactName.ENSCustody, ENSCustody.address),
proposal.metadata.newImplementationAddress,
);
await verify(ctx, proposal.metadata.newImplementationAddress, []);
@@ -980,10 +1050,9 @@ const fundENSCustodyTask: Task = {
throw new Error('This task is only available for sandbox');
}
- const [ENSCustody] = unwrapDependencies(dependencies, [ArtifactName.ENSCustody]);
- const custody = ctx.artifacts.MintingManager.attach(ENSCustody.address);
+ const [ENSCustody] = unwrapDependencies(dependencies, [EnsContractName.ENSCustody]);
- await owner.sendTransaction({ to: custody.address, value: utils.parseEther('10') });
+ await owner.sendTransaction({ to: ENSCustody.address, value: parseEther('10') });
},
ensureDependencies: (ctx: Deployer, config?: NsNetworkConfig): DependenciesMap => {
config = merge(ctx.getDeployConfig(), config);
diff --git a/src/types.ts b/src/types.ts
index 60c32a44..774c7e38 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,22 +1,27 @@
+
+/**
+ * values are paths the specific contracts
+ */
export enum ArtifactName {
CNSRegistry = 'CNSRegistry',
CNSRegistryForwarder = 'CNSRegistryForwarder',
SignatureController = 'SignatureController',
MintingController = 'MintingController',
URIPrefixController = 'URIPrefixController',
- Resolver = 'Resolver',
+ Resolver = 'dot-crypto/contracts/Resolver.sol:Resolver',
ResolverForwarder = 'ResolverForwarder',
UNSRegistry = 'UNSRegistry',
MintingManager = 'MintingManager',
UNSOperator = 'UNSOperator',
MintingManagerForwarder = 'MintingManagerForwarder',
- ProxyReader = 'ProxyReader',
+ ProxyReader = 'contracts/ProxyReader.sol:ProxyReader',
DummyStateSender = 'DummyStateSender',
CheckpointManager = 'SimpleCheckpointManager',
MintableERC721Predicate = 'MintableERC721Predicate',
RootChainManager = 'RootChainManager',
DotCoinBurner = 'DotCoinBurner',
ZilliqaRecover = 'ZilliqaRecover',
+
// ENS
ENSRegistry = 'ENSRegistry',
BaseRegistrarImplementation = 'BaseRegistrarImplementation',
diff --git a/src/utils.ts b/src/utils.ts
new file mode 100644
index 00000000..4c1e5ae3
--- /dev/null
+++ b/src/utils.ts
@@ -0,0 +1,24 @@
+import { sha3 } from 'web3-utils';
+import type { ContractConfig, ContractName, DependenciesMap } from './types';
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export function unwrap (object: object, key: string): any {
+ if (!object[key]) {
+ throw new Error(`Unwrap: cannot find key ${key} on object ${object.toString()}`);
+ }
+
+ return object[key];
+}
+
+export function unwrapDependencies (dependencies: DependenciesMap, keys: ContractName[]): ContractConfig[] {
+ return keys.map((key) => unwrap(dependencies, key));
+}
+
+export function notNullSha (value: string) {
+ const res = sha3(value);
+ if (!res) {
+ throw new Error('notNullSha: SHA returns null');
+ }
+
+ return res;
+}
diff --git a/test/ChildRegistry.test.ts b/test/ChildRegistry.test.ts
index d7fb568a..ba4a6df6 100644
--- a/test/ChildRegistry.test.ts
+++ b/test/ChildRegistry.test.ts
@@ -1,15 +1,12 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { utils } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { AbiCoder, keccak256 } from 'ethers';
import { MintingManager, UNSRegistry } from '../types/contracts';
import { RootChainManager } from '../types/contracts/@maticnetwork/pos-portal/RootChainManager.sol';
import { MintableERC721Predicate } from '../types/contracts/@maticnetwork/pos-portal/MintableERC721Predicate.sol';
import { DummyStateSender } from '../types/contracts/@maticnetwork/pos-portal/DummyStateSender.sol';
-import {
- MintingManager__factory,
- UNSRegistry__factory,
-} from '../types/factories/contracts';
+import { MintingManager__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { DummyStateSender__factory } from '../types/factories/contracts/@maticnetwork/pos-portal/DummyStateSender.sol';
import { MintableERC721Predicate__factory } from '../types/factories/contracts/@maticnetwork/pos-portal/MintableERC721Predicate.sol';
import { RootChainManager__factory } from '../types/factories/contracts/@maticnetwork/pos-portal/RootChainManager.sol';
@@ -28,58 +25,53 @@ describe('ChildRegistry', () => {
predicateOwner: SignerWithAddress,
owner: SignerWithAddress;
- const abiCoder = new utils.AbiCoder();
+ const abiCoder = new AbiCoder();
before(async () => {
- [registryOwner, rcmOwner, predicateOwner, owner] =
- await ethers.getSigners();
+ [registryOwner, rcmOwner, predicateOwner, owner] = await ethers.getSigners();
- l1UnsRegistry = (
- await new UNSRegistry__factory(registryOwner).deploy()
- ).connect(registryOwner);
+ l1UnsRegistry = (await new UNSRegistry__factory(registryOwner).deploy()).connect(registryOwner);
mintingManager = await new MintingManager__factory(registryOwner).deploy();
- l2UnsRegistry = (
- await new UNSRegistry__factory(registryOwner).deploy()
- ).connect(registryOwner);
+ l2UnsRegistry = (await new UNSRegistry__factory(registryOwner).deploy()).connect(registryOwner);
// deploy state sender
stateSender = await new DummyStateSender__factory(registryOwner).deploy();
// deploy and init predicate
- predicate = (
- await new MintableERC721Predicate__factory(registryOwner).deploy()
- ).connect(predicateOwner);
+ predicate = (await new MintableERC721Predicate__factory(registryOwner).deploy()).connect(predicateOwner);
await predicate.initialize(predicateOwner.address);
// deploy and setup root chain manager
- rootChainManager = (
- await new RootChainManager__factory(registryOwner).deploy()
- ).connect(rcmOwner);
+ rootChainManager = (await new RootChainManager__factory(registryOwner).deploy()).connect(rcmOwner);
await rootChainManager.initialize(rcmOwner.address);
- await rootChainManager.setStateSender(stateSender.address);
- await rootChainManager.registerPredicate(
- utils.keccak256(l1UnsRegistry.address),
- predicate.address,
- );
+ await rootChainManager.setStateSender(await stateSender.getAddress());
+ await rootChainManager.registerPredicate(keccak256(await l1UnsRegistry.getAddress()), await predicate.getAddress());
await rootChainManager.mapToken(
- l1UnsRegistry.address,
- l2UnsRegistry.address,
- utils.keccak256(l1UnsRegistry.address),
- );
- await predicate.grantRole(
- await predicate.MANAGER_ROLE(),
- rootChainManager.address,
+ await l1UnsRegistry.getAddress(),
+ await l2UnsRegistry.getAddress(),
+ keccak256(await l1UnsRegistry.getAddress()),
);
+ await predicate.grantRole(await predicate.MANAGER_ROLE(), await rootChainManager.getAddress());
// post-configuration
- await l1UnsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, rootChainManager.address, ZERO_ADDRESS);
+ await l1UnsRegistry.initialize(
+ await mintingManager.getAddress(),
+ ZERO_ADDRESS,
+ await rootChainManager.getAddress(),
+ ZERO_ADDRESS,
+ );
- await l2UnsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, registryOwner.address);
+ await l2UnsRegistry.initialize(
+ await mintingManager.getAddress(),
+ ZERO_ADDRESS,
+ ZERO_ADDRESS,
+ await registryOwner.getAddress(),
+ );
await mintingManager.initialize(
- l2UnsRegistry.address,
+ await l2UnsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -93,9 +85,7 @@ describe('ChildRegistry', () => {
let tempL2UnsRegistry: UNSRegistry;
beforeEach(async () => {
- tempL2UnsRegistry = (
- await new UNSRegistry__factory(registryOwner).deploy()
- ).connect(registryOwner);
+ tempL2UnsRegistry = (await new UNSRegistry__factory(registryOwner).deploy()).connect(registryOwner);
await tempL2UnsRegistry.initialize(registryOwner.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
});
@@ -103,10 +93,7 @@ describe('ChildRegistry', () => {
const tokenId = await tempL2UnsRegistry.namehash(['l2-te1', 'crypto']);
await expect(
- tempL2UnsRegistry.deposit(
- owner.address,
- abiCoder.encode(['uint256'], [tokenId]),
- ),
+ tempL2UnsRegistry.deposit(owner.address, abiCoder.encode(['uint256'], [tokenId])),
).to.be.revertedWith('Registry: INSUFFICIENT_PERMISSIONS');
});
});
@@ -115,12 +102,7 @@ describe('ChildRegistry', () => {
it('should deposit one token', async () => {
const tokenId = await l2UnsRegistry.namehash(['l2-aq1', 'crypto']);
- await expect(
- l2UnsRegistry.deposit(
- owner.address,
- abiCoder.encode(['uint256'], [tokenId]),
- ),
- )
+ await expect(l2UnsRegistry.deposit(owner.address, abiCoder.encode(['uint256'], [tokenId])))
.to.emit(l2UnsRegistry, 'Transfer')
.withArgs(ZERO_ADDRESS, owner.address, tokenId);
expect(await l2UnsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
@@ -130,12 +112,7 @@ describe('ChildRegistry', () => {
const tokenId1 = await l2UnsRegistry.namehash(['l2-eq1', 'crypto']);
const tokenId2 = await l2UnsRegistry.namehash(['l2-eq2', 'crypto']);
- await expect(
- l2UnsRegistry.deposit(
- owner.address,
- abiCoder.encode(['uint256[]'], [[tokenId1, tokenId2]]),
- ),
- )
+ await expect(l2UnsRegistry.deposit(owner.address, abiCoder.encode(['uint256[]'], [[tokenId1, tokenId2]])))
.to.emit(l2UnsRegistry, 'Transfer')
.withArgs(ZERO_ADDRESS, owner.address, tokenId1);
expect(await l2UnsRegistry.ownerOf(tokenId1)).to.be.equal(owner.address);
diff --git a/test/DotCoinBurner.test.ts b/test/DotCoinBurner.test.ts
index 23b53cc0..7500007c 100644
--- a/test/DotCoinBurner.test.ts
+++ b/test/DotCoinBurner.test.ts
@@ -1,17 +1,12 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { solidityKeccak256 } from 'ethers/lib/utils';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumber } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { solidityPackedKeccak256 } from 'ethers';
import { DotCoinBurner__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { DotCoinBurner, UNSRegistry } from '../types/contracts';
-import {
- TLD,
- DEAD_ADDRESS,
- ZERO_ADDRESS,
- EXPIRABLE_TLDS,
-} from './helpers/constants';
+import { TLD, DEAD_ADDRESS, ZERO_ADDRESS, EXPIRABLE_TLDS } from './helpers/constants';
import { mintDomain } from './helpers/registry';
+import { getLatestBlockTimestamp } from './helpers/utils';
describe('DotCoinBurner', () => {
let unsRegistry: UNSRegistry, dotCoinBurner: DotCoinBurner;
@@ -29,15 +24,15 @@ describe('DotCoinBurner', () => {
beforeEach(async () => {
// deploy Dot Coin Burner
- dotCoinBurner = await new DotCoinBurner__factory(coinbase).deploy(unsRegistry.address);
+ dotCoinBurner = await new DotCoinBurner__factory(coinbase).deploy(await unsRegistry.getAddress());
});
it('should emit BatchCompleted event', async () => {
- const mintedTokenIds: BigNumber[] = [];
+ const mintedTokenIds: bigint[] = [];
const labelHashes: string[] = [];
for (let i = 0; i < 10; i++) {
const label = `batch-completed-${i}`;
- labelHashes.push(solidityKeccak256(['string'], [label]));
+ labelHashes.push(solidityPackedKeccak256(['string'], [label]));
mintedTokenIds.push(
await mintDomain({
unsRegistry,
@@ -49,7 +44,7 @@ describe('DotCoinBurner', () => {
expect(mintedTokenIds).lengthOf(10);
const firstTokenId = mintedTokenIds[0];
const lastTokenId = mintedTokenIds[mintedTokenIds.length - 1];
- await unsRegistry.connect(accounts[0]).setApprovalForAll(dotCoinBurner.address, true);
+ await unsRegistry.connect(accounts[0]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
await expect(dotCoinBurner.burnAll(labelHashes))
.to.emit(dotCoinBurner, 'BatchCompleted')
.withArgs(firstTokenId, lastTokenId);
@@ -57,29 +52,28 @@ describe('DotCoinBurner', () => {
it('should emit correct BatchCompleted event for 1 domain', async () => {
const label = 'batch-completed-single-domain';
- const labelHash = solidityKeccak256(['string'], [label]);
+ const labelHash = solidityPackedKeccak256(['string'], [label]);
const mintedTokenId = await mintDomain({ unsRegistry, owner: accounts[0], labels: [label, 'coin'] });
- await unsRegistry.connect(accounts[0]).setApprovalForAll(dotCoinBurner.address, true);
+ await unsRegistry.connect(accounts[0]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
await expect(dotCoinBurner.burnAll([labelHash]))
.to.emit(dotCoinBurner, 'BatchCompleted')
.withArgs(mintedTokenId, mintedTokenId);
});
it('should not emit BatchCompleted event arguments are empty', async () => {
- await unsRegistry.connect(accounts[0]).setApprovalForAll(dotCoinBurner.address, true);
- await expect(dotCoinBurner.burnAll([]))
- .not.to.emit(dotCoinBurner, 'BatchCompleted');
+ await unsRegistry.connect(accounts[0]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
+ await expect(dotCoinBurner.burnAll([])).not.to.emit(dotCoinBurner, 'BatchCompleted');
});
it('should burn all passed domains from multiple owners', async () => {
- const mintedTokenIds: BigNumber[] = [];
+ const mintedTokenIds: bigint[] = [];
const labelHashes: string[] = [];
for (let i = 0; i < accounts.length; i++) {
const label = `multiple-owners-${i}`;
- labelHashes.push(solidityKeccak256(['string'], [label]));
+ labelHashes.push(solidityPackedKeccak256(['string'], [label]));
const tokenId = await mintDomain({ unsRegistry, owner: accounts[i], labels: [label, 'coin'] });
mintedTokenIds.push(tokenId);
- await unsRegistry.connect(accounts[i]).setApprovalForAll(dotCoinBurner.address, true);
+ await unsRegistry.connect(accounts[i]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(accounts[i].address);
}
await dotCoinBurner.burnAll(labelHashes);
@@ -91,64 +85,58 @@ describe('DotCoinBurner', () => {
});
it('should fail if domain has incorrect extension', async () => {
- await unsRegistry.setApprovalForAll(dotCoinBurner.address, true);
+ await unsRegistry.setApprovalForAll(await dotCoinBurner.getAddress(), true);
expect(TLD).to.be.not.empty;
- const latestBlock = await ethers.provider.getBlock('latest');
-
for (const tokenId in TLD) {
const extension = tokenId.toLowerCase();
const label = `incorrect-extension-${extension}`;
- const labelHash = solidityKeccak256(['string'], [label]);
+ const labelHash = solidityPackedKeccak256(['string'], [label]);
await mintDomain({
unsRegistry,
owner: coinbase,
labels: [label, extension],
- expiry: EXPIRABLE_TLDS.includes(extension) ? latestBlock.timestamp + 60 * 60 * 24 : 0,
+ expiry: EXPIRABLE_TLDS.includes(extension) ? (await getLatestBlockTimestamp()) + 60 * 60 * 24 : 0,
});
- await expect(dotCoinBurner.burnAll([labelHash]))
- .to.be.revertedWith('ERC721: invalid token ID');
+ await expect(dotCoinBurner.burnAll([labelHash])).to.be.revertedWith('ERC721: invalid token ID');
}
});
it('should fail if domain is not approved to spend', async () => {
const label = 'not-approved-domain-to-burn';
- const labelHash = solidityKeccak256(['string'], [label]);
+ const labelHash = solidityPackedKeccak256(['string'], [label]);
await mintDomain({ unsRegistry, owner: accounts[0], labels: [label, 'coin'] });
- await expect(dotCoinBurner.burnAll([labelHash]))
- .to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(dotCoinBurner.burnAll([labelHash])).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
});
it('should fail if 1 of multiple domains is not approved to spend', async () => {
const labelHashes: string[] = [];
for (let i = 0; i < accounts.length; i++) {
const label = `one-of-five-is-not-approved-${i}`;
- labelHashes.push(solidityKeccak256(['string'], [label]));
+ labelHashes.push(solidityPackedKeccak256(['string'], [label]));
await mintDomain({ unsRegistry, owner: accounts[i], labels: [label, 'coin'] });
- await unsRegistry.connect(accounts[i]).setApprovalForAll(dotCoinBurner.address, true);
+ await unsRegistry.connect(accounts[i]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
}
- await unsRegistry.connect(accounts[0]).setApprovalForAll(dotCoinBurner.address, false);
- await expect(dotCoinBurner.burnAll(labelHashes))
- .to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await unsRegistry.connect(accounts[0]).setApprovalForAll(await dotCoinBurner.getAddress(), false);
+ await expect(dotCoinBurner.burnAll(labelHashes)).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
});
it('should allow calling burn method from any account', async () => {
- const mintedTokenIds: BigNumber[] = [];
+ const mintedTokenIds: bigint[] = [];
for (let i = 0; i < accounts.length; i++) {
const label = `multiple-method-callers-${i}`;
- const labelHash = solidityKeccak256(['string'], [label]);
+ const labelHash = solidityPackedKeccak256(['string'], [label]);
const tokenId = await mintDomain({ unsRegistry, owner: accounts[i], labels: [label, 'coin'] });
mintedTokenIds.push(tokenId);
- await unsRegistry.connect(accounts[i]).setApprovalForAll(dotCoinBurner.address, true);
+ await unsRegistry.connect(accounts[i]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
// Ensure that caller is different from domain owner
await dotCoinBurner.connect(accounts[accounts.length - i - 1]).burnAll([labelHash]);
}
expect(mintedTokenIds).to.have.lengthOf(accounts.length);
for (let i = 0; i < mintedTokenIds.length; i++) {
- expect(await unsRegistry.ownerOf(mintedTokenIds[i]))
- .to.be.equal(DEAD_ADDRESS);
+ expect(await unsRegistry.ownerOf(mintedTokenIds[i])).to.be.equal(DEAD_ADDRESS);
}
});
});
diff --git a/test/MintingManager.metatx.test.ts b/test/MintingManager.metatx.test.ts
index 81bf7522..1927db3b 100644
--- a/test/MintingManager.metatx.test.ts
+++ b/test/MintingManager.metatx.test.ts
@@ -1,25 +1,23 @@
-import { ethers, network, upgrades } from 'hardhat';
+import { ethers, network } from 'hardhat';
import { expect } from 'chai';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { getBytes, parseEther, solidityPackedKeccak256 } from 'ethers';
import { MintingManager, UNSRegistry } from '../types/contracts';
import { MintingManagerForwarder } from '../types/contracts/metatx';
-import {
- MintingManager__factory,
- UNSRegistry__factory,
-} from '../types/factories/contracts';
+import { MintingManager__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { MintingManagerForwarder__factory } from '../types/factories/contracts/metatx';
import { ERC20Mock, ERC20Mock__factory } from '../types';
+import { deployProxy } from '../src/helpers';
import { buildExecuteFunc, ExecuteFunc } from './helpers/metatx';
import { ZERO_ADDRESS } from './helpers/constants';
+import { getLatestBlockTimestamp } from './helpers/utils';
describe('MintingManager (metatx)', () => {
let unsRegistry: UNSRegistry,
mintingManager: MintingManager,
forwarder: MintingManagerForwarder,
buildExecuteParams: ExecuteFunc;
- let signers: SignerWithAddress[],
- coinbase: SignerWithAddress,
- receiver: SignerWithAddress;
+ let signers: SignerWithAddress[], coinbase: SignerWithAddress, receiver: SignerWithAddress;
before(async () => {
signers = await ethers.getSigners();
@@ -29,33 +27,23 @@ describe('MintingManager (metatx)', () => {
beforeEach(async () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
- mintingManager = (await upgrades.deployProxy(
- new MintingManager__factory(coinbase),
- [],
- { initializer: false },
- )) as MintingManager;
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ mintingManager = await deployProxy(new MintingManager__factory(coinbase), [], { initializer: false });
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
- forwarder = await new MintingManagerForwarder__factory(coinbase).deploy(
- mintingManager.address,
- );
+ forwarder = await new MintingManagerForwarder__factory(coinbase).deploy(await mintingManager.getAddress());
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
- forwarder.address,
+ await forwarder.getAddress(),
);
- await mintingManager.addMinter(coinbase.address);
+ await mintingManager.addMinter(await coinbase.getAddress());
await mintingManager.setTokenURIPrefix('/');
- buildExecuteParams = buildExecuteFunc(
- mintingManager.interface,
- mintingManager.address,
- forwarder,
- );
+ buildExecuteParams = buildExecuteFunc(mintingManager.interface, await mintingManager.getAddress(), forwarder);
});
it('should mint through forwarder', async () => {
@@ -76,8 +64,7 @@ describe('MintingManager (metatx)', () => {
const labels = ['test-qw123-expirable', 'com'];
const tokenId = await unsRegistry.namehash(labels);
- const latestBlock = await ethers.provider.getBlock('latest');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = (await getLatestBlockTimestamp()) + 24 * 60 * 60;
const { req, signature } = await buildExecuteParams(
'issueExpirableWithRecords(address,string[],string[],string[],uint64,bool)',
@@ -95,18 +82,10 @@ describe('MintingManager (metatx)', () => {
it('should renew expirable through forwarder', async () => {
const labels = ['test-qw123-expirable-renew', 'com'];
const tokenId = await unsRegistry.namehash(labels);
- const latestBlock = await ethers.provider.getBlock('latest');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = (await getLatestBlockTimestamp()) + 24 * 60 * 60;
- await mintingManager.issueExpirableWithRecords(
- receiver.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ await mintingManager.issueExpirableWithRecords(receiver.address, labels, [], [], expiry, true);
const newExpiry = expiry + 24 * 60 * 60;
@@ -125,35 +104,21 @@ describe('MintingManager (metatx)', () => {
it('should revoke expirable through forwarder', async () => {
const labels = ['test-qw123-expirable-revoke', 'com'];
const tokenId = await unsRegistry.namehash(labels);
- const latestBlock = await ethers.provider.getBlock('latest');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = (await getLatestBlockTimestamp()) + 24 * 60 * 60;
- await mintingManager.issueExpirableWithRecords(
- receiver.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ await mintingManager.issueExpirableWithRecords(receiver.address, labels, [], [], expiry, true);
- const { req, signature } = await buildExecuteParams(
- 'revoke(uint256)',
- [tokenId],
- coinbase,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('revoke(uint256)', [tokenId], coinbase, tokenId);
await forwarder.execute(req, signature);
- expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(mintingManager.address);
+ expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(await mintingManager.getAddress());
});
it('should be able to buy domain with ERC20 tokens', async () => {
- const latestBlock = await ethers.provider.getBlock('latest');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const expiry = (await getLatestBlockTimestamp()) + 24 * 60 * 60;
+ const price = parseEther('5');
const erc20Mock: ERC20Mock = await new ERC20Mock__factory(coinbase).deploy();
await erc20Mock.mint(receiver.address, price);
@@ -161,19 +126,27 @@ describe('MintingManager (metatx)', () => {
const labels = ['test-erc20-onchain-purchase-metatx', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- await erc20Mock.connect(receiver).approve(mintingManager.address, price);
+ await erc20Mock.connect(receiver).approve(await mintingManager.getAddress(), price);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = getBytes(
+ solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, network.config.chainId, receiver.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ network.config.chainId,
+ receiver.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
const metaTxParams = await buildExecuteParams(
'buyForErc20(address,string[],string[],string[],uint64,address,uint256,bytes)',
- [receiver.address, labels, [], [], expiry, erc20Mock.address, price, signature],
+ [receiver.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature],
receiver,
tokenId,
);
@@ -194,9 +167,7 @@ describe('MintingManager (metatx)', () => {
await mintingManager.setForwarder(ZERO_ADDRESS);
- await expect(forwarder.execute(req, signature)).to.be.revertedWith(
- 'MintingManager: CALLER_IS_NOT_MINTER',
- );
+ await expect(forwarder.execute(req, signature)).to.be.revertedWith('MintingManager: CALLER_IS_NOT_MINTER');
});
it('should revert execution when signature is not valid', async () => {
@@ -208,9 +179,9 @@ describe('MintingManager (metatx)', () => {
tokenId,
);
- await expect(
- forwarder.execute({ ...req, from: receiver.address }, signature),
- ).to.be.revertedWith('MintingManagerForwarder: SIGNATURE_INVALID');
+ await expect(forwarder.execute({ ...req, from: receiver.address }, signature)).to.be.revertedWith(
+ 'MintingManagerForwarder: SIGNATURE_INVALID',
+ );
});
it('should revert execution when used signature', async () => {
@@ -224,8 +195,6 @@ describe('MintingManager (metatx)', () => {
await forwarder.execute(req, signature);
- await expect(forwarder.execute(req, signature)).to.be.revertedWith(
- 'MintingManagerForwarder: SIGNATURE_INVALID',
- );
+ await expect(forwarder.execute(req, signature)).to.be.revertedWith('MintingManagerForwarder: SIGNATURE_INVALID');
});
});
diff --git a/test/MintingManager.test.ts b/test/MintingManager.test.ts
index a5a29a09..8bbb2643 100644
--- a/test/MintingManager.test.ts
+++ b/test/MintingManager.test.ts
@@ -1,9 +1,7 @@
import { ethers, network } from 'hardhat';
import { expect } from 'chai';
-import namehash from 'eth-ens-namehash';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { Block } from '@ethersproject/abstract-provider';
-import { BigNumber } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { BaseContract, namehash } from 'ethers';
import { MintingManager, ProxyReader, UNSOperator, UNSRegistry } from '../types/contracts';
import { ERC20Mock, ERC20UnsafeMock, MintingManagerMock, UNSRegistryMock } from '../types/contracts/mocks';
import { CNSRegistry, Resolver } from '../types/dot-crypto/contracts';
@@ -14,7 +12,11 @@ import {
UNSOperator__factory,
UNSRegistry__factory,
} from '../types/factories/contracts';
-import { MintingManagerMock__factory, UNSRegistryMock__factory, ERC20Mock__factory } from '../types/factories/contracts/mocks';
+import {
+ MintingManagerMock__factory,
+ UNSRegistryMock__factory,
+ ERC20Mock__factory,
+} from '../types/factories/contracts/mocks';
import { CNSRegistry__factory, Resolver__factory } from '../types/factories/dot-crypto/contracts';
import {
MintingController__factory,
@@ -22,7 +24,7 @@ import {
} from '../types/factories/dot-crypto/contracts/controllers';
import { ERC20UnsafeMock__factory } from '../types';
import { ZERO_ADDRESS, TLD } from './helpers/constants';
-import { increaseTimeBy } from './helpers/utils';
+import { getLatestBlockTimestamp, increaseTimeBy } from './helpers/utils';
describe('MintingManager', () => {
const DomainNamePrefix = 'uns-devtest-';
@@ -44,7 +46,7 @@ describe('MintingManager', () => {
developer: SignerWithAddress,
spender: SignerWithAddress;
- let latestBlock: Block;
+ let latestBlockTimestamp: number;
before(async () => {
signers = await ethers.getSigners();
@@ -52,7 +54,7 @@ describe('MintingManager', () => {
});
beforeEach(async () => {
- latestBlock = await ethers.provider.getBlock('latest');
+ latestBlockTimestamp = await getLatestBlockTimestamp();
});
describe('Ownership', () => {
@@ -61,10 +63,10 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -96,10 +98,10 @@ describe('MintingManager', () => {
unsRegistryMock = await new UNSRegistryMock__factory(coinbase).deploy();
mintingManagerMock = await new MintingManagerMock__factory(coinbase).deploy();
- await unsRegistryMock.initialize(mintingManagerMock.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistryMock.initialize(await mintingManagerMock.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManagerMock.initialize(
- unsRegistryMock.address,
+ await unsRegistryMock.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -109,10 +111,10 @@ describe('MintingManager', () => {
await mintingManagerMock.addMinter(coinbase.address);
proxyReader = await new ProxyReader__factory(coinbase).deploy();
- await proxyReader.initialize(unsRegistryMock.address, cnsRegistry.address);
+ await proxyReader.initialize(await unsRegistryMock.getAddress(), await cnsRegistry.getAddress());
proxyReader2 = await new ProxyReader__factory(coinbase).deploy();
- await proxyReader2.initialize(unsRegistryMock.address, cnsRegistry.address);
+ await proxyReader2.initialize(await unsRegistryMock.getAddress(), await cnsRegistry.getAddress());
});
it('adds ProxyReader addresses', async () => {
@@ -122,21 +124,25 @@ describe('MintingManager', () => {
const tokenId = await unsRegistryMock.namehash(labels);
- await mintingManagerMock.addProxyReaders([proxyReader.address, proxyReader2.address]);
+ const [proxyReaderAddr, proxyReader2Addr] = [
+ await (proxyReader as BaseContract).getAddress(),
+ await (proxyReader2 as BaseContract).getAddress(),
+ ];
+ await mintingManagerMock.addProxyReaders([proxyReaderAddr, proxyReader2Addr]);
await mintingManagerMock.upgradeAll([tokenId]);
await unsRegistryMock.connect(receiver).set('key', 'value', tokenId);
- const [, , result] = await proxyReader.connect(receiver).callStatic.getData(['key'], tokenId);
- const [, , result2] = await proxyReader2.callStatic.getData(['key'], tokenId);
+ const [, , result] = await proxyReader.connect(receiver).getData.staticCall(['key'], tokenId);
+ const [, , result2] = await proxyReader2.getData.staticCall(['key'], tokenId);
expect(result).to.deep.equal(['']);
expect(result2).to.deep.equal(['']);
});
it('should revert if not owner', async () => {
- await expect(mintingManager.connect(signers[1]).addProxyReaders([proxyReader.address])).to.be.revertedWith(
+ await expect(mintingManager.connect(signers[1]).addProxyReaders([ZERO_ADDRESS])).to.be.revertedWith(
'Ownable: caller is not the owner',
);
});
@@ -150,10 +156,10 @@ describe('MintingManager', () => {
mintingManager = await new MintingManager__factory(coinbase).deploy();
unsOperator = await new UNSOperator__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -164,12 +170,12 @@ describe('MintingManager', () => {
});
it('saves UNSOperator address', async () => {
- await mintingManager.connect(coinbase).setOperator(unsOperator.address);
+ await mintingManager.connect(coinbase).setOperator(await unsOperator.getAddress());
const labels = ['uns-operator-subdomain-test', 'crypto'];
await mintingManager.connect(coinbase).issueWithRecords(receiver.address, labels, [], [], true);
- await unsRegistry.connect(receiver).approve(unsOperator.address, await unsRegistry.namehash(labels));
+ await unsRegistry.connect(receiver).approve(await unsOperator.getAddress(), await unsRegistry.namehash(labels));
const subdomainLabels = ['sub', ...labels];
@@ -180,7 +186,7 @@ describe('MintingManager', () => {
});
it('should revert if not owner', async () => {
- await expect(mintingManager.connect(signers[1]).setOperator(unsOperator.address)).to.be.revertedWith(
+ await expect(mintingManager.connect(signers[1]).setOperator(await unsOperator.getAddress())).to.be.revertedWith(
'Ownable: caller is not the owner',
);
});
@@ -192,10 +198,10 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -208,7 +214,7 @@ describe('MintingManager', () => {
describe('addTld', async () => {
it('should add new TLD', async () => {
const _tld = 'test';
- const _hashname = namehash.hash(_tld);
+ const _hashname = namehash(_tld);
const labels = ['test-1', _tld];
await expect(mintingManager.addTld(_tld, false)).to.emit(mintingManager, 'NewTld').withArgs(_hashname, _tld);
@@ -222,12 +228,12 @@ describe('MintingManager', () => {
it('should add new expirable TLD', async () => {
const _tld = 'dotcom';
- const _hashname = namehash.hash(_tld);
+ const _hashname = namehash(_tld);
const labels = ['test-1', _tld];
await expect(mintingManager.addTld(_tld, true)).to.emit(mintingManager, 'NewTld').withArgs(_hashname, _tld);
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
await mintingManager.issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
@@ -246,7 +252,7 @@ describe('MintingManager', () => {
it('should have all supported tlds minted', async () => {
for (const key of Object.keys(TLD)) {
- expect(await unsRegistry.ownerOf(TLD[key])).to.be.equal(mintingManager.address);
+ expect(await unsRegistry.ownerOf(TLD[key])).to.be.equal(await mintingManager.getAddress());
}
});
});
@@ -254,7 +260,7 @@ describe('MintingManager', () => {
describe('removeTld', async () => {
it('should be able to remove existing TLD', async () => {
const tld = 'test-removing-tld';
- const hashname = namehash.hash(tld);
+ const hashname = namehash(tld);
await mintingManager.addTld(tld, false);
@@ -265,14 +271,14 @@ describe('MintingManager', () => {
});
it('should revert removing TLD when not registred', async () => {
- const hashname = namehash.hash('test-removing-tld-not-existing');
+ const hashname = namehash('test-removing-tld-not-existing');
await expect(mintingManager.removeTld(hashname)).to.be.revertedWith('MintingManager: TLD_NOT_REGISTERED');
});
it('should revert removing TLD when non-owner', async () => {
const tld = 'test-removing-tld-when-not-owner';
- const hashname = namehash.hash(tld);
+ const hashname = namehash(tld);
await mintingManager.addTld(tld, false);
@@ -289,10 +295,10 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -308,14 +314,14 @@ describe('MintingManager', () => {
describe('claim(uint256,string)', () => {
it('should mint prefixed domain', async () => {
- await mintingManager.connect(developer).functions['claim(uint256,string)'](TLD.WALLET, domainSuffix);
+ await mintingManager.connect(developer).claim(TLD.WALLET, domainSuffix);
const tokenId = await unsRegistry.namehash([`${DomainNamePrefix}${domainSuffix}`, 'wallet']);
expect(await unsRegistry.tokenURI(tokenId)).to.be.equal(`/${tokenId}`);
});
it('should send domain to requester', async () => {
- await mintingManager.connect(developer).functions['claim(uint256,string)'](TLD.WALLET, domainSuffix);
+ await mintingManager.connect(developer).claim(TLD.WALLET, domainSuffix);
const tokenId = await unsRegistry.namehash([`${DomainNamePrefix}${domainSuffix}`, 'wallet']);
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(developer.address);
@@ -323,31 +329,27 @@ describe('MintingManager', () => {
it('should revert minting same domain twice', async () => {
const minter = mintingManager.connect(developer);
- await minter.functions['claim(uint256,string)'](TLD.WALLET, domainSuffix);
+ await minter.claim(TLD.WALLET, domainSuffix);
- await expect(minter.functions['claim(uint256,string)'](TLD.WALLET, domainSuffix)).to.be.revertedWith(
- 'MintingManager: TOKEN_BLOCKED',
- );
+ await expect(minter.claim(TLD.WALLET, domainSuffix)).to.be.revertedWith('MintingManager: TOKEN_BLOCKED');
});
it('should revert minting legacy CNS free domains', async () => {
- await expect(
- mintingManager.connect(developer).functions['claim(uint256,string)'](TLD.WALLET, 'udtestdev-t1'),
- ).to.be.revertedWith('MintingManager: TOKEN_LABEL_PROHIBITED');
+ await expect(mintingManager.connect(developer).claim(TLD.WALLET, 'udtestdev-t1')).to.be.revertedWith(
+ 'MintingManager: TOKEN_LABEL_PROHIBITED',
+ );
});
it('should revert minting an expirable domain', async () => {
- await expect(
- mintingManager.connect(developer).functions['claim(uint256,string)'](TLD.COM, 'udtestdev-t1-expirable'),
- ).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
+ await expect(mintingManager.connect(developer).claim(TLD.COM, 'udtestdev-t1-expirable')).to.be.revertedWith(
+ 'MintingManager: TLD_EXPIRABLE_MISMATCH',
+ );
});
});
describe('claimTo(address,uint256,string)', () => {
it('should mint domain to receiver', async () => {
- await mintingManager
- .connect(developer)
- .functions['claimTo(address,uint256,string)'](receiver.address, TLD.WALLET, domainSuffix);
+ await mintingManager.connect(developer).claimTo(receiver.address, TLD.WALLET, domainSuffix);
const tokenId = await unsRegistry.namehash([`${DomainNamePrefix}${domainSuffix}`, 'wallet']);
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(receiver.address);
@@ -355,27 +357,21 @@ describe('MintingManager', () => {
it('should revert minting legacy CNS free domains', async () => {
await expect(
- mintingManager
- .connect(developer)
- .functions['claimTo(address,uint256,string)'](receiver.address, TLD.CRYPTO, 'udtestdev-t2'),
+ mintingManager.connect(developer).claimTo(receiver.address, TLD.CRYPTO, 'udtestdev-t2'),
).to.be.revertedWith('MintingManager: TOKEN_LABEL_PROHIBITED');
});
it('should revert minting an expirable domain', async () => {
await expect(
- mintingManager
- .connect(developer)
- .functions['claimTo(address,uint256,string)'](receiver.address, TLD.COM, 'udtestdev-t2-expirable'),
+ mintingManager.connect(developer).claimTo(receiver.address, TLD.COM, 'udtestdev-t2-expirable'),
).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
});
});
describe('claimToWithRecords(address,uint256,string,string[],string[])', () => {
- const selector = 'claimToWithRecords(address,uint256,string,string[],string[])';
-
it('should mint domain to receiver with predefined keys', async () => {
const minter = mintingManager.connect(developer);
- await minter.functions[selector](receiver.address, TLD.WALLET, domainSuffix, ['key'], ['value']);
+ await minter.claimToWithRecords(receiver.address, TLD.WALLET, domainSuffix, ['key'], ['value']);
const tokenId = await unsRegistry.namehash([`${DomainNamePrefix}${domainSuffix}`, 'wallet']);
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(receiver.address);
@@ -384,7 +380,7 @@ describe('MintingManager', () => {
it('should mint domain with empty keys', async () => {
const minter = mintingManager.connect(developer);
- await minter.functions[selector](receiver.address, TLD.WALLET, domainSuffix, [], []);
+ await minter.claimToWithRecords(receiver.address, TLD.WALLET, domainSuffix, [], []);
const tokenId = await unsRegistry.namehash([`${DomainNamePrefix}${domainSuffix}`, 'wallet']);
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(receiver.address);
@@ -393,15 +389,13 @@ describe('MintingManager', () => {
it('should revert minting legacy CNS free domains', async () => {
await expect(
- mintingManager.connect(developer).functions[selector](receiver.address, TLD.CRYPTO, 'udtestdev-t3', [], []),
+ mintingManager.connect(developer).claimToWithRecords(receiver.address, TLD.CRYPTO, 'udtestdev-t3', [], []),
).to.be.revertedWith('MintingManager: TOKEN_LABEL_PROHIBITED');
});
it('should revert minting an expirable domain', async () => {
await expect(
- mintingManager
- .connect(developer)
- .functions['claimTo(address,uint256,string)'](receiver.address, TLD.COM, 'udtestdev-t2-expirable'),
+ mintingManager.connect(developer).claimTo(receiver.address, TLD.COM, 'udtestdev-t2-expirable'),
).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
});
});
@@ -415,25 +409,25 @@ describe('MintingManager', () => {
unsOperator = await new UNSOperator__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
- unsOperator.address,
+ await unsOperator.getAddress(),
ZERO_ADDRESS,
);
- await mintingManager.addMinter(coinbase.address);
+ await mintingManager.addMinter(await coinbase.getAddress());
await mintingManager.setTokenURIPrefix('/');
mintingManagerMock = await new MintingManagerMock__factory(coinbase).deploy();
unsRegistryMock = await new UNSRegistryMock__factory(coinbase).deploy();
- await unsRegistryMock.initialize(mintingManagerMock.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistryMock.initialize(await mintingManagerMock.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManagerMock.initialize(
- unsRegistryMock.address,
+ await unsRegistryMock.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -495,7 +489,7 @@ describe('MintingManager', () => {
await mintingManager.connect(coinbase).issueWithRecords(receiver.address, labels, [], [], true);
const parentTokenId = await unsRegistry.namehash(labels);
- await unsRegistry.connect(receiver).approve(unsOperator.address, parentTokenId);
+ await unsRegistry.connect(receiver).approve(await unsOperator.getAddress(), parentTokenId);
const subdomainLabels = ['sub', ...labels];
const tokenId = await unsRegistry.namehash(subdomainLabels);
@@ -511,7 +505,7 @@ describe('MintingManager', () => {
await mintingManager.connect(coinbase).issueWithRecords(receiver.address, labels, [], [], true);
const parentTokenId = await unsRegistry.namehash(labels);
- await unsRegistry.connect(receiver).approve(unsOperator.address, parentTokenId);
+ await unsRegistry.connect(receiver).approve(await unsOperator.getAddress(), parentTokenId);
labels.unshift('sub');
@@ -526,7 +520,7 @@ describe('MintingManager', () => {
await mintingManager.connect(coinbase).issueWithRecords(receiver.address, labels, [], [], true);
const parentTokenId = await unsRegistry.namehash(labels);
- await unsRegistry.connect(receiver).approve(unsOperator.address, parentTokenId);
+ await unsRegistry.connect(receiver).approve(await unsOperator.getAddress(), parentTokenId);
const subdomainLabels = ['sub', ...labels];
const tokenId = await unsRegistry.namehash(subdomainLabels);
@@ -604,9 +598,7 @@ describe('MintingManager', () => {
const labels = ['test-222x', 'wallet'];
await mintingManagerMock.connect(coinbase).issueWithRecords(receiver.address, labels, [], [], false);
- await mintingManagerMock.connect(coinbase).upgradeAll([
- await unsRegistry.namehash(labels),
- ]);
+ await mintingManagerMock.connect(coinbase).upgradeAll([await unsRegistry.namehash(labels)]);
labels.unshift('sub');
@@ -697,9 +689,9 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -707,7 +699,7 @@ describe('MintingManager', () => {
ZERO_ADDRESS,
);
- await mintingManager.addMinter(coinbase.address);
+ await mintingManager.addMinter(await coinbase.getAddress());
await mintingManager.setTokenURIPrefix('/');
});
@@ -721,447 +713,348 @@ describe('MintingManager', () => {
describe('With native tokens', async () => {
it('is possible to buy a domain and set records', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('2.21');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('2.21');
const labels = ['test-onchain-purchase', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- receiver.address,
- labels,
- ['key'], ['value'],
- expiry,
- price,
- signature,
- { value: price },
- ),
- ).to.emit(mintingManager, 'DomainPurchase')
+ mintingManager
+ .connect(spender)
+ .buy(receiver.address, labels, ['key'], ['value'], expiry, price, signature, { value: price }),
+ )
+ .to.emit(mintingManager, 'DomainPurchase')
.withArgs(tokenId, spender.address, receiver.address, price, ZERO_ADDRESS);
expect(await unsRegistry.ownerOf(tokenId)).to.equal(receiver.address);
expect(await unsRegistry.get('key', tokenId)).to.equal('value');
expect(await unsRegistry.reverseOf(receiver.address)).to.equal(0);
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(price);
});
it('is possible to buy a returned domain', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('2.21');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('2.21');
const labels = ['test-onchain-purchase-returned', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- await mintingManager.connect(coinbase).issueWithRecords(
- spender.address,
- labels,
- [], [],
- false,
- );
- await unsRegistry.connect(spender).setOwner(mintingManager.address, tokenId);
+ await mintingManager.connect(coinbase).issueWithRecords(spender.address, labels, [], [], false);
+ await unsRegistry.connect(spender).setOwner(await mintingManager.getAddress(), tokenId);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- );
+ await mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price });
expect(await unsRegistry.ownerOf(tokenId)).to.equal(spender.address);
expect(await unsRegistry.reverseOf(spender.address)).to.equal(tokenId);
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(price);
});
it('does not set reverse resolution if already set', async () => {
const reverseLabels = ['reverse', 'x'];
- await mintingManager.connect(coinbase).issueWithRecords(
- spender.address,
- reverseLabels,
- [], [],
- true,
- );
+ await mintingManager.connect(coinbase).issueWithRecords(spender.address, reverseLabels, [], [], true);
const reverseTokenId = await unsRegistry.namehash(reverseLabels);
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['test-onchain-purchase-reverse-overwrite', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- );
+ await mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price });
expect(await unsRegistry.ownerOf(tokenId)).to.equal(spender.address);
expect(await unsRegistry.reverseOf(spender.address)).to.equal(reverseTokenId);
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(price);
});
it('does not set reverse resolution if sender is not owner', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['test-onchain-purchase-reverse-not-owner', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await mintingManager.connect(spender).buy(
- receiver.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- );
+ await mintingManager
+ .connect(spender)
+ .buy(receiver.address, labels, [], [], expiry, price, signature, { value: price });
expect(await unsRegistry.ownerOf(tokenId)).to.equal(receiver.address);
expect(await unsRegistry.reverseOf(spender.address)).to.equal(0);
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(price);
});
it('returns cost excess to user', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
- const excess = ethers.utils.parseEther('0.5');
+ const price = ethers.parseEther('1');
+ const excess = ethers.parseEther('0.5');
- const initialBalance = await spender.getBalance();
+ const initialBalance = await ethers.provider.getBalance(spender.address);
const labels = ['test-onchain-purchase1', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- const tx = await mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price.add(excess) },
- );
- const receipt = await tx.wait();
- const txFee = receipt.effectiveGasPrice.mul(receipt.gasUsed);
+ const tx = await mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price + excess });
+ const receipt = (await tx.wait())!;
+ const txFee = receipt.gasPrice * receipt.gasUsed;
- expect(await spender.getBalance()).to.equal(initialBalance.sub(txFee).sub(price));
+ expect(await ethers.provider.getBalance(spender.address)).to.equal(initialBalance - txFee - price);
expect(await unsRegistry.ownerOf(tokenId)).to.equal(spender.address);
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(price);
});
it('reverts if no tokens sent', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['test-onchain-purchase2', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- ),
+ mintingManager.connect(spender).buy(spender.address, labels, [], [], expiry, price, signature),
).to.be.revertedWith('MintingManager: NOT_ENOUGH_FUNDS');
});
it('reverts if not enough tokens sent', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['test-onchain-purchase1', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price.sub(BigNumber.from(1)) },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price - BigInt(1) }),
).to.be.revertedWith('MintingManager: NOT_ENOUGH_FUNDS');
});
it('does not allow to purchase a subdomain', async () => {
const parentLabels = ['owned-parent', 'x'];
- await mintingManager.connect(coinbase).issueWithRecords(
- receiver.address,
- parentLabels,
- [], [],
- true,
- );
+ await mintingManager.connect(coinbase).issueWithRecords(receiver.address, parentLabels, [], [], true);
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['sub', ...parentLabels];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- receiver.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(receiver.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: SUBDOMAINS_NOT_ALLOWED');
});
it('reverts if domain labels invalid', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['-invalid-domain', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: LABEL_INVALID');
});
it('reverts if TLD does not exist', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['domain', 'notexistingawesometld'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: TLD_NOT_REGISTERED');
});
it('reverts if is a free CNS domain ', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['udtestdev-tx', 'crypto'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: TOKEN_LABEL_PROHIBITED');
});
it('reverts if signature expired', async () => {
- const expiry = latestBlock.timestamp - 60;
+ const expiry = latestBlockTimestamp - 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['expired-purchase', 'crypto'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: EXPIRED_SIGNATURE');
});
it('reverts if signer is not minter', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['invalid-signer', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await spender.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if signed data doesnt match the signature', async () => {
- const expiry = latestBlock.timestamp - 60;
+ const expiry = latestBlockTimestamp - 60;
- const price = ethers.utils.parseEther('1');
+ const price = ethers.parseEther('1');
const labels = ['invalid-signed-data', 'x'];
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, BigNumber.from(1), expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, BigInt(1), expiry, price, ZERO_ADDRESS],
),
);
const signature = await spender.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(await spender.getAddress(), labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
@@ -1169,9 +1062,14 @@ describe('MintingManager', () => {
const anotherUnsRegistry = await new UNSRegistry__factory(coinbase).deploy();
const anotherMintingManager = await new MintingManager__factory(coinbase).deploy();
- await anotherUnsRegistry.initialize(anotherMintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await anotherUnsRegistry.initialize(
+ await anotherMintingManager.getAddress(),
+ ZERO_ADDRESS,
+ ZERO_ADDRESS,
+ ZERO_ADDRESS,
+ );
await anotherMintingManager.initialize(
- anotherUnsRegistry.address,
+ await anotherUnsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -1181,86 +1079,68 @@ describe('MintingManager', () => {
await anotherMintingManager.addMinter(coinbase.address);
await anotherMintingManager.setTokenURIPrefix('/');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['invalid-minting-manager-addr', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- anotherMintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ anotherMintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if signed chainId is wrong', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['invalid-chainid', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, 1, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), 1, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- spender.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, [], [], expiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if TLD is expirable', async () => {
- const requestExpiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('2.21');
+ const requestExpiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('2.21');
const labels = ['expirable-onchain-purchase-test', 'com'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, requestExpiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, receiver.address, tokenId, requestExpiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buy(
- receiver.address,
- labels,
- [], [],
- requestExpiry,
- price,
- signature,
- { value: price },
- ),
+ mintingManager
+ .connect(spender)
+ .buy(receiver.address, labels, [], [], requestExpiry, price, signature, { value: price }),
).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
});
});
@@ -1271,445 +1151,475 @@ describe('MintingManager', () => {
before(async () => {
erc20Mock = await new ERC20Mock__factory(coinbase).deploy();
- await erc20Mock.mint(spender.address, ethers.utils.parseEther('100'));
+ await erc20Mock.mint(spender.address, ethers.parseEther('100'));
erc20UnsafeMock = await new ERC20UnsafeMock__factory(coinbase).deploy();
- await erc20UnsafeMock.mint(spender.address, ethers.utils.parseEther('100'));
+ await erc20UnsafeMock.mint(spender.address, ethers.parseEther('100'));
});
it('is possibe to buy a domain with ERC20 token', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['test-erc20-onchain-purchase', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ receiver.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- receiver.address,
- labels,
- ['key'], ['value'],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
- ).to.emit(mintingManager, 'DomainPurchase')
- .withArgs(tokenId, spender.address, receiver.address, price, erc20Mock.address);
+ mintingManager
+ .connect(spender)
+ .buyForErc20(
+ receiver.address,
+ labels,
+ ['key'],
+ ['value'],
+ expiry,
+ await erc20Mock.getAddress(),
+ price,
+ signature,
+ ),
+ )
+ .to.emit(mintingManager, 'DomainPurchase')
+ .withArgs(tokenId, spender.address, receiver.address, price, await erc20Mock.getAddress());
expect(await unsRegistry.ownerOf(tokenId)).to.equal(receiver.address);
expect(await unsRegistry.get('key', tokenId)).to.equal('value');
expect(await unsRegistry.reverseOf(receiver.address)).to.equal(0);
- expect(await erc20Mock.balanceOf(mintingManager.address)).to.equal(price);
+ expect(await erc20Mock.balanceOf(await mintingManager.getAddress())).to.equal(price);
});
it('is possible to buy a returned domain with ERC20 tokens', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('0.3');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('0.3');
const labels = ['test-onchain-purchase-returned-erc20', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- await mintingManager.connect(coinbase).issueWithRecords(
- spender.address,
- labels,
- [], [],
- false,
- );
- await unsRegistry.connect(spender).setOwner(mintingManager.address, tokenId);
+ await mintingManager.connect(coinbase).issueWithRecords(spender.address, labels, [], [], false);
+ await unsRegistry.connect(spender).setOwner(await mintingManager.getAddress(), tokenId);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
- await mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- );
+ await mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature);
expect(await unsRegistry.ownerOf(tokenId)).to.equal(spender.address);
expect(await unsRegistry.reverseOf(spender.address)).to.equal(tokenId);
- expect(await erc20Mock.balanceOf(mintingManager.address)).to.equal(price);
+ expect(await erc20Mock.balanceOf(await mintingManager.getAddress())).to.equal(price);
});
it('does not set reverse resolution if already set', async () => {
const reverseLabels = ['reverse', 'x'];
- await mintingManager.connect(coinbase).issueWithRecords(
- spender.address,
- reverseLabels,
- [], [],
- true,
- );
+ await mintingManager.connect(coinbase).issueWithRecords(spender.address, reverseLabels, [], [], true);
const reverseTokenId = await unsRegistry.namehash(reverseLabels);
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['erc20-onchain-purchase-reverse', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
- await mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- );
+ await mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature);
expect(await unsRegistry.ownerOf(tokenId)).to.equal(spender.address);
expect(await unsRegistry.reverseOf(spender.address)).to.equal(reverseTokenId);
- expect(await erc20Mock.balanceOf(mintingManager.address)).to.equal(price);
+ expect(await erc20Mock.balanceOf(await mintingManager.getAddress())).to.equal(price);
});
it('does not set reverse resolution if sender is not owner', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('5');
const labels = ['erc20-onchain-purchase-reverse-not-owner', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ receiver.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
- await mintingManager.connect(spender).buyForErc20(
- receiver.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- );
+ await mintingManager
+ .connect(spender)
+ .buyForErc20(receiver.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature);
expect(await unsRegistry.ownerOf(tokenId)).to.equal(receiver.address);
expect(await unsRegistry.reverseOf(spender.address)).to.equal(0);
- expect(await erc20Mock.balanceOf(mintingManager.address)).to.equal(price);
+ expect(await erc20Mock.balanceOf(await mintingManager.getAddress())).to.equal(price);
});
it('reverts if no ERC20 tokens approved', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['test-erc20-onchain-purchase', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- ['key'], ['value'],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(
+ spender.address,
+ labels,
+ ['key'],
+ ['value'],
+ expiry,
+ await erc20Mock.getAddress(),
+ price,
+ signature,
+ ),
).to.be.revertedWith('ERC20: insufficient allowance');
});
it('reverts if ERC20 allowance is too low', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['test-erc20-onchain-purchase', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, ethers.utils.parseEther('1'));
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), ethers.parseEther('1'));
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('ERC20: insufficient allowance');
});
it('does not allow to purchase a subdomain with ERC20 tokens', async () => {
const parentLabels = ['owned-parent-erc20-test', 'x'];
- await mintingManager.connect(coinbase).issueWithRecords(
- receiver.address,
- parentLabels,
- [], [],
- true,
- );
+ await mintingManager.connect(coinbase).issueWithRecords(receiver.address, parentLabels, [], [], true);
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['sub', ...parentLabels];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: SUBDOMAINS_NOT_ALLOWED');
});
it('reverts if domain labels invalid', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['-invalid-domain', 'nft'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: LABEL_INVALID');
});
it('reverts if TLD does not exist', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['domain', 'awesometld'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: TLD_NOT_REGISTERED');
});
it('reverts if signature expired', async () => {
- const expiry = latestBlock.timestamp - 60;
+ const expiry = latestBlockTimestamp - 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['expired-erc20-purchase', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: EXPIRED_SIGNATURE');
});
it('reverts if signer is not minter', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['expired-erc20-purchase', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await spender.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if signed data doesnt match the signature', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['expired-erc20-purchase', 'x'];
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, BigNumber.from(1), expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ BigInt(1),
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if ERC20 transfer returns false', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('5');
const labels = ['test-erc20-onchain-purchase-unsafe', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20UnsafeMock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20UnsafeMock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20UnsafeMock.connect(spender).approve(mintingManager.address, price);
+ await erc20UnsafeMock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20UnsafeMock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20UnsafeMock.getAddress(), price, signature),
).to.be.revertedWith('ERC20: LOW_LEVEL_FAIL');
});
@@ -1717,9 +1627,14 @@ describe('MintingManager', () => {
const anotherUnsRegistry = await new UNSRegistry__factory(coinbase).deploy();
const anotherMintingManager = await new MintingManager__factory(coinbase).deploy();
- await anotherUnsRegistry.initialize(anotherMintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await anotherUnsRegistry.initialize(
+ await anotherMintingManager.getAddress(),
+ ZERO_ADDRESS,
+ ZERO_ADDRESS,
+ ZERO_ADDRESS,
+ );
await anotherMintingManager.initialize(
- anotherUnsRegistry.address,
+ await anotherUnsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -1729,93 +1644,99 @@ describe('MintingManager', () => {
await anotherMintingManager.addMinter(coinbase.address);
await anotherMintingManager.setTokenURIPrefix('/');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['invalid-minting-manager-addr-erc20', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- anotherMintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ anotherMintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if signed chainId is wrong', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('1');
const labels = ['invalid-chainid-erc20', 'x'];
const tokenId = await unsRegistry.namehash(labels);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, 1, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ 1,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
await expect(
- mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(spender.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: SIGNER_IS_NOT_MINTER');
});
it('reverts if TLD is expirable', async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('5');
+ const price = ethers.parseEther('5');
const labels = ['expirable-erc20-on-chain-purchase', 'com'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ receiver.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
await expect(
- mintingManager.connect(spender).buyForErc20(
- receiver.address,
- labels,
- [], [],
- expiry,
- erc20Mock.address,
- price,
- signature,
- ),
+ mintingManager
+ .connect(spender)
+ .buyForErc20(receiver.address, labels, [], [], expiry, await erc20Mock.getAddress(), price, signature),
).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
});
});
@@ -1828,25 +1749,28 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
cnsRegistry = await new CNSRegistry__factory(coinbase).deploy();
- mintingController = await new MintingController__factory(coinbase).deploy(cnsRegistry.address);
- await cnsRegistry.addController(mintingController.address);
+ mintingController = await new MintingController__factory(coinbase).deploy(await cnsRegistry.getAddress());
+ await cnsRegistry.addController(await mintingController.getAddress());
- resolver = await new Resolver__factory(coinbase).deploy(cnsRegistry.address, mintingController.address);
+ resolver = await new Resolver__factory(coinbase).deploy(
+ await cnsRegistry.getAddress(),
+ await mintingController.getAddress(),
+ );
- uriPrefixController = await new URIPrefixController__factory(coinbase).deploy(cnsRegistry.address);
- await cnsRegistry.addController(uriPrefixController.address);
+ uriPrefixController = await new URIPrefixController__factory(coinbase).deploy(await cnsRegistry.getAddress());
+ await cnsRegistry.addController(await uriPrefixController.getAddress());
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
- await mintingController.addMinter(mintingManager.address);
- await uriPrefixController.addWhitelisted(mintingManager.address);
+ await mintingController.addMinter(await mintingManager.getAddress());
+ await uriPrefixController.addWhitelisted(await mintingManager.getAddress());
await mintingManager.initialize(
- unsRegistry.address,
- mintingController.address,
- uriPrefixController.address,
- resolver.address,
+ await unsRegistry.getAddress(),
+ await mintingController.getAddress(),
+ await uriPrefixController.getAddress(),
+ await resolver.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
);
@@ -1869,7 +1793,7 @@ describe('MintingManager', () => {
await expect(unsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: invalid token ID');
expect(await cnsRegistry.tokenURI(tokenId)).to.be.eql('/uns-devtest-test-c221.crypto');
- expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(resolver.address);
+ expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(await resolver.getAddress());
});
it('should claim .wallet domain in UNS registry', async () => {
@@ -1891,7 +1815,7 @@ describe('MintingManager', () => {
expect(await cnsRegistry.ownerOf(tokenId)).to.be.eql(coinbase.address);
await expect(unsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: invalid token ID');
- expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(resolver.address);
+ expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(await resolver.getAddress());
});
it('should claim .wallet domain in UNS registry', async () => {
@@ -1914,7 +1838,7 @@ describe('MintingManager', () => {
await expect(unsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: invalid token ID');
expect(await resolver.get('key1', tokenId)).to.be.eql('value3');
- expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(resolver.address);
+ expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(await resolver.getAddress());
});
it('should claim with records .wallet domain in UNS registry', async () => {
@@ -1937,7 +1861,7 @@ describe('MintingManager', () => {
await expect(unsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: invalid token ID');
expect(await resolver.get('key1', tokenId)).to.be.eql('value1');
- expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(resolver.address);
+ expect(await cnsRegistry.resolverOf(tokenId)).to.be.eql(await resolver.getAddress());
});
it('should mint with records .wallet domain in UNS registry', async () => {
@@ -1969,8 +1893,8 @@ describe('MintingManager', () => {
const tokenIdSub = await unsRegistry.namehash(labelsSub);
- await unsRegistry.connect(signers[2]).setOwner(mintingManager.address, tokenIdSub);
- await unsRegistry.connect(signers[2]).setOwner(mintingManager.address, tokenId);
+ await unsRegistry.connect(signers[2]).setOwner(await mintingManager.getAddress(), tokenIdSub);
+ await unsRegistry.connect(signers[2]).setOwner(await mintingManager.getAddress(), tokenId);
await mintingManager.issueWithRecords(signers[1].address, labels, ['key1'], ['value2'], true);
expect(await unsRegistry.ownerOf(tokenId)).to.be.eql(signers[1].address);
@@ -1999,8 +1923,8 @@ describe('MintingManager', () => {
const tokenIdSub = await unsRegistry.namehash(labelsSub);
- await unsRegistry.connect(signers[2]).setOwner(mintingManager.address, tokenIdSub);
- await unsRegistry.connect(signers[2]).setOwner(mintingManager.address, tokenId);
+ await unsRegistry.connect(signers[2]).setOwner(await mintingManager.getAddress(), tokenIdSub);
+ await unsRegistry.connect(signers[2]).setOwner(await mintingManager.getAddress(), tokenId);
await unsRegistry.connect(signers[1]).removeReverse();
@@ -2033,23 +1957,18 @@ describe('MintingManager', () => {
describe('issueExpirableWithRecords(address,string[],string[],string[],uint64,bool)', () => {
beforeEach(async () => {
- if(!(await unsRegistry.reverseOf(receiver.address)).eq(0)) {
+ if ((await unsRegistry.reverseOf(receiver.address)) !== BigInt(0)) {
await unsRegistry.connect(receiver).removeReverse();
}
});
it('should mint expirable .com with records and reverse', async () => {
const labels = ['expirable-test-a1', 'com'];
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- receiver.address,
- labels,
- ['key1'],
- ['value1'],
- expiry,
- true,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(receiver.address, labels, ['key1'], ['value1'], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(receiver.address);
@@ -2060,33 +1979,23 @@ describe('MintingManager', () => {
it('should unlock returned .com with records and reverse', async () => {
const labels = ['expirable-test-a2', 'com'];
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- ['key1'],
- ['value1'],
- expiry,
- false,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(coinbase.address, labels, ['key1'], ['value1'], expiry, false);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(coinbase.address);
expect(await unsRegistry.get('key1', tokenId)).to.eq('value1');
expect(await unsRegistry.expiryOf(tokenId)).to.eq(expiry);
- await unsRegistry.connect(coinbase).setOwner(mintingManager.address, tokenId);
+ await unsRegistry.connect(coinbase).setOwner(await mintingManager.getAddress(), tokenId);
const newExpiry = expiry + 60 * 60 * 24;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- receiver.address,
- labels,
- ['key2'],
- ['value2'],
- newExpiry,
- true,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(receiver.address, labels, ['key2'], ['value2'], newExpiry, true);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(receiver.address);
expect(await unsRegistry.expiryOf(tokenId)).to.eq(newExpiry);
@@ -2099,16 +2008,11 @@ describe('MintingManager', () => {
it('should mint existing expired .com with records and reverse', async () => {
const labels = ['expirable-test-a3', 'com'];
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- receiver.address,
- labels,
- ['key1'],
- ['value1'],
- expiry,
- false,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(receiver.address, labels, ['key1'], ['value1'], expiry, false);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(receiver.address);
@@ -2120,14 +2024,9 @@ describe('MintingManager', () => {
expect(await unsRegistry.isExpired(tokenId)).to.eq(true);
const newExpiry = expiry + 24 * 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- receiver.address,
- labels,
- ['key2'],
- ['value2'],
- newExpiry,
- true,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(receiver.address, labels, ['key2'], ['value2'], newExpiry, true);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(receiver.address);
expect(await unsRegistry.get('key2', tokenId)).to.eq('value2');
@@ -2139,23 +2038,18 @@ describe('MintingManager', () => {
it('should unlock returned expired .com with records and reverse', async () => {
const labels = ['expirable-test-a4', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60;
+ const expiry = latestBlockTimestamp + 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- ['key1'],
- ['value1'],
- expiry,
- false,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(coinbase.address, labels, ['key1'], ['value1'], expiry, false);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(coinbase.address);
expect(await unsRegistry.get('key1', tokenId)).to.eq('value1');
expect(await unsRegistry.expiryOf(tokenId)).to.eq(expiry);
- await unsRegistry.connect(coinbase).setOwner(mintingManager.address, tokenId);
+ await unsRegistry.connect(coinbase).setOwner(await mintingManager.getAddress(), tokenId);
await increaseTimeBy(60 * 60);
@@ -2163,14 +2057,9 @@ describe('MintingManager', () => {
const newExpiry = expiry + 24 * 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- receiver.address,
- labels,
- ['key2'],
- ['value2'],
- newExpiry,
- true,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(receiver.address, labels, ['key2'], ['value2'], newExpiry, true);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(receiver.address);
expect(await unsRegistry.expiryOf(tokenId)).to.eq(newExpiry);
@@ -2188,7 +2077,7 @@ describe('MintingManager', () => {
['expirable-test-a5', 'crypto'],
[],
[],
- latestBlock.timestamp + 24 * 60 * 60,
+ latestBlockTimestamp + 24 * 60 * 60,
true,
),
).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
@@ -2196,55 +2085,39 @@ describe('MintingManager', () => {
it('should revert if caller is not minter', async () => {
await expect(
- mintingManager.connect(signers[1]).issueExpirableWithRecords(
- coinbase.address,
- ['not-minter', 'com'],
- [],
- [],
- latestBlock.timestamp + 24 * 60 * 60,
- true,
- ),
+ mintingManager
+ .connect(signers[1])
+ .issueExpirableWithRecords(
+ coinbase.address,
+ ['not-minter', 'com'],
+ [],
+ [],
+ latestBlockTimestamp + 24 * 60 * 60,
+ true,
+ ),
).to.be.revertedWith('MintingManager: CALLER_IS_NOT_MINTER');
});
it('should revert with subdomain', async () => {
const labels = ['expirable-test-a6', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60;
+ const expiry = latestBlockTimestamp + 60 * 60;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- expiry,
- false,
- );
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, false);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(coinbase.address);
await expect(
- mintingManager.issueExpirableWithRecords(
- coinbase.address,
- ['sub', ...labels],
- [],
- [],
- expiry,
- true,
- ),
+ mintingManager.issueExpirableWithRecords(coinbase.address, ['sub', ...labels], [], [], expiry, true),
).to.be.revertedWith('MintingManager: SUBDOMAINS_NOT_ALLOWED');
});
it('should revert with subdomain of non-expirable SLD', async () => {
const labels = ['expirable-test-a7', 'x'];
- await mintingManager.connect(coinbase).issueWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- false,
- );
+ await mintingManager.connect(coinbase).issueWithRecords(coinbase.address, labels, [], [], false);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(coinbase.address);
@@ -2255,7 +2128,7 @@ describe('MintingManager', () => {
['sub', ...labels],
[],
[],
- latestBlock.timestamp + 24 * 60 * 60,
+ latestBlockTimestamp + 24 * 60 * 60,
true,
),
).to.be.revertedWith('MintingManager: TLD_EXPIRABLE_MISMATCH');
@@ -2268,7 +2141,7 @@ describe('MintingManager', () => {
['udtestdev-t8', 'com'],
['key1'],
['value1'],
- latestBlock.timestamp + 24 * 60 * 60,
+ latestBlockTimestamp + 24 * 60 * 60,
true,
),
).to.be.revertedWith('MintingManager: TOKEN_LABEL_PROHIBITED');
@@ -2281,9 +2154,9 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2304,9 +2177,9 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2318,16 +2191,9 @@ describe('MintingManager', () => {
it('should renew an expirable domain', async () => {
const labels = ['test-renew-1', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
-
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
+
+ await mintingManager.connect(coinbase).issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.expiryOf(tokenId)).to.be.equal(expiry);
@@ -2344,7 +2210,7 @@ describe('MintingManager', () => {
await mintingManager.connect(coinbase).issueWithRecords(coinbase.address, labels, [], [], true);
const tokenId = await unsRegistry.namehash(labels);
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
await expect(mintingManager.connect(coinbase).renew(expiry, tokenId)).to.be.revertedWith(
'MintingManager: TOKEN_NOT_EXPIRABLE',
);
@@ -2352,16 +2218,9 @@ describe('MintingManager', () => {
it('should revert if expiry is not extended', async () => {
const labels = ['test-renew-3', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
-
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
+
+ await mintingManager.connect(coinbase).issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
await expect(mintingManager.connect(coinbase).renew(expiry, tokenId)).to.be.revertedWith(
@@ -2371,16 +2230,9 @@ describe('MintingManager', () => {
it('should revert if new expiry is in the past', async () => {
const labels = ['test-renew-4', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
-
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
+
+ await mintingManager.connect(coinbase).issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
await increaseTimeBy(60 * 60 * 24);
@@ -2395,16 +2247,9 @@ describe('MintingManager', () => {
it('should revert if caller is not minter', async () => {
const labels = ['test-renew-5', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ await mintingManager.connect(coinbase).issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
const newExpiry = expiry + 60 * 60 * 24;
@@ -2422,9 +2267,9 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2436,23 +2281,18 @@ describe('MintingManager', () => {
it('should revoke an expirable domain', async () => {
const labels = ['test-revoke-1', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
-
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- ['key1'],
- ['awesome-value'],
- expiry,
- true,
- );
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
+
+ await mintingManager
+ .connect(coinbase)
+ .issueExpirableWithRecords(coinbase.address, labels, ['key1'], ['awesome-value'], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
expect(await unsRegistry.expiryOf(tokenId)).to.be.equal(expiry);
await mintingManager.connect(coinbase).revoke(tokenId);
- expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(mintingManager.address);
+ expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(await mintingManager.getAddress());
expect(await unsRegistry.get('key1', tokenId)).to.be.equal('');
});
@@ -2470,16 +2310,9 @@ describe('MintingManager', () => {
it('should revert if caller is not minter', async () => {
const labels = ['test-revoke-3', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
- await mintingManager.connect(coinbase).issueExpirableWithRecords(
- coinbase.address,
- labels,
- [],
- [],
- expiry,
- true,
- );
+ await mintingManager.connect(coinbase).issueExpirableWithRecords(coinbase.address, labels, [], [], expiry, true);
const tokenId = await unsRegistry.namehash(labels);
await expect(mintingManager.connect(receiver).revoke(tokenId)).to.be.revertedWith(
@@ -2493,10 +2326,10 @@ describe('MintingManager', () => {
before(async () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2529,7 +2362,7 @@ describe('MintingManager', () => {
['test-block-3pef', 'com'],
[],
[],
- latestBlock.timestamp + 60 * 60 * 24,
+ latestBlockTimestamp + 60 * 60 * 24,
true,
);
@@ -2539,7 +2372,7 @@ describe('MintingManager', () => {
['test-block-3pef', 'com'],
[],
[],
- latestBlock.timestamp,
+ latestBlockTimestamp,
true,
),
).to.be.revertedWith('MintingManager: TOKEN_BLOCKED');
@@ -2587,10 +2420,10 @@ describe('MintingManager', () => {
before(async () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2640,7 +2473,7 @@ describe('MintingManager', () => {
});
it('should revert mint expirable with records when paused', async () => {
- const { timestamp } = await ethers.provider.getBlock('latest');
+ const timestamp = await getLatestBlockTimestamp();
await expect(
mintingManager.issueExpirableWithRecords(
@@ -2656,25 +2489,13 @@ describe('MintingManager', () => {
it('should revert buy if paused', async () => {
await expect(
- mintingManager.buy(
- coinbase.address,
- ['test-paused-purchase', 'x'],
- [], [],
- 0, 0,
- '0x',
- ),
+ mintingManager.buy(coinbase.address, ['test-paused-purchase', 'x'], [], [], 0, 0, '0x'),
).to.be.revertedWith('Pausable: PAUSED');
});
it('should revert buyForErc20 if paused', async () => {
await expect(
- mintingManager.buyForErc20(
- coinbase.address,
- ['test-paused-purchase', 'x'],
- [], [],
- 0, ZERO_ADDRESS, 0,
- '0x',
- ),
+ mintingManager.buyForErc20(coinbase.address, ['test-paused-purchase', 'x'], [], [], 0, ZERO_ADDRESS, 0, '0x'),
).to.be.revertedWith('Pausable: PAUSED');
});
});
@@ -2685,10 +2506,10 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2742,10 +2563,10 @@ describe('MintingManager', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -2758,54 +2579,46 @@ describe('MintingManager', () => {
describe('withdraw(address recepient)', () => {
it('allows to withdraw native tokens', async () => {
- const price = ethers.utils.parseEther('4.54');
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
+ const price = ethers.parseEther('4.54');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
const labels = ['withdrawal', 'wallet'];
const tokenId = await unsRegistry.namehash(labels);
const chainId = network.config.chainId;
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = ethers.getBytes(
+ ethers.solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, receiver.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await mintingManager.connect(receiver).buy(
- receiver.address,
- labels,
- [], [],
- expiry,
- price,
- signature,
- { value: price },
- );
+ await mintingManager
+ .connect(receiver)
+ .buy(receiver.address, labels, [], [], expiry, price, signature, { value: price });
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(price);
- const initialBalance = await receiver.getBalance();
+ const initialBalance = await ethers.provider.getBalance(receiver.address);
- await expect(
- mintingManager.connect(coinbase)['withdraw(address)'](receiver.address),
- ).to.emit(mintingManager, 'Withdrawal').withArgs(receiver.address, price, ZERO_ADDRESS);
+ await expect(mintingManager.connect(coinbase)['withdraw(address)'](receiver.address))
+ .to.emit(mintingManager, 'Withdrawal')
+ .withArgs(receiver.address, price, ZERO_ADDRESS);
- expect(await receiver.getBalance()).to.equal(initialBalance.add(price));
- expect(await ethers.provider.getBalance(mintingManager.address)).to.equal(BigNumber.from(0));
+ expect(await ethers.provider.getBalance(receiver.address)).to.equal(initialBalance + price);
+ expect(await ethers.provider.getBalance(await mintingManager.getAddress())).to.equal(BigInt(0));
});
it('rejects if not owner', async () => {
- await expect(
- mintingManager.connect(receiver)['withdraw(address)'](ZERO_ADDRESS),
- ).to.be.reverted;
+ await expect(mintingManager.connect(receiver)['withdraw(address)'](ZERO_ADDRESS)).to.be.reverted;
});
it('rejects if not owner', async () => {
- await expect(
- mintingManager.connect(receiver)['withdraw(address)'](receiver.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(mintingManager.connect(receiver)['withdraw(address)'](receiver.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
});
@@ -2820,31 +2633,32 @@ describe('MintingManager', () => {
});
it('allows to withdraw ERC20 tokens', async () => {
- const value = ethers.utils.parseEther('5');
- await erc20Mock.mint(mintingManager.address, value);
+ const value = ethers.parseEther('5');
+ await erc20Mock.mint(await mintingManager.getAddress(), value);
await expect(
- mintingManager.connect(coinbase)['withdraw(address,address)'](
- erc20Mock.address,
- receiver.address,
- ),
- ).to.emit(mintingManager, 'Withdrawal').withArgs(receiver.address, value, erc20Mock.address);
+ mintingManager.connect(coinbase)['withdraw(address,address)'](await erc20Mock.getAddress(), receiver.address),
+ )
+ .to.emit(mintingManager, 'Withdrawal')
+ .withArgs(receiver.address, value, await erc20Mock.getAddress());
expect(await erc20Mock.balanceOf(receiver.address)).to.equal(value);
});
it('reverts if ERC20 transfer returns false', async () => {
- const value = ethers.utils.parseEther('5');
- await erc20UnsafeMock.mint(mintingManager.address, value);
+ const value = ethers.parseEther('5');
+ await erc20UnsafeMock.mint(await mintingManager.getAddress(), value);
await expect(
- mintingManager.connect(coinbase)['withdraw(address,address)'](erc20UnsafeMock.address, receiver.address),
+ mintingManager
+ .connect(coinbase)
+ ['withdraw(address,address)'](await erc20UnsafeMock.getAddress(), receiver.address),
).to.be.revertedWith('ERC20: LOW_LEVEL_FAIL');
});
it('rejects if not owner', async () => {
await expect(
- mintingManager.connect(receiver)['withdraw(address,address)'](erc20Mock.address, receiver.address),
+ mintingManager.connect(receiver)['withdraw(address,address)'](await erc20Mock.getAddress(), receiver.address),
).to.be.revertedWith('Ownable: caller is not the owner');
});
});
diff --git a/test/ProxyReader.proxy.test.ts b/test/ProxyReader.proxy.test.ts
index a9eedd37..a9a48692 100644
--- a/test/ProxyReader.proxy.test.ts
+++ b/test/ProxyReader.proxy.test.ts
@@ -1,12 +1,13 @@
import { ethers, upgrades } from 'hardhat';
import { expect } from 'chai';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumber } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { getContractAddress } from '@openzeppelin/hardhat-upgrades/dist/utils';
import { ProxyReader, UNSRegistry } from '../types/contracts';
import { CNSRegistry } from '../types/dot-crypto/contracts';
import { ProxyReader__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { CNSRegistry__factory } from '../types/factories/dot-crypto/contracts';
import { ProxyReaderV04__factory } from '../types/factories/contracts/history';
+import { deployProxy } from '../src/helpers';
import { mintDomain } from './helpers/registry';
import { TLD, ZERO_ADDRESS } from './helpers/constants';
@@ -14,7 +15,7 @@ describe('ProxyReader (proxy)', () => {
let unsRegistry: UNSRegistry, cnsRegistry: CNSRegistry, proxyReader: ProxyReader;
let signers: SignerWithAddress[], coinbase: SignerWithAddress, receiver: SignerWithAddress;
- let walletTokenId: BigNumber;
+ let walletTokenId: bigint;
before(async () => {
signers = await ethers.getSigners();
@@ -31,11 +32,11 @@ describe('ProxyReader (proxy)', () => {
cnsRegistry = await new CNSRegistry__factory(coinbase).deploy();
// deploy ProxyReader
- proxyReader = await upgrades.deployProxy(
+ proxyReader = await deployProxy(
new ProxyReader__factory(coinbase),
- [ unsRegistry.address, cnsRegistry.address ],
+ [await unsRegistry.getAddress(), await cnsRegistry.getAddress()],
{ unsafeAllow: ['delegatecall'] },
- ) as ProxyReader;
+ );
// add TLD
await unsRegistry.mintTLD(TLD.WALLET, 'wallet');
@@ -50,17 +51,17 @@ describe('ProxyReader (proxy)', () => {
});
it('should keep forwarding with storage layout consistent after upgrade', async () => {
- proxyReader = await upgrades.deployProxy(
+ proxyReader = await deployProxy(
new ProxyReaderV04__factory(coinbase),
- [ unsRegistry.address, cnsRegistry.address ],
+ [await unsRegistry.getAddress(), await cnsRegistry.getAddress()],
{ unsafeAllow: ['delegatecall'] },
- ) as ProxyReader;
+ );
expect(await proxyReader.exists(walletTokenId)).to.be.equal(true);
expect(await proxyReader.ownerOf(walletTokenId)).to.be.equal(coinbase.address);
const upgradedProxyReader = await upgrades.upgradeProxy(
- proxyReader.address,
+ await getContractAddress(proxyReader),
new ProxyReader__factory(coinbase),
{
unsafeAllow: ['delegatecall'],
@@ -75,8 +76,6 @@ describe('ProxyReader (proxy)', () => {
expect(await proxyReader.exists(walletTokenId)).to.be.equal(true);
expect(await proxyReader.ownerOf(walletTokenId)).to.be.equal(coinbase.address);
- await expect(
- upgradedProxyReader.setOwner(receiver.address),
- ).to.be.revertedWith('ProxyReader: OWNER_ALREADY_SET');
+ await expect(upgradedProxyReader.setOwner(receiver.address)).to.be.revertedWith('ProxyReader: OWNER_ALREADY_SET');
});
});
diff --git a/test/ProxyReader.test.ts b/test/ProxyReader.test.ts
index 9ae908f5..ca487c37 100644
--- a/test/ProxyReader.test.ts
+++ b/test/ProxyReader.test.ts
@@ -1,14 +1,14 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { utils, BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { Result } from 'ethers/lib/utils';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { AbiCoder, id, Result } from 'ethers';
import { ProxyReader__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { ProxyReader, UNSRegistry } from '../types/contracts';
import { CNSRegistry, Resolver } from '../types/dot-crypto/contracts';
import { MintingController } from '../types/dot-crypto/contracts/controllers';
import { CNSRegistry__factory, Resolver__factory } from '../types/factories/dot-crypto/contracts';
import { MintingController__factory } from '../types/factories/dot-crypto/contracts/controllers';
+import { getContractAddress } from '../src/helpers';
import { mintDomain } from './helpers/registry';
import { DEAD_ADDRESS, ZERO_ADDRESS, TLD } from './helpers/constants';
import { getInterfaceId } from './helpers/proxy';
@@ -26,12 +26,12 @@ describe('ProxyReader', () => {
let signers: SignerWithAddress[], coinbase: SignerWithAddress, accounts: string[];
- let walletTokenId: BigNumber, cryptoTokenId: BigNumber;
+ let walletTokenId: bigint, cryptoTokenId: bigint;
before(async () => {
signers = await ethers.getSigners();
[coinbase] = signers;
- [, ...accounts] = signers.map(s => s.address);
+ [, ...accounts] = signers.map((s) => s.address);
// deploy UNS
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
@@ -40,9 +40,12 @@ describe('ProxyReader', () => {
// deploy CNS
cnsRegistry = await new CNSRegistry__factory(coinbase).deploy();
- mintingController = await new MintingController__factory(coinbase).deploy(cnsRegistry.address);
- await cnsRegistry.addController(mintingController.address);
- resolver = await new Resolver__factory(coinbase).deploy(cnsRegistry.address, mintingController.address);
+ mintingController = await new MintingController__factory(coinbase).deploy(await cnsRegistry.getAddress());
+ await cnsRegistry.addController(await mintingController.getAddress());
+ resolver = await new Resolver__factory(coinbase).deploy(
+ await cnsRegistry.getAddress(),
+ await mintingController.getAddress(),
+ );
// mint .wallet TLD
await unsRegistry.mintTLD(TLD.WALLET, 'wallet');
@@ -52,10 +55,10 @@ describe('ProxyReader', () => {
// mint .crypto
cryptoTokenId = await unsRegistry.namehash([domainName, 'crypto']);
- await mintingController.mintSLDWithResolver(coinbase.address, domainName, resolver.address);
+ await mintingController.mintSLDWithResolver(coinbase.address, domainName, await resolver.getAddress());
proxyReader = await new ProxyReader__factory(coinbase).deploy();
- await proxyReader.initialize(unsRegistry.address, cnsRegistry.address);
+ await proxyReader.initialize(await unsRegistry.getAddress(), await cnsRegistry.getAddress());
});
it('should support IERC165 interface', async () => {
@@ -68,8 +71,17 @@ describe('ProxyReader', () => {
describe('IRegistryReader', () => {
it('should support IRegistryReader interface', async () => {
const functions = [
- 'tokenURI', 'isApprovedOrOwner', 'resolverOf', 'namehash', 'balanceOf',
- 'ownerOf', 'getApproved', 'isApprovedForAll', 'exists', 'reverseOf', 'reverseNameOf',
+ 'tokenURI',
+ 'isApprovedOrOwner',
+ 'resolverOf',
+ 'namehash',
+ 'balanceOf',
+ 'ownerOf',
+ 'getApproved',
+ 'isApprovedForAll',
+ 'exists',
+ 'reverseOf',
+ 'reverseNameOf',
];
const interfaceId = getInterfaceId(proxyReader, functions);
@@ -78,9 +90,9 @@ describe('ProxyReader', () => {
});
it('should revert isApprovedForAll call', async () => {
- await expect(
- proxyReader.isApprovedForAll(accounts[0], accounts[1]),
- ).to.be.revertedWith('ProxyReader: UNSUPPORTED_METHOD');
+ await expect(proxyReader.isApprovedForAll(accounts[0], accounts[1])).to.be.revertedWith(
+ 'ProxyReader: UNSUPPORTED_METHOD',
+ );
});
describe('getApproved', () => {
@@ -162,7 +174,7 @@ describe('ProxyReader', () => {
describe('ownerOf', () => {
it('should return empty owner for unknown domain', async () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
- const owners = await proxyReader.callStatic.ownerOf(unknownTokenId);
+ const owners = await proxyReader.ownerOf.staticCall(unknownTokenId);
expect(owners).to.be.equal(ZERO_ADDRESS);
});
@@ -190,7 +202,7 @@ describe('ProxyReader', () => {
const resolverResult = await unsRegistry.resolverOf(walletTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be.equal(unsRegistry.address);
+ expect(resolverResult).to.be.equal(await unsRegistry.getAddress());
});
it('should return resolver of .crypto domain', async () => {
@@ -198,7 +210,7 @@ describe('ProxyReader', () => {
const resolverResult = await cnsRegistry.resolverOf(cryptoTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be.equal(resolver.address);
+ expect(resolverResult).to.be.equal(await resolver.getAddress());
});
});
@@ -208,8 +220,9 @@ describe('ProxyReader', () => {
const resolverResult = await unsRegistry.tokenURI(walletTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('/40559307672254207728557027035302885851369665055277251407821151545011532191308');
+ expect(resolverResult).to.be.equal(
+ '/40559307672254207728557027035302885851369665055277251407821151545011532191308',
+ );
});
it('should return tokenURI of .crypto domain', async () => {
@@ -227,8 +240,9 @@ describe('ProxyReader', () => {
const resolverResult = await unsRegistry.namehash(['test', 'wallet']);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('50586162622368517199428676025463367639931450566950616867100918499864570754504');
+ expect(resolverResult).to.be.equal(
+ '50586162622368517199428676025463367639931450566950616867100918499864570754504',
+ );
});
it('should return namehash of .crypto domain', async () => {
@@ -237,8 +251,9 @@ describe('ProxyReader', () => {
const resolverResult = await cnsRegistry.childIdOf(TLD.CRYPTO, 'test');
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('82856763987730893573226808376519199326595862773989062576563108342755511775491');
+ expect(resolverResult).to.be.equal(
+ '82856763987730893573226808376519199326595862773989062576563108342755511775491',
+ );
});
});
@@ -252,7 +267,7 @@ describe('ProxyReader', () => {
const proxyResult = await proxyReader.balanceOf(account);
const resolverResult1 = await unsRegistry.balanceOf(account);
const resolverResult2 = await cnsRegistry.balanceOf(account);
- expect(proxyResult).to.be.equal(resolverResult1.add(resolverResult2));
+ expect(proxyResult).to.be.equal(resolverResult1 + resolverResult2);
});
});
@@ -362,7 +377,7 @@ describe('ProxyReader', () => {
it('should resolve empty record value for .crypto domain when resolver is not valid', async () => {
const tokenId = await unsRegistry.namehash(['test-sgh-q1-4', 'crypto']);
- const nonResolverAddress = proxyReader.address;
+ const nonResolverAddress = await getContractAddress(proxyReader);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q1-4', nonResolverAddress);
@@ -459,7 +474,7 @@ describe('ProxyReader', () => {
it('should resolve empty records value for .crypto domain when resolver is not valid', async () => {
const _tokenId = await unsRegistry.namehash(['test-sgh-q2-4', 'crypto']);
- const nonResolverAddress = proxyReader.address;
+ const nonResolverAddress = await getContractAddress(proxyReader);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q2-4', nonResolverAddress);
@@ -471,7 +486,7 @@ describe('ProxyReader', () => {
describe('getByHash', () => {
it('should return value of record for .wallet domain', async () => {
- const keyHash = utils.id('get_key_4235');
+ const keyHash = id('get_key_4235');
await unsRegistry.set('get_key_4235', 'value1454', walletTokenId);
const proxyResult = await proxyReader.getByHash(keyHash, walletTokenId);
@@ -482,7 +497,7 @@ describe('ProxyReader', () => {
});
it('should return value of record for .crypto domain', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
await resolver.set('get_key_0946', 'value4521', cryptoTokenId);
const proxyResult = await proxyReader.getByHash(keyHash, cryptoTokenId);
@@ -493,7 +508,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty record value for .crypto domain when token not found', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
const tokenId = await unsRegistry.namehash(['test-sgh-q3', 'crypto']);
const proxyResult = await proxyReader.getByHash(keyHash, tokenId);
@@ -502,7 +517,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty record value for .crypto domain when resolver not found', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
const tokenId = await unsRegistry.namehash(['test-sgh-q3', 'crypto']);
await mintingController.mintSLD(coinbase.address, 'test-sgh-q3');
@@ -512,7 +527,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty record value for .crypto domain when resolver is 0xdead', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
const tokenId = await unsRegistry.namehash(['test-sgh-q3-2', 'crypto']);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q3-2', DEAD_ADDRESS);
@@ -522,7 +537,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty record value for .crypto domain when resolver is EOA', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
const tokenId = await unsRegistry.namehash(['test-sgh-q3-3', 'crypto']);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q3-3', coinbase.address);
@@ -532,10 +547,10 @@ describe('ProxyReader', () => {
});
it('should resolve empty record value for .crypto domain when resolver is not valid', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
const tokenId = await unsRegistry.namehash(['test-sgh-q3-4', 'crypto']);
- const nonResolverAddress = proxyReader.address;
+ const nonResolverAddress = await getContractAddress(proxyReader);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q3-4', nonResolverAddress);
@@ -547,7 +562,7 @@ describe('ProxyReader', () => {
describe('getManyByHash', () => {
it('should return list with empty value for unregistered key', async () => {
- const keyHash = utils.id('key_aaaaaa');
+ const keyHash = id('key_aaaaaa');
const result = await proxyReader.getManyByHash([keyHash], walletTokenId);
expect(result[0]).to.be.eql(['']);
});
@@ -555,7 +570,7 @@ describe('ProxyReader', () => {
it('should return list with single value for .wallet domain', async () => {
const [key] = keys;
const [value] = values;
- const keyHash = utils.id(key);
+ const keyHash = id(key);
await unsRegistry.set(key, value, walletTokenId);
const proxyResult = await proxyReader.getManyByHash([keyHash], walletTokenId);
@@ -568,7 +583,7 @@ describe('ProxyReader', () => {
it('should return list with single value for .crypto domain', async () => {
const [key] = keys;
const [value] = values;
- const keyHash = utils.id(key);
+ const keyHash = id(key);
await resolver.set(key, value, cryptoTokenId);
const proxyResult = await proxyReader.getManyByHash([keyHash], cryptoTokenId);
@@ -579,7 +594,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty records value for .crypto domain when token not found', async () => {
- const keyHash = utils.id(keys[0]);
+ const keyHash = id(keys[0]);
const tokenId = await unsRegistry.namehash(['test-sgh-q4', 'crypto']);
const proxyResult = await proxyReader.getManyByHash([keyHash], tokenId);
@@ -588,7 +603,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty records value for .crypto domain when resolver not found', async () => {
- const keyHash = utils.id(keys[0]);
+ const keyHash = id(keys[0]);
const tokenId = await unsRegistry.namehash(['test-sgh-q5', 'crypto']);
await mintingController.mintSLD(coinbase.address, 'test-sgh-q5');
@@ -598,8 +613,8 @@ describe('ProxyReader', () => {
});
it('should resolve empty records value for .crypto domain when resolver is 0xdead', async () => {
- const keyHash = utils.id(keys[0]);
- const tokenId = await unsRegistry.namehash([ 'test-sgh-q5-2', 'crypto']);
+ const keyHash = id(keys[0]);
+ const tokenId = await unsRegistry.namehash(['test-sgh-q5-2', 'crypto']);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q5-2', DEAD_ADDRESS);
const proxyResult = await proxyReader.getManyByHash([keyHash], tokenId);
@@ -608,7 +623,7 @@ describe('ProxyReader', () => {
});
it('should resolve empty records value for .crypto domain when resolver is EOA', async () => {
- const keyHash = utils.id(keys[0]);
+ const keyHash = id(keys[0]);
const tokenId = await unsRegistry.namehash(['test-sgh-q5-3', 'crypto']);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q5-3', coinbase.address);
@@ -618,10 +633,10 @@ describe('ProxyReader', () => {
});
it('should resolve empty records value for .crypto domain when resolver is not valid', async () => {
- const keyHash = utils.id(keys[0]);
+ const keyHash = id(keys[0]);
const tokenId = await unsRegistry.namehash(['test-sgh-q5-4', 'crypto']);
- const nonResolverAddress = proxyReader.address;
+ const nonResolverAddress = await getContractAddress(proxyReader);
await mintingController.mintSLDWithResolver(coinbase.address, 'test-sgh-q5-4', nonResolverAddress);
@@ -646,7 +661,7 @@ describe('ProxyReader', () => {
const tokenId = await unsRegistry.namehash(['hey_hoy_1037', 'wallet']);
// act
- const data = await proxyReader.callStatic.getData(keys, tokenId);
+ const data = await proxyReader.getData.staticCall(keys, tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, ['', '']]);
@@ -657,7 +672,7 @@ describe('ProxyReader', () => {
const tokenId = await cnsRegistry.childIdOf(TLD.CRYPTO, 'hey_hoy_1037');
// act
- const data = await proxyReader.callStatic.getData(keys, tokenId);
+ const data = await proxyReader.getData.staticCall(keys, tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, ['', '']]);
@@ -667,13 +682,13 @@ describe('ProxyReader', () => {
// arrange
const _domainName = 'hey_hoy_121';
const tokenId = await cnsRegistry.childIdOf(TLD.CRYPTO, _domainName);
- await mintingController.mintSLDWithResolver(coinbase.address, _domainName, resolver.address);
+ await mintingController.mintSLDWithResolver(coinbase.address, _domainName, await resolver.getAddress());
// act
- const data = await proxyReader.callStatic.getData(keys, tokenId);
+ const data = await proxyReader.getData.staticCall(keys, tokenId);
// asserts
- expect(data).to.be.eql([resolver.address, coinbase.address, ['', '']]);
+ expect(data).to.be.eql([await resolver.getAddress(), coinbase.address, ['', '']]);
});
it('should return data for .wallet domain', async () => {
@@ -681,10 +696,10 @@ describe('ProxyReader', () => {
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['hey_hoy_121', 'wallet'] });
// act
- const data = await proxyReader.callStatic.getData(keys, tokenId);
+ const data = await proxyReader.getData.staticCall(keys, tokenId);
// asserts
- expect(data).to.be.eql([unsRegistry.address, coinbase.address, ['', '']]);
+ expect(data).to.be.eql([await unsRegistry.getAddress(), coinbase.address, ['', '']]);
});
it('should return data for .crypto domain when resolver is 0xdead', async () => {
@@ -707,7 +722,7 @@ describe('ProxyReader', () => {
it('should return data for .crypto domain when resolver is not valid', async () => {
const tokenId = await unsRegistry.namehash(['hey-hoy-re-4723', 'crypto']);
- const nonResolverAddress = proxyReader.address;
+ const nonResolverAddress = await getContractAddress(proxyReader);
await mintingController.mintSLDWithResolver(coinbase.address, 'hey-hoy-re-4723', nonResolverAddress);
@@ -719,7 +734,7 @@ describe('ProxyReader', () => {
describe('getDataForMany', () => {
it('should return empty lists for empty list of domains', async () => {
- const data = await proxyReader.callStatic.getDataForMany([], []);
+ const data = await proxyReader.getDataForMany.staticCall([], []);
expect(data).to.be.eql([[], [], []]);
});
@@ -731,10 +746,17 @@ describe('ProxyReader', () => {
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataForMany(keys, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataForMany.staticCall(keys, [_walletTokenId, _cryptoTokenId]);
// asserts
- expect(data).to.be.eql([[ZERO_ADDRESS, ZERO_ADDRESS], [ZERO_ADDRESS, ZERO_ADDRESS], [['', ''], ['', '']]]);
+ expect(data).to.be.eql([
+ [ZERO_ADDRESS, ZERO_ADDRESS],
+ [ZERO_ADDRESS, ZERO_ADDRESS],
+ [
+ ['', ''],
+ ['', ''],
+ ],
+ ]);
});
it('should return data for multiple .crypto|.wallet domains', async () => {
@@ -742,20 +764,23 @@ describe('ProxyReader', () => {
const _domainName = 'test_1291';
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
const _walletTokenId = await mintDomain({ unsRegistry, owner: coinbase, labels: [_domainName, 'wallet'] });
- await mintingController.mintSLDWithResolver(coinbase.address, _domainName, resolver.address);
+ await mintingController.mintSLDWithResolver(coinbase.address, _domainName, await resolver.getAddress());
for (let i = 0; i < keys.length; i++) {
await resolver.set(keys[i], values[i], _cryptoTokenId);
await unsRegistry.set(keys[i], values[i], _walletTokenId);
}
// act
- const data = await proxyReader.callStatic.getDataForMany(keys, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataForMany.staticCall(keys, [_walletTokenId, _cryptoTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, resolver.address],
+ [await unsRegistry.getAddress(), await resolver.getAddress()],
[coinbase.address, coinbase.address],
- [['test.value1', 'test.value2'], ['test.value1', 'test.value2']],
+ [
+ ['test.value1', 'test.value2'],
+ ['test.value1', 'test.value2'],
+ ],
]);
});
@@ -764,11 +789,11 @@ describe('ProxyReader', () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataForMany([], [walletTokenId, unknownTokenId]);
+ const data = await proxyReader.getDataForMany.staticCall([], [walletTokenId, unknownTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, ZERO_ADDRESS],
+ [await unsRegistry.getAddress(), ZERO_ADDRESS],
[coinbase.address, ZERO_ADDRESS],
[[], []],
]);
@@ -778,12 +803,12 @@ describe('ProxyReader', () => {
describe('getDataByHash', () => {
it('should return empty data for non-existing .wallet domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'hey_hoy_29224';
const _tokenId = await unsRegistry.namehash([_domainName, 'wallet']);
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, _tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, _tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, ['', ''], ['', '']]);
@@ -791,11 +816,11 @@ describe('ProxyReader', () => {
it('should return empty data for non-existing .crypto domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await cnsRegistry.childIdOf(TLD.CRYPTO, 'hey_hoy_29228');
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, ['', ''], ['', '']]);
@@ -803,48 +828,38 @@ describe('ProxyReader', () => {
it('should return data by hashes for .crypto domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'hey_hoy_292';
const tokenId = await cnsRegistry.childIdOf(TLD.CRYPTO, _domainName);
- await mintingController.mintSLDWithResolver(coinbase.address, _domainName, resolver.address);
+ await mintingController.mintSLDWithResolver(coinbase.address, _domainName, await resolver.getAddress());
for (let i = 0; i < keys.length; i++) {
await resolver.set(keys[i], values[i], tokenId);
}
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, tokenId);
// assert
- expect(data).to.be.eql([
- resolver.address,
- coinbase.address,
- keys,
- values,
- ]);
+ expect(data).to.be.eql([await resolver.getAddress(), coinbase.address, keys, values]);
});
it('should return data by hashes for .wallet domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['hey_hoy_292', 'wallet'] });
for (let i = 0; i < keys.length; i++) {
await unsRegistry.set(keys[i], values[i], tokenId);
}
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, tokenId);
// assert
- expect(data).to.be.eql([
- unsRegistry.address,
- coinbase.address,
- keys,
- values,
- ]);
+ expect(data).to.be.eql([await unsRegistry.getAddress(), coinbase.address, keys, values]);
});
it('should return data for .crypto domain when resolver is 0xdead', async () => {
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await unsRegistry.namehash(['hey-hoy-reh-2723', 'crypto']);
await mintingController.mintSLDWithResolver(coinbase.address, 'hey-hoy-reh-2723', DEAD_ADDRESS);
@@ -854,7 +869,7 @@ describe('ProxyReader', () => {
});
it('should return data for .crypto domain when resolver is EOA', async () => {
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await unsRegistry.namehash(['hey-hoy-reh-3723', 'crypto']);
await mintingController.mintSLDWithResolver(coinbase.address, 'hey-hoy-reh-3723', coinbase.address);
@@ -864,10 +879,10 @@ describe('ProxyReader', () => {
});
it('should return data for .crypto domain when resolver is not valid', async () => {
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await unsRegistry.namehash(['hey-hoy-reh-4723', 'crypto']);
- const nonResolverAddress = proxyReader.address;
+ const nonResolverAddress = await getContractAddress(proxyReader);
await mintingController.mintSLDWithResolver(coinbase.address, 'hey-hoy-reh-4723', nonResolverAddress);
@@ -879,37 +894,43 @@ describe('ProxyReader', () => {
describe('getDataByHashForMany', () => {
it('should return empty lists for empty list of domains', async () => {
- const data = await proxyReader.callStatic.getDataByHashForMany([], []);
+ const data = await proxyReader.getDataByHashForMany.staticCall([], []);
expect(data).to.be.eql([[], [], [], []]);
});
it('should return empty data for non-existing .crypto|.wallet domains', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'hey_hoy_1037';
const _walletTokenId = await unsRegistry.namehash([_domainName, 'wallet']);
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataByHashForMany(hashes, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataByHashForMany.staticCall(hashes, [_walletTokenId, _cryptoTokenId]);
// asserts
expect(data).to.be.eql([
[ZERO_ADDRESS, ZERO_ADDRESS],
[ZERO_ADDRESS, ZERO_ADDRESS],
- [['', ''], ['', '']],
- [['', ''], ['', '']],
+ [
+ ['', ''],
+ ['', ''],
+ ],
+ [
+ ['', ''],
+ ['', ''],
+ ],
]);
});
it('should return data for multiple .crypto|.wallet domains', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'test_1082q';
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
const _walletTokenId = await mintDomain({ unsRegistry, owner: coinbase, labels: ['test_1082q', 'wallet'] });
- await mintingController.mintSLDWithResolver(coinbase.address, _domainName, resolver.address);
+ await mintingController.mintSLDWithResolver(coinbase.address, _domainName, await resolver.getAddress());
for (let i = 0; i < keys.length; i++) {
await resolver.set(keys[i], values[i], _cryptoTokenId);
@@ -917,14 +938,20 @@ describe('ProxyReader', () => {
}
// act
- const data = await proxyReader.callStatic.getDataByHashForMany(hashes, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataByHashForMany.staticCall(hashes, [_walletTokenId, _cryptoTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, resolver.address],
+ [await unsRegistry.getAddress(), await resolver.getAddress()],
[coinbase.address, coinbase.address],
- [['test.key1', 'test.key2'], ['test.key1', 'test.key2']],
- [['test.value1', 'test.value2'], ['test.value1', 'test.value2']],
+ [
+ ['test.key1', 'test.key2'],
+ ['test.key1', 'test.key2'],
+ ],
+ [
+ ['test.value1', 'test.value2'],
+ ['test.value1', 'test.value2'],
+ ],
]);
});
@@ -933,11 +960,11 @@ describe('ProxyReader', () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataByHashForMany([], [walletTokenId, unknownTokenId]);
+ const data = await proxyReader.getDataByHashForMany.staticCall([], [walletTokenId, unknownTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, ZERO_ADDRESS],
+ [await unsRegistry.getAddress(), ZERO_ADDRESS],
[coinbase.address, ZERO_ADDRESS],
[[], []],
[[], []],
@@ -948,13 +975,13 @@ describe('ProxyReader', () => {
describe('ownerOfForMany', () => {
it('should return empty owner for unknown domain', async () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
- const owners = await proxyReader.callStatic.ownerOfForMany([unknownTokenId]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([unknownTokenId]);
expect(owners).to.be.eql([ZERO_ADDRESS]);
});
it('should return empty list for empty list of domains', async () => {
- const owners = await proxyReader.callStatic.ownerOfForMany([]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([]);
expect(owners).to.be.eql([]);
});
@@ -963,10 +990,10 @@ describe('ProxyReader', () => {
const _domainName = 'test_125t';
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
const _walletTokenId = await mintDomain({ unsRegistry, owner: accounts[0], labels: ['test_125t', 'wallet'] });
- await mintingController.mintSLDWithResolver(coinbase.address, _domainName, resolver.address);
+ await mintingController.mintSLDWithResolver(coinbase.address, _domainName, await resolver.getAddress());
// act
- const owners = await proxyReader.callStatic.ownerOfForMany([walletTokenId, _walletTokenId, _cryptoTokenId]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([walletTokenId, _walletTokenId, _cryptoTokenId]);
// assert
expect(owners).to.be.eql([coinbase.address, accounts[0], coinbase.address]);
@@ -977,7 +1004,7 @@ describe('ProxyReader', () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
// act
- const owners = await proxyReader.callStatic.ownerOfForMany([walletTokenId, unknownTokenId]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([walletTokenId, unknownTokenId]);
// assert
expect(owners).to.be.eql([coinbase.address, ZERO_ADDRESS]);
@@ -993,24 +1020,12 @@ describe('ProxyReader', () => {
const ethLegacyKey = 'crypto.ETH.address';
beforeEach(async () => {
- await proxyReader.functions['addBlockchainNetworks(string[],string[])'](
- ['MATIC', 'ETH'],
- ['ETH', 'ETH'],
- );
+ await proxyReader['addBlockchainNetworks(string[],string[])'](['MATIC', 'ETH'], ['ETH', 'ETH']);
- await proxyReader.addLegacyRecords(
- ['token.ETH.MATIC.USDC.address'],
- [[usdcMaticLegacyKey, usdcLegacyKey]],
- );
- await proxyReader.addLegacyRecords(
- ['token.ETH.ETH.USDC.address'],
- [[usdcEthLegacyKey, usdcLegacyKey]],
- );
+ await proxyReader.addLegacyRecords(['token.ETH.MATIC.USDC.address'], [[usdcMaticLegacyKey, usdcLegacyKey]]);
+ await proxyReader.addLegacyRecords(['token.ETH.ETH.USDC.address'], [[usdcEthLegacyKey, usdcLegacyKey]]);
- await proxyReader.addLegacyRecords(
- ['token.ETH.ETH.ETH.address'],
- [[ethLegacyKey]],
- );
+ await proxyReader.addLegacyRecords(['token.ETH.ETH.ETH.address'], [[ethLegacyKey]]);
});
afterEach(async () => {
@@ -1027,9 +1042,7 @@ describe('ProxyReader', () => {
describe('getAddressKeys', () => {
it('returns the list of address keys and legacy keys in the correct order', async () => {
- expect(
- await proxyReader.getAddressKeys('ETH', 'USDC'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('ETH', 'USDC')).to.deep.equal([
'token.ETH.ETH.USDC.address',
usdcEthLegacyKey,
usdcLegacyKey,
@@ -1037,9 +1050,7 @@ describe('ProxyReader', () => {
'token.ETH.address',
]);
- expect(
- await proxyReader.getAddressKeys('MATIC', 'USDC'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('MATIC', 'USDC')).to.deep.equal([
'token.ETH.MATIC.USDC.address',
usdcMaticLegacyKey,
usdcLegacyKey,
@@ -1047,9 +1058,7 @@ describe('ProxyReader', () => {
'token.ETH.address',
]);
- expect(
- await proxyReader.getAddressKeys('ETH', 'ETH'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('ETH', 'ETH')).to.deep.equal([
'token.ETH.ETH.ETH.address',
ethLegacyKey,
'token.ETH.ETH.address',
@@ -1058,17 +1067,13 @@ describe('ProxyReader', () => {
});
it('returns the list of address keys without legacy keys if they are not defined', async () => {
- expect(
- await proxyReader.getAddressKeys('ETH', 'USDT'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('ETH', 'USDT')).to.deep.equal([
'token.ETH.ETH.USDT.address',
'token.ETH.ETH.address',
'token.ETH.address',
]);
- expect(
- await proxyReader.getAddressKeys('MATIC', 'MATIC'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('MATIC', 'MATIC')).to.deep.equal([
'token.ETH.MATIC.MATIC.address',
'token.ETH.MATIC.address',
'token.ETH.address',
@@ -1076,289 +1081,175 @@ describe('ProxyReader', () => {
});
it('returns empty list when family is not defined', async () => {
- expect(
- await proxyReader.getAddressKeys('UDTOKEN', 'UDTOKEN'),
- ).to.deep.equal([]);
+ expect(await proxyReader.getAddressKeys('UDTOKEN', 'UDTOKEN')).to.deep.equal([]);
});
});
describe('getAddress', () => {
+ const getAddress = async (network: string, token: string, tokenId: bigint) => {
+ return await proxyReader.getFunction('getAddress')(network, token, tokenId);
+ };
+
it('should return most specific record by address keys for UNS domains', async () => {
- const [
- tokenKey,
- legacyTokenKey1,
- legacyTokenKey2,
- networkKey,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey1, legacyTokenKey2, networkKey, familyKey] = await proxyReader.getAddressKeys(
+ 'ETH',
+ 'USDC',
+ );
await unsRegistry.set(familyKey, 'family-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('family-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('family-level-record');
await unsRegistry.set(networkKey, 'network-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('network-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('network-level-record');
await unsRegistry.set(legacyTokenKey2, 'legacy-key-2-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('legacy-key-2-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('legacy-key-2-record');
await unsRegistry.set(legacyTokenKey1, 'legacy-key-1-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('legacy-key-1-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('legacy-key-1-record');
await unsRegistry.set(tokenKey, 'token-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('token-level-record');
});
it('should return most specific record by address keys for UNS domains with skipped levels', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- ,
- ,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, , , familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await unsRegistry.set(tokenKey, 'token-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('token-level-record');
await unsRegistry.set(familyKey, 'family-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('token-level-record');
await unsRegistry.set(tokenKey, '', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('family-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('family-level-record');
await unsRegistry.set(legacyTokenKey, 'legacy-key-1-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('legacy-key-1-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('legacy-key-1-record');
});
it('should return most specific record by address keys for CNS domains', async () => {
- const [
- tokenKey,
- legacyTokenKey1,
- legacyTokenKey2,
- networkKey,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey1, legacyTokenKey2, networkKey, familyKey] = await proxyReader.getAddressKeys(
+ 'ETH',
+ 'USDC',
+ );
await resolver.set(familyKey, 'family-level-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('family-level-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('family-level-record');
await resolver.set(networkKey, 'network-level-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('network-level-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('network-level-record');
await resolver.set(legacyTokenKey2, 'legacy-key-2-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('legacy-key-2-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('legacy-key-2-record');
await resolver.set(legacyTokenKey1, 'legacy-key-1-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('legacy-key-1-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('legacy-key-1-record');
await resolver.set(tokenKey, 'token-level-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('token-level-record');
});
it('should return most specific record by address keys for CNS domains with skipped levels', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- ,
- ,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, , , familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await resolver.set(tokenKey, 'token-level-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('token-level-record');
await resolver.set(familyKey, 'family-level-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('token-level-record');
await resolver.set(tokenKey, '', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('family-level-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('family-level-record');
await resolver.set(legacyTokenKey, 'legacy-key-1-record', cryptoTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', cryptoTokenId),
- ).to.equal('legacy-key-1-record');
+ expect(await getAddress('ETH', 'USDC', cryptoTokenId)).to.equal('legacy-key-1-record');
});
it('should return empty string if family is not defined', async () => {
- expect(
- await proxyReader.getAddress('UDTOKEN', 'UDTOKEN', walletTokenId),
- ).to.equal('');
+ expect(await getAddress('UDTOKEN', 'UDTOKEN', walletTokenId)).to.equal('');
});
it('should return empty string if token does not exist', async () => {
- expect(
- await proxyReader.getAddress('ETH', 'USDC', 0x42),
- ).to.equal('');
+ expect(await getAddress('ETH', 'USDC', BigInt(0x42))).to.equal('');
});
});
describe('getAddressKey', () => {
it('should return most specific record key by address keys for UNS domains', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- networkKey,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, networkKey, familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await unsRegistry.set(familyKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(familyKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(familyKey);
await unsRegistry.set(networkKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(networkKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(networkKey);
await unsRegistry.set(legacyTokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(legacyTokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(legacyTokenKey);
await unsRegistry.set(tokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(tokenKey);
});
it('should return most specific record key by address keys for UNS domains with skipped levels', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- ,
- ,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, , , familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await unsRegistry.set(tokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(tokenKey);
await unsRegistry.set(familyKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(tokenKey);
await unsRegistry.set(tokenKey, '', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(familyKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(familyKey);
await unsRegistry.set(legacyTokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(legacyTokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(legacyTokenKey);
});
it('should return most specific record key by address keys for CNS domains', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- networkKey,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, networkKey, familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await resolver.set(familyKey, '42', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(familyKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(familyKey);
await resolver.set(networkKey, '42', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(networkKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(networkKey);
await resolver.set(legacyTokenKey, '42', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(legacyTokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(legacyTokenKey);
await resolver.set(tokenKey, '42', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(tokenKey);
});
it('should return most specific record key by address keys for CNS domains with skipped levels', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- ,
- ,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, , , familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await resolver.set(tokenKey, '42', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(tokenKey);
await resolver.set(familyKey, '42', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(tokenKey);
await resolver.set(tokenKey, '', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(familyKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(familyKey);
await resolver.set(legacyTokenKey, 'legacy-key-1-record', cryptoTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId),
- ).to.equal(legacyTokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', cryptoTokenId)).to.equal(legacyTokenKey);
});
it('should return empty string if token does not exist', async () => {
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', 0x42),
- ).to.equal('');
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', 0x42)).to.equal('');
});
it('should return empty string if family is not defined', async () => {
- expect(
- await proxyReader.getAddressKey('UDTOKEN', 'UDTOKEN', walletTokenId),
- ).to.equal('');
+ expect(await proxyReader.getAddressKey('UDTOKEN', 'UDTOKEN', walletTokenId)).to.equal('');
});
});
});
@@ -1387,7 +1278,7 @@ describe('ProxyReader', () => {
const tokenId = await mintDomain({ unsRegistry, owner: accounts[3], labels: ['hey_hoy_98hds', 'wallet'] });
const address = await proxyReader.registryOf(tokenId);
- expect(address).to.be.equal(unsRegistry.address);
+ expect(address).to.be.equal(await unsRegistry.getAddress());
});
it('should return value for .crypto domain', async () => {
@@ -1396,54 +1287,54 @@ describe('ProxyReader', () => {
await mintingController.mintSLD(accounts[3], _domainName);
const address = await proxyReader.registryOf(_cryptoTokenId);
- expect(address).to.be.equal(cnsRegistry.address);
+ expect(address).to.be.equal(await cnsRegistry.getAddress());
});
it('should return value for .crypto TLD', async () => {
const address = await proxyReader.registryOf(TLD.CRYPTO);
- expect(address).to.be.equal(cnsRegistry.address);
+ expect(address).to.be.equal(await cnsRegistry.getAddress());
});
it('should return value for .wallet TLD', async () => {
const address = await proxyReader.registryOf(TLD.WALLET);
- expect(address).to.be.equal(unsRegistry.address);
+ expect(address).to.be.equal(await unsRegistry.getAddress());
});
});
describe('Multicall', () => {
- const abiCoder = new utils.AbiCoder();
+ const abiCoder = new AbiCoder();
it('should return owners', async () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
- const owners = await proxyReader.callStatic.multicall([
+ const owners = await proxyReader.multicall.staticCall([
proxyReader.interface.encodeFunctionData('ownerOf', [unknownTokenId]),
proxyReader.interface.encodeFunctionData('ownerOf', [walletTokenId]),
proxyReader.interface.encodeFunctionData('ownerOf', [cryptoTokenId]),
]);
- const results = owners.map(owner => abiCoder.decode(['address'], owner)[0]);
+ const results = owners.map((owner) => abiCoder.decode(['address'], owner)[0]);
expect(results).to.be.eql([ZERO_ADDRESS, coinbase.address, coinbase.address]);
});
it('should return existance of tokens', async () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
- const owners = await proxyReader.callStatic.multicall([
+ const owners = await proxyReader.multicall.staticCall([
proxyReader.interface.encodeFunctionData('exists', [unknownTokenId]),
proxyReader.interface.encodeFunctionData('exists', [walletTokenId]),
proxyReader.interface.encodeFunctionData('exists', [cryptoTokenId]),
]);
- const results = owners.map(owner => abiCoder.decode(['bool'], owner)[0]);
+ const results = owners.map((owner) => abiCoder.decode(['bool'], owner)[0]);
expect(results).to.be.eql([false, true, true]);
});
it('should return token uri\'s for UNS and CNS', async () => {
- const owners = await proxyReader.callStatic.multicall([
+ const owners = await proxyReader.multicall.staticCall([
proxyReader.interface.encodeFunctionData('tokenURI', [cryptoTokenId]),
proxyReader.interface.encodeFunctionData('tokenURI', [walletTokenId]),
]);
- const results = owners.map(owner => abiCoder.decode(['string'], owner)[0]);
+ const results = owners.map((owner) => abiCoder.decode(['string'], owner)[0]);
expect(results).to.be.eql([
'test_42.crypto',
'/40559307672254207728557027035302885851369665055277251407821151545011532191308',
@@ -1453,7 +1344,7 @@ describe('ProxyReader', () => {
it('should return heterogeneous call results', async () => {
await resolver.set('het_key_111', 'het_value_1', cryptoTokenId);
- const data = await proxyReader.callStatic.multicall([
+ const data = await proxyReader.multicall.staticCall([
proxyReader.interface.encodeFunctionData('ownerOf', [cryptoTokenId]),
proxyReader.interface.encodeFunctionData('get', ['het_key_111', cryptoTokenId]),
proxyReader.interface.encodeFunctionData('getData', [['het_key_111'], cryptoTokenId]),
@@ -1463,26 +1354,16 @@ describe('ProxyReader', () => {
const results: Result[] = [];
- [
- ['address'],
- ['string'],
- ['address', 'address', 'string[]'],
- ['address[]'],
- ['address'],
- ].forEach((output, i) => {
+ [['address'], ['string'], ['address', 'address', 'string[]'], ['address[]'], ['address']].forEach((output, i) => {
results.push(abiCoder.decode(output, data[i]));
});
expect(results).to.be.eql([
[coinbase.address],
['het_value_1'],
- [
- resolver.address,
- coinbase.address,
- ['het_value_1'],
- ],
+ [await resolver.getAddress(), coinbase.address, ['het_value_1']],
[[coinbase.address, coinbase.address]],
- [unsRegistry.address],
+ [await unsRegistry.getAddress()],
]);
});
});
@@ -1498,48 +1379,40 @@ describe('ProxyReader', () => {
const selector = 'addBlockchainNetworks(string[],string[])';
it('should save blockchain networks to families mapping', async () => {
- await proxyReader.connect(coinbase)[selector](
- ['NETWORK', 'NETWORK2'], ['FAMILY', 'FAMILY2'],
- );
+ await proxyReader.connect(coinbase)[selector](['NETWORK', 'NETWORK2'], ['FAMILY', 'FAMILY2']);
- const [key1 ] = await proxyReader.getAddressKeys('NETWORK', 'TOKEN');
- const [key2 ] = await proxyReader.getAddressKeys('NETWORK2', 'TOKEN2');
+ const [key1] = await proxyReader.getAddressKeys('NETWORK', 'TOKEN');
+ const [key2] = await proxyReader.getAddressKeys('NETWORK2', 'TOKEN2');
expect(key1).to.equal('token.FAMILY.NETWORK.TOKEN.address');
expect(key2).to.equal('token.FAMILY2.NETWORK2.TOKEN2.address');
- await proxyReader.connect(coinbase)[selector](
- ['NETWORK'], ['ANOTHER_FAMILY'],
- );
+ await proxyReader.connect(coinbase)[selector](['NETWORK'], ['ANOTHER_FAMILY']);
- const [key3 ] = await proxyReader.getAddressKeys('NETWORK', 'TOKEN');
+ const [key3] = await proxyReader.getAddressKeys('NETWORK', 'TOKEN');
expect(key3).to.equal('token.ANOTHER_FAMILY.NETWORK.TOKEN.address');
});
it('should emit SetNetworkFamily event', async () => {
- await expect(
- proxyReader.connect(coinbase)[selector](
- ['MATIC'], ['ETH'],
- ),
- ).to.emit(proxyReader, 'SetNetworkFamily').withArgs('MATIC');
+ await expect(proxyReader.connect(coinbase)[selector](['MATIC'], ['ETH']))
+ .to.emit(proxyReader, 'SetNetworkFamily')
+ .withArgs('MATIC');
- await expect(
- proxyReader.connect(coinbase)[selector](
- ['MATIC', 'BSC'], ['ETH', 'ETH'],
- ),
- ).to.emit(proxyReader, 'SetNetworkFamily').withArgs('BSC');
+ await expect(proxyReader.connect(coinbase)[selector](['MATIC', 'BSC'], ['ETH', 'ETH']))
+ .to.emit(proxyReader, 'SetNetworkFamily')
+ .withArgs('BSC');
});
it('should revert if not owner', async () => {
- await expect(
- proxyReader.connect(reader)[selector]([], []),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(proxyReader.connect(reader)[selector]([], [])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
it('should revert if args arrays have different lengths', async () => {
- await expect(
- proxyReader.connect(coinbase)[selector](['NETWORK'], []),
- ).to.be.revertedWith('ProxyReader: LENGTH_NOT_EQUAL');
+ await expect(proxyReader.connect(coinbase)[selector](['NETWORK'], [])).to.be.revertedWith(
+ 'ProxyReader: LENGTH_NOT_EQUAL',
+ );
});
});
@@ -1547,61 +1420,49 @@ describe('ProxyReader', () => {
const selector = 'addBlockchainNetworks(string[],string)';
it('should save blockchain networks to families mapping', async () => {
- await proxyReader.connect(coinbase)[selector](
- ['NETWORK', 'NETWORK2'], 'FAMILY',
- );
+ await proxyReader.connect(coinbase)[selector](['NETWORK', 'NETWORK2'], 'FAMILY');
- const [key1 ] = await proxyReader.getAddressKeys('NETWORK', 'TOKEN');
- const [key2 ] = await proxyReader.getAddressKeys('NETWORK2', 'TOKEN2');
+ const [key1] = await proxyReader.getAddressKeys('NETWORK', 'TOKEN');
+ const [key2] = await proxyReader.getAddressKeys('NETWORK2', 'TOKEN2');
expect(key1).to.equal('token.FAMILY.NETWORK.TOKEN.address');
expect(key2).to.equal('token.FAMILY.NETWORK2.TOKEN2.address');
- await proxyReader.connect(coinbase)[selector](
- ['NETWORK2'], 'ANOTHER_FAMILY',
- );
+ await proxyReader.connect(coinbase)[selector](['NETWORK2'], 'ANOTHER_FAMILY');
- const [key3 ] = await proxyReader.getAddressKeys('NETWORK2', 'TOKEN');
+ const [key3] = await proxyReader.getAddressKeys('NETWORK2', 'TOKEN');
expect(key3).to.equal('token.ANOTHER_FAMILY.NETWORK2.TOKEN.address');
});
it('should emit SetNetworkFamily event', async () => {
- await expect(
- proxyReader.connect(coinbase)[selector](
- ['MATIC'], 'ETH',
- ),
- ).to.emit(proxyReader, 'SetNetworkFamily').withArgs('MATIC');
+ await expect(proxyReader.connect(coinbase)[selector](['MATIC'], 'ETH'))
+ .to.emit(proxyReader, 'SetNetworkFamily')
+ .withArgs('MATIC');
- await expect(
- proxyReader.connect(coinbase)[selector](
- ['MATIC', 'BSC'], 'ETH',
- ),
- ).to.emit(proxyReader, 'SetNetworkFamily').withArgs('BSC');
+ await expect(proxyReader.connect(coinbase)[selector](['MATIC', 'BSC'], 'ETH'))
+ .to.emit(proxyReader, 'SetNetworkFamily')
+ .withArgs('BSC');
});
it('should revert if not owner', async () => {
- await expect(
- proxyReader.connect(reader)[selector](['NETWORK'], 'TOKEN'),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(proxyReader.connect(reader)[selector](['NETWORK'], 'TOKEN')).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
});
describe('addLegacyRecords(string[],string[][])', () => {
it('should save legacy keys and overwrite existing', async () => {
- await proxyReader.connect(coinbase)['addBlockchainNetworks(string[],string)'](
- ['SOME_NETWORK', 'SOME_OTHER_NETWORK'], 'SOME_FAMILY',
- );
+ await proxyReader
+ .connect(coinbase)
+ ['addBlockchainNetworks(string[],string)'](['SOME_NETWORK', 'SOME_OTHER_NETWORK'], 'SOME_FAMILY');
- await proxyReader.connect(coinbase).addLegacyRecords(
- [
- 'token.SOME_FAMILY.SOME_NETWORK.TOKEN.address',
- 'token.SOME_FAMILY.SOME_OTHER_NETWORK.TOKEN.address',
- ],
- [
- ['legacyRecord', 'legacyRecord2'],
- ['otherLegacyRecord'],
- ],
- );
+ await proxyReader
+ .connect(coinbase)
+ .addLegacyRecords(
+ ['token.SOME_FAMILY.SOME_NETWORK.TOKEN.address', 'token.SOME_FAMILY.SOME_OTHER_NETWORK.TOKEN.address'],
+ [['legacyRecord', 'legacyRecord2'], ['otherLegacyRecord']],
+ );
const keys = await proxyReader.getAddressKeys('SOME_NETWORK', 'TOKEN');
const keys2 = await proxyReader.getAddressKeys('SOME_OTHER_NETWORK', 'TOKEN');
@@ -1613,14 +1474,12 @@ describe('ProxyReader', () => {
expect(keys2.length).to.equal(4);
expect(keys2[1]).to.equal('otherLegacyRecord');
- await proxyReader.connect(coinbase).addLegacyRecords(
- [
- 'token.SOME_FAMILY.SOME_NETWORK.TOKEN.address',
- ],
- [
- ['legacyRecord', 'legacyRecord2', 'legacyRecord3'],
- ],
- );
+ await proxyReader
+ .connect(coinbase)
+ .addLegacyRecords(
+ ['token.SOME_FAMILY.SOME_NETWORK.TOKEN.address'],
+ [['legacyRecord', 'legacyRecord2', 'legacyRecord3']],
+ );
const keys3 = await proxyReader.getAddressKeys('SOME_NETWORK', 'TOKEN');
@@ -1629,12 +1488,7 @@ describe('ProxyReader', () => {
expect(keys3[2]).to.equal('legacyRecord2');
expect(keys3[3]).to.equal('legacyRecord3');
- await proxyReader.connect(coinbase).addLegacyRecords(
- [
- 'token.SOME_FAMILY.SOME_NETWORK.TOKEN.address',
- ],
- [[]],
- );
+ await proxyReader.connect(coinbase).addLegacyRecords(['token.SOME_FAMILY.SOME_NETWORK.TOKEN.address'], [[]]);
const keys4 = await proxyReader.getAddressKeys('SOME_NETWORK', 'TOKEN');
expect(keys4.length).to.equal(3);
@@ -1644,33 +1498,25 @@ describe('ProxyReader', () => {
const tokenKey1 = 'token.FAMILY.NETWORK.TOKEN.address';
const tokenKey2 = 'token.FAMILY2.NETWORK.TOKEN.address';
- await expect(
- proxyReader.connect(coinbase).addLegacyRecords(
- [tokenKey1],
- [[]],
- ),
- ).to.emit(proxyReader, 'SetLegacyRecords')
+ await expect(proxyReader.connect(coinbase).addLegacyRecords([tokenKey1], [[]]))
+ .to.emit(proxyReader, 'SetLegacyRecords')
.withArgs(tokenKey1);
- await expect(
- proxyReader.connect(coinbase).addLegacyRecords(
- [tokenKey1, tokenKey2],
- [[], []],
- ),
- ).to.emit(proxyReader, 'SetLegacyRecords')
+ await expect(proxyReader.connect(coinbase).addLegacyRecords([tokenKey1, tokenKey2], [[], []]))
+ .to.emit(proxyReader, 'SetLegacyRecords')
.withArgs(tokenKey2);
});
it('should revert if args arrays have different lengths', async () => {
- await expect(
- proxyReader.connect(coinbase).addLegacyRecords(['RECORD_KEY'], []),
- ).to.be.revertedWith('ProxyReader: LENGTH_NOT_EQUAL');
+ await expect(proxyReader.connect(coinbase).addLegacyRecords(['RECORD_KEY'], [])).to.be.revertedWith(
+ 'ProxyReader: LENGTH_NOT_EQUAL',
+ );
});
it('should revert if not owner', async () => {
- await expect(
- proxyReader.connect(reader).addLegacyRecords([], []),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(proxyReader.connect(reader).addLegacyRecords([], [])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
});
});
@@ -1683,9 +1529,7 @@ describe('ProxyReader', () => {
});
it('has an owner', async () => {
- expect(
- await proxyReader.owner(),
- ).to.equal(coinbase.address);
+ expect(await proxyReader.owner()).to.equal(coinbase.address);
});
describe('transferOwnership', () => {
@@ -1698,15 +1542,15 @@ describe('ProxyReader', () => {
});
it('reverts if non-owner', async () => {
- await expect(
- proxyReader.transferOwnership(newOwner.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(proxyReader.transferOwnership(newOwner.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
it('guards ownership against stuck state', async function () {
- await expect(
- proxyReader.connect(newOwner).transferOwnership(ZERO_ADDRESS),
- ).to.be.revertedWith('Ownable: new owner is the zero address');
+ await expect(proxyReader.connect(newOwner).transferOwnership(ZERO_ADDRESS)).to.be.revertedWith(
+ 'Ownable: new owner is the zero address',
+ );
});
});
@@ -1720,9 +1564,7 @@ describe('ProxyReader', () => {
});
it('prevents non-owners from renouncement', async function () {
- await expect(
- proxyReader.renounceOwnership(),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(proxyReader.renounceOwnership()).to.be.revertedWith('Ownable: caller is not the owner');
});
});
});
diff --git a/test/ProxyReader.uns.test.ts b/test/ProxyReader.uns.test.ts
index 7104ae2e..25911779 100644
--- a/test/ProxyReader.uns.test.ts
+++ b/test/ProxyReader.uns.test.ts
@@ -1,8 +1,7 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-
-import { BigNumber, utils } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { id } from 'ethers';
import { ProxyReader, UNSRegistry } from '../types/contracts';
import { ProxyReader__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { getInterfaceId } from './helpers/proxy';
@@ -16,12 +15,12 @@ describe('ProxyReader (UNS only)', () => {
let unsRegistry: UNSRegistry, proxyReader: ProxyReader;
let signers: SignerWithAddress[], coinbase: SignerWithAddress, accounts: string[];
- let walletTokenId: BigNumber, cryptoTokenId: BigNumber;
+ let walletTokenId: bigint, cryptoTokenId: bigint;
before(async () => {
signers = await ethers.getSigners();
[coinbase] = signers;
- [, ...accounts] = signers.map(s => s.address);
+ [, ...accounts] = signers.map((s) => s.address);
// deploy UNS
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
@@ -49,7 +48,7 @@ describe('ProxyReader (UNS only)', () => {
});
proxyReader = await new ProxyReader__factory(coinbase).deploy();
- await proxyReader.initialize(unsRegistry.address, ZERO_ADDRESS);
+ await proxyReader.initialize(unsRegistry.getAddress(), ZERO_ADDRESS);
});
it('should support IERC165 interface', async () => {
@@ -62,8 +61,17 @@ describe('ProxyReader (UNS only)', () => {
describe('IRegistryReader', () => {
it('should support IRegistryReader interface', async () => {
const functions = [
- 'tokenURI', 'isApprovedOrOwner', 'resolverOf', 'namehash', 'balanceOf',
- 'ownerOf', 'getApproved', 'isApprovedForAll', 'exists', 'reverseOf', 'reverseNameOf',
+ 'tokenURI',
+ 'isApprovedOrOwner',
+ 'resolverOf',
+ 'namehash',
+ 'balanceOf',
+ 'ownerOf',
+ 'getApproved',
+ 'isApprovedForAll',
+ 'exists',
+ 'reverseOf',
+ 'reverseNameOf',
];
const interfaceId = getInterfaceId(proxyReader, functions);
@@ -71,9 +79,9 @@ describe('ProxyReader (UNS only)', () => {
});
it('should revert isApprovedForAll call', async () => {
- await expect(
- proxyReader.isApprovedForAll(accounts[0], accounts[1]),
- ).to.be.revertedWith('ProxyReader: UNSUPPORTED_METHOD');
+ await expect(proxyReader.isApprovedForAll(accounts[0], accounts[1])).to.be.revertedWith(
+ 'ProxyReader: UNSUPPORTED_METHOD',
+ );
});
describe('getApproved', () => {
@@ -165,7 +173,7 @@ describe('ProxyReader (UNS only)', () => {
describe('ownerOf', () => {
it('should return empty owner for unknown domain', async () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
- const owners = await proxyReader.callStatic.ownerOf(unknownTokenId);
+ const owners = await proxyReader.ownerOf.staticCall(unknownTokenId);
expect(owners).to.be.equal(ZERO_ADDRESS);
});
@@ -192,7 +200,7 @@ describe('ProxyReader (UNS only)', () => {
const resolverResult = await unsRegistry.resolverOf(walletTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be.equal(unsRegistry.address);
+ expect(resolverResult).to.be.equal(await unsRegistry.getAddress());
});
it('should return resolver of .crypto domain', async () => {
@@ -200,7 +208,7 @@ describe('ProxyReader (UNS only)', () => {
const resolverResult = await unsRegistry.resolverOf(cryptoTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be.equal(unsRegistry.address);
+ expect(resolverResult).to.be.equal(await unsRegistry.getAddress());
});
it('should return false value when token does not exist', async () => {
@@ -215,8 +223,9 @@ describe('ProxyReader (UNS only)', () => {
const resolverResult = await unsRegistry.tokenURI(walletTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('/40559307672254207728557027035302885851369665055277251407821151545011532191308');
+ expect(resolverResult).to.be.equal(
+ '/40559307672254207728557027035302885851369665055277251407821151545011532191308',
+ );
});
it('should return tokenURI of .crypto domain', async () => {
@@ -224,8 +233,9 @@ describe('ProxyReader (UNS only)', () => {
const resolverResult = await unsRegistry.tokenURI(cryptoTokenId);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('/107771857897517834290909154724501010203356272148473478760301214125032721342346');
+ expect(resolverResult).to.be.equal(
+ '/107771857897517834290909154724501010203356272148473478760301214125032721342346',
+ );
});
it('should return empty tokenURI when token does not exist', async () => {
@@ -240,8 +250,9 @@ describe('ProxyReader (UNS only)', () => {
const resolverResult = await unsRegistry.namehash(['test', 'wallet']);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('50586162622368517199428676025463367639931450566950616867100918499864570754504');
+ expect(resolverResult).to.be.equal(
+ '50586162622368517199428676025463367639931450566950616867100918499864570754504',
+ );
});
it('should return namehash of .crypto domain', async () => {
@@ -249,8 +260,9 @@ describe('ProxyReader (UNS only)', () => {
const resolverResult = await unsRegistry.namehash(['test', 'crypto']);
expect(proxyResult).to.be.equal(resolverResult);
- expect(resolverResult).to.be
- .equal('82856763987730893573226808376519199326595862773989062576563108342755511775491');
+ expect(resolverResult).to.be.equal(
+ '82856763987730893573226808376519199326595862773989062576563108342755511775491',
+ );
});
});
@@ -405,7 +417,7 @@ describe('ProxyReader (UNS only)', () => {
describe('getByHash', () => {
it('should return value of record for .wallet domain', async () => {
- const keyHash = utils.id('get_key_4235');
+ const keyHash = id('get_key_4235');
await unsRegistry.set('get_key_4235', 'value1454', walletTokenId);
const proxyResult = await proxyReader.getByHash(keyHash, walletTokenId);
@@ -416,7 +428,7 @@ describe('ProxyReader (UNS only)', () => {
});
it('should return value of record for .crypto domain', async () => {
- const keyHash = utils.id('get_key_0946');
+ const keyHash = id('get_key_0946');
await unsRegistry.set('get_key_0946', 'value4521', cryptoTokenId);
const proxyResult = await proxyReader.getByHash(keyHash, cryptoTokenId);
@@ -429,7 +441,7 @@ describe('ProxyReader (UNS only)', () => {
describe('getManyByHash', () => {
it('should return list with empty value for unregistered key', async () => {
- const keyHash = utils.id('key_aaaaaa');
+ const keyHash = id('key_aaaaaa');
const result = await proxyReader.getManyByHash([keyHash], walletTokenId);
expect(result[0]).to.be.eql(['']);
});
@@ -437,7 +449,7 @@ describe('ProxyReader (UNS only)', () => {
it('should return list with single value for .wallet domain', async () => {
const [key] = keys;
const [value] = values;
- const keyHash = utils.id(key);
+ const keyHash = id(key);
await unsRegistry.set(key, value, walletTokenId);
const proxyResult = await proxyReader.getManyByHash([keyHash], walletTokenId);
@@ -450,7 +462,7 @@ describe('ProxyReader (UNS only)', () => {
it('should return list with single value for .crypto domain', async () => {
const [key] = keys;
const [value] = values;
- const keyHash = utils.id(key);
+ const keyHash = id(key);
await unsRegistry.set(key, value, cryptoTokenId);
const proxyResult = await proxyReader.getManyByHash([keyHash], cryptoTokenId);
@@ -477,7 +489,7 @@ describe('ProxyReader (UNS only)', () => {
const _tokenId = await unsRegistry.namehash([_domainName, 'wallet']);
// act
- const data = await proxyReader.callStatic.getData(keys, _tokenId);
+ const data = await proxyReader.getData.staticCall(keys, _tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, ['', '']]);
@@ -489,7 +501,7 @@ describe('ProxyReader (UNS only)', () => {
const _tokenId = await unsRegistry.namehash([_domainName, 'crypto']);
// act
- const data = await proxyReader.callStatic.getData(keys, _tokenId);
+ const data = await proxyReader.getData.staticCall(keys, _tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, ['', '']]);
@@ -500,10 +512,10 @@ describe('ProxyReader (UNS only)', () => {
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['hey_hoy_121', 'crypto'] });
// act
- const data = await proxyReader.callStatic.getData(keys, tokenId);
+ const data = await proxyReader.getData.staticCall(keys, tokenId);
// asserts
- expect(data).to.be.eql([unsRegistry.address, coinbase.address, ['', '']]);
+ expect(data).to.be.eql([await unsRegistry.getAddress(), coinbase.address, ['', '']]);
});
it('should return data for .wallet domain', async () => {
@@ -511,16 +523,16 @@ describe('ProxyReader (UNS only)', () => {
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['hey_hoy_121', 'wallet'] });
// act
- const data = await proxyReader.callStatic.getData(keys, tokenId);
+ const data = await proxyReader.getData.staticCall(keys, tokenId);
// asserts
- expect(data).to.be.eql([unsRegistry.address, coinbase.address, ['', '']]);
+ expect(data).to.be.eql([await unsRegistry.getAddress(), coinbase.address, ['', '']]);
});
});
describe('getDataForMany', () => {
it('should return empty lists for empty list of domains', async () => {
- const data = await proxyReader.callStatic.getDataForMany([], []);
+ const data = await proxyReader.getDataForMany.staticCall([], []);
expect(data).to.be.eql([[], [], []]);
});
@@ -532,10 +544,17 @@ describe('ProxyReader (UNS only)', () => {
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataForMany(keys, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataForMany.staticCall(keys, [_walletTokenId, _cryptoTokenId]);
// asserts
- expect(data).to.be.eql([[ZERO_ADDRESS, ZERO_ADDRESS], [ZERO_ADDRESS, ZERO_ADDRESS], [['', ''], ['', '']]]);
+ expect(data).to.be.eql([
+ [ZERO_ADDRESS, ZERO_ADDRESS],
+ [ZERO_ADDRESS, ZERO_ADDRESS],
+ [
+ ['', ''],
+ ['', ''],
+ ],
+ ]);
});
it('should return data for multiple .crypto|.wallet domains', async () => {
@@ -550,13 +569,16 @@ describe('ProxyReader (UNS only)', () => {
}
// act
- const data = await proxyReader.callStatic.getDataForMany(keys, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataForMany.staticCall(keys, [_walletTokenId, _cryptoTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, unsRegistry.address],
+ [await unsRegistry.getAddress(), await unsRegistry.getAddress()],
[coinbase.address, coinbase.address],
- [['test.value1', 'test.value2'], ['test.value1', 'test.value2']],
+ [
+ ['test.value1', 'test.value2'],
+ ['test.value1', 'test.value2'],
+ ],
]);
});
@@ -565,11 +587,11 @@ describe('ProxyReader (UNS only)', () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataForMany([], [walletTokenId, unknownTokenId]);
+ const data = await proxyReader.getDataForMany.staticCall([], [walletTokenId, unknownTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, ZERO_ADDRESS],
+ [await unsRegistry.getAddress(), ZERO_ADDRESS],
[coinbase.address, ZERO_ADDRESS],
[[], []],
]);
@@ -579,12 +601,12 @@ describe('ProxyReader (UNS only)', () => {
describe('getDataByHash', () => {
it('should return empty data for non-existing .wallet domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'hey_hoy_29224';
const _tokenId = await unsRegistry.namehash([_domainName, 'wallet']);
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, _tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, _tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, keys, ['', '']]);
@@ -592,12 +614,12 @@ describe('ProxyReader (UNS only)', () => {
it('should return empty data for non-existing .crypto domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'hey_hoy_29228';
const _tokenId = await unsRegistry.namehash([_domainName, 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, _tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, _tokenId);
// asserts
expect(data).to.be.eql([ZERO_ADDRESS, ZERO_ADDRESS, keys, ['', '']]);
@@ -605,74 +627,67 @@ describe('ProxyReader (UNS only)', () => {
it('should return data by hashes for .crypto domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['hey_hoy_292', 'crypto'] });
for (let i = 0; i < keys.length; i++) {
await unsRegistry.set(keys[i], values[i], tokenId);
}
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, tokenId);
// assert
- expect(data).to.be.eql([
- unsRegistry.address,
- coinbase.address,
- keys,
- values,
- ]);
+ expect(data).to.be.eql([await unsRegistry.getAddress(), coinbase.address, keys, values]);
});
it('should return data by hashes for .wallet domain', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['hey_hoy_292', 'wallet'] });
for (let i = 0; i < keys.length; i++) {
await unsRegistry.set(keys[i], values[i], tokenId);
}
// act
- const data = await proxyReader.callStatic.getDataByHash(hashes, tokenId);
+ const data = await proxyReader.getDataByHash.staticCall(hashes, tokenId);
// assert
- expect(data).to.be.eql([
- unsRegistry.address,
- coinbase.address,
- keys,
- values,
- ]);
+ expect(data).to.be.eql([await unsRegistry.getAddress(), coinbase.address, keys, values]);
});
});
describe('getDataByHashForMany', () => {
it('should return empty lists for empty list of domains', async () => {
- const data = await proxyReader.callStatic.getDataByHashForMany([], []);
+ const data = await proxyReader.getDataByHashForMany.staticCall([], []);
expect(data).to.be.eql([[], [], [], []]);
});
it('should return empty data for non-existing .crypto|.wallet domains', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'hey_hoy_1037';
const _walletTokenId = await unsRegistry.namehash([_domainName, 'wallet']);
const _cryptoTokenId = await unsRegistry.namehash([_domainName, 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataByHashForMany(hashes, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataByHashForMany.staticCall(hashes, [_walletTokenId, _cryptoTokenId]);
// asserts
expect(data).to.be.eql([
[ZERO_ADDRESS, ZERO_ADDRESS],
[ZERO_ADDRESS, ZERO_ADDRESS],
[keys, keys],
- [['', ''], ['', '']],
+ [
+ ['', ''],
+ ['', ''],
+ ],
]);
});
it('should return data for multiple .crypto|.wallet domains', async () => {
// arrange
- const hashes = keys.map(utils.id);
+ const hashes = keys.map(id);
const _domainName = 'test_1082q';
const _walletTokenId = await mintDomain({ unsRegistry, owner: coinbase, labels: [_domainName, 'wallet'] });
const _cryptoTokenId = await mintDomain({ unsRegistry, owner: coinbase, labels: [_domainName, 'crypto'] });
@@ -683,14 +698,20 @@ describe('ProxyReader (UNS only)', () => {
}
// act
- const data = await proxyReader.callStatic.getDataByHashForMany(hashes, [_walletTokenId, _cryptoTokenId]);
+ const data = await proxyReader.getDataByHashForMany.staticCall(hashes, [_walletTokenId, _cryptoTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, unsRegistry.address],
+ [await unsRegistry.getAddress(), await unsRegistry.getAddress()],
[coinbase.address, coinbase.address],
- [['test.key1', 'test.key2'], ['test.key1', 'test.key2']],
- [['test.value1', 'test.value2'], ['test.value1', 'test.value2']],
+ [
+ ['test.key1', 'test.key2'],
+ ['test.key1', 'test.key2'],
+ ],
+ [
+ ['test.value1', 'test.value2'],
+ ['test.value1', 'test.value2'],
+ ],
]);
});
@@ -699,11 +720,11 @@ describe('ProxyReader (UNS only)', () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
// act
- const data = await proxyReader.callStatic.getDataByHashForMany([], [walletTokenId, unknownTokenId]);
+ const data = await proxyReader.getDataByHashForMany.staticCall([], [walletTokenId, unknownTokenId]);
// assert
expect(data).to.be.eql([
- [unsRegistry.address, ZERO_ADDRESS],
+ [await unsRegistry.getAddress(), ZERO_ADDRESS],
[coinbase.address, ZERO_ADDRESS],
[[], []],
[[], []],
@@ -714,12 +735,12 @@ describe('ProxyReader (UNS only)', () => {
describe('ownerOfForMany', () => {
it('should return empty owner for unknown domain', async () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
- const owners = await proxyReader.callStatic.ownerOfForMany([unknownTokenId]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([unknownTokenId]);
expect(owners).to.be.eql([ZERO_ADDRESS]);
});
it('should return empty list for empty list of domains', async () => {
- const owners = await proxyReader.callStatic.ownerOfForMany([]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([]);
expect(owners).to.be.eql([]);
});
@@ -730,7 +751,7 @@ describe('ProxyReader (UNS only)', () => {
const _cryptoTokenId = await mintDomain({ unsRegistry, owner: coinbase, labels: [_domainName, 'crypto'] });
// act
- const owners = await proxyReader.callStatic.ownerOfForMany([walletTokenId, _walletTokenId, _cryptoTokenId]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([walletTokenId, _walletTokenId, _cryptoTokenId]);
// assert
expect(owners).to.be.eql([coinbase.address, accounts[0], coinbase.address]);
@@ -741,7 +762,7 @@ describe('ProxyReader (UNS only)', () => {
const unknownTokenId = await unsRegistry.namehash(['unknown', 'crypto']);
// act
- const owners = await proxyReader.callStatic.ownerOfForMany([walletTokenId, unknownTokenId]);
+ const owners = await proxyReader.ownerOfForMany.staticCall([walletTokenId, unknownTokenId]);
// assert
expect(owners).to.be.eql([coinbase.address, ZERO_ADDRESS]);
@@ -757,24 +778,12 @@ describe('ProxyReader (UNS only)', () => {
const ethLegacyKey = 'crypto.ETH.address';
beforeEach(async () => {
- await proxyReader['addBlockchainNetworks(string[],string[])'](
- ['MATIC', 'ETH'],
- ['ETH', 'ETH'],
- );
+ await proxyReader['addBlockchainNetworks(string[],string[])'](['MATIC', 'ETH'], ['ETH', 'ETH']);
- await proxyReader.addLegacyRecords(
- ['token.ETH.MATIC.USDC.address'],
- [[usdcMaticLegacyKey, usdcLegacyKey]],
- );
- await proxyReader.addLegacyRecords(
- ['token.ETH.ETH.USDC.address'],
- [[usdcEthLegacyKey, usdcLegacyKey]],
- );
+ await proxyReader.addLegacyRecords(['token.ETH.MATIC.USDC.address'], [[usdcMaticLegacyKey, usdcLegacyKey]]);
+ await proxyReader.addLegacyRecords(['token.ETH.ETH.USDC.address'], [[usdcEthLegacyKey, usdcLegacyKey]]);
- await proxyReader.addLegacyRecords(
- ['token.ETH.ETH.ETH.address'],
- [[ethLegacyKey]],
- );
+ await proxyReader.addLegacyRecords(['token.ETH.ETH.ETH.address'], [[ethLegacyKey]]);
});
afterEach(async () => {
@@ -790,9 +799,7 @@ describe('ProxyReader (UNS only)', () => {
describe('getAddressKeys', () => {
it('returns the list of address keys and legacy keys in the correct order', async () => {
- expect(
- await proxyReader.getAddressKeys('ETH', 'USDC'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('ETH', 'USDC')).to.deep.equal([
'token.ETH.ETH.USDC.address',
usdcEthLegacyKey,
usdcLegacyKey,
@@ -800,9 +807,7 @@ describe('ProxyReader (UNS only)', () => {
'token.ETH.address',
]);
- expect(
- await proxyReader.getAddressKeys('MATIC', 'USDC'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('MATIC', 'USDC')).to.deep.equal([
'token.ETH.MATIC.USDC.address',
usdcMaticLegacyKey,
usdcLegacyKey,
@@ -810,9 +815,7 @@ describe('ProxyReader (UNS only)', () => {
'token.ETH.address',
]);
- expect(
- await proxyReader.getAddressKeys('ETH', 'ETH'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('ETH', 'ETH')).to.deep.equal([
'token.ETH.ETH.ETH.address',
ethLegacyKey,
'token.ETH.ETH.address',
@@ -821,17 +824,13 @@ describe('ProxyReader (UNS only)', () => {
});
it('returns the list of address keys without legacy keys if they are not defined', async () => {
- expect(
- await proxyReader.getAddressKeys('ETH', 'USDT'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('ETH', 'USDT')).to.deep.equal([
'token.ETH.ETH.USDT.address',
'token.ETH.ETH.address',
'token.ETH.address',
]);
- expect(
- await proxyReader.getAddressKeys('MATIC', 'MATIC'),
- ).to.deep.equal([
+ expect(await proxyReader.getAddressKeys('MATIC', 'MATIC')).to.deep.equal([
'token.ETH.MATIC.MATIC.address',
'token.ETH.MATIC.address',
'token.ETH.address',
@@ -839,163 +838,103 @@ describe('ProxyReader (UNS only)', () => {
});
it('returns empty list when family is not defined', async () => {
- expect(
- await proxyReader.getAddressKeys('UDTOKEN', 'UDTOKEN'),
- ).to.deep.equal([]);
+ expect(await proxyReader.getAddressKeys('UDTOKEN', 'UDTOKEN')).to.deep.equal([]);
});
});
describe('getAddress', () => {
+ const getAddress = async (network: string, token: string, tokenId: bigint) => {
+ return await proxyReader.getFunction('getAddress')(network, token, tokenId);
+ };
+
it('should return most specific record by address keys', async () => {
- const [
- tokenKey,
- legacyTokenKey1,
- legacyTokenKey2,
- networkKey,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey1, legacyTokenKey2, networkKey, familyKey] = await proxyReader.getAddressKeys(
+ 'ETH',
+ 'USDC',
+ );
await unsRegistry.set(familyKey, 'family-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('family-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('family-level-record');
await unsRegistry.set(networkKey, 'network-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('network-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('network-level-record');
await unsRegistry.set(legacyTokenKey2, 'legacy-key-2-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('legacy-key-2-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('legacy-key-2-record');
await unsRegistry.set(legacyTokenKey1, 'legacy-key-1-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('legacy-key-1-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('legacy-key-1-record');
await unsRegistry.set(tokenKey, 'token-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('token-level-record');
});
it('should return most specific record by address keys with skipped levels', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- ,
- ,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, , , familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await unsRegistry.set(tokenKey, 'token-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('token-level-record');
await unsRegistry.set(familyKey, 'family-level-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('token-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('token-level-record');
await unsRegistry.set(tokenKey, '', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('family-level-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('family-level-record');
await unsRegistry.set(legacyTokenKey, 'legacy-key-1-record', walletTokenId);
- expect(
- await proxyReader.getAddress('ETH', 'USDC', walletTokenId),
- ).to.equal('legacy-key-1-record');
+ expect(await getAddress('ETH', 'USDC', walletTokenId)).to.equal('legacy-key-1-record');
});
it('should return empty string if family is not defined', async () => {
- expect(
- await proxyReader.getAddress('UDTOKEN', 'UDTOKEN', walletTokenId),
- ).to.equal('');
+ expect(await getAddress('UDTOKEN', 'UDTOKEN', walletTokenId)).to.equal('');
});
it('should return empty string if token does not exist', async () => {
- expect(
- await proxyReader.getAddress('ETH', 'USDC', 0x42),
- ).to.equal('');
+ expect(await getAddress('ETH', 'USDC', BigInt(42))).to.equal('');
});
});
describe('getAddressKey', () => {
it('should return most specific record key by address keys', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- networkKey,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, networkKey, familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await unsRegistry.set(familyKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(familyKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(familyKey);
await unsRegistry.set(networkKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(networkKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(networkKey);
await unsRegistry.set(legacyTokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(legacyTokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(legacyTokenKey);
await unsRegistry.set(tokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(tokenKey);
});
it('should return most specific record key by address keys with skipped levels', async () => {
- const [
- tokenKey,
- legacyTokenKey,
- ,
- ,
- familyKey,
- ] = await proxyReader.getAddressKeys('ETH', 'USDC');
+ const [tokenKey, legacyTokenKey, , , familyKey] = await proxyReader.getAddressKeys('ETH', 'USDC');
await unsRegistry.set(tokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(tokenKey);
await unsRegistry.set(familyKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(tokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(tokenKey);
await unsRegistry.set(tokenKey, '', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(familyKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(familyKey);
await unsRegistry.set(legacyTokenKey, '42', walletTokenId);
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId),
- ).to.equal(legacyTokenKey);
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', walletTokenId)).to.equal(legacyTokenKey);
});
it('should return empty string if token does not exist', async () => {
- expect(
- await proxyReader.getAddressKey('ETH', 'USDC', 0x42),
- ).to.equal('');
+ expect(await proxyReader.getAddressKey('ETH', 'USDC', 0x42)).to.equal('');
});
it('should return empty string if family is not defined', async () => {
- expect(
- await proxyReader.getAddressKey('UDTOKEN', 'UDTOKEN', walletTokenId),
- ).to.equal('');
+ expect(await proxyReader.getAddressKey('UDTOKEN', 'UDTOKEN', walletTokenId)).to.equal('');
});
});
});
@@ -1021,23 +960,23 @@ describe('ProxyReader (UNS only)', () => {
it('should return value for .wallet domain', async () => {
const tokenId = await mintDomain({ unsRegistry, owner: accounts[3], labels: ['hey_hoy_98hds', 'wallet'] });
const address = await proxyReader.registryOf(tokenId);
- expect(address).to.be.equal(unsRegistry.address);
+ expect(address).to.be.equal(await unsRegistry.getAddress());
});
it('should return value for .crypto domain', async () => {
const tokenId = await mintDomain({ unsRegistry, owner: accounts[3], labels: ['hey_hoy_98hds', 'crypto'] });
const address = await proxyReader.registryOf(tokenId);
- expect(address).to.be.equal(unsRegistry.address);
+ expect(address).to.be.equal(await unsRegistry.getAddress());
});
it('should return value for .crypto TLD', async () => {
const address = await proxyReader.registryOf(TLD.CRYPTO);
- expect(address).to.be.equal(unsRegistry.address);
+ expect(address).to.be.equal(await unsRegistry.getAddress());
});
it('should return value for .wallet TLD', async () => {
const address = await proxyReader.registryOf(TLD.WALLET);
- expect(address).to.be.equal(unsRegistry.address);
+ expect(address).to.be.equal(await unsRegistry.getAddress());
});
});
});
diff --git a/test/RootRegistry.test.ts b/test/RootRegistry.test.ts
index f5a448e6..b54c3277 100644
--- a/test/RootRegistry.test.ts
+++ b/test/RootRegistry.test.ts
@@ -1,9 +1,8 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { BigNumber, utils } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { AbiCoder, hexlify, keccak256 } from 'ethers';
import { MintingManager, UNSRegistry } from '../types/contracts';
-
import { MintingManager__factory, UNSRegistry__factory } from '../types/factories/contracts';
import { CNSRegistry__factory, Resolver__factory } from '../types/factories/dot-crypto/contracts';
import {
@@ -26,6 +25,7 @@ import { SimpleCheckpointManager } from '../types/contracts/@maticnetwork/pos-po
import { buildPredicateExitInput, writeCheckpoint, buildExitInput } from './helpers/polygon';
import { sign, buildExecuteFunc, ExecuteFunc } from './helpers/metatx';
import { TLD, ZERO_ADDRESS } from './helpers/constants';
+import { getLatestBlockTimestamp } from './helpers/utils';
describe('RootRegistry', () => {
let l1UnsRegistry: UNSRegistry, l2UnsRegistry: UNSRegistry, mintingManager: MintingManager, cnsRegistry: CNSRegistry;
@@ -47,7 +47,7 @@ describe('RootRegistry', () => {
let buildExecuteCnsParams: ExecuteFunc, buildExecuteUnsParams: ExecuteFunc;
- const abiCoder = new utils.AbiCoder();
+ const abiCoder = new AbiCoder();
const mintDomainL1 = async (owner: string, labels: string[]) => {
await mintingManager.issueWithRecords(owner, labels, [], [], true);
@@ -65,22 +65,27 @@ describe('RootRegistry', () => {
l1UnsRegistry = await new UNSRegistry__factory(registryOwner).connect(registryOwner).deploy();
cnsRegistry = await new CNSRegistry__factory(registryOwner).deploy();
- mintingController = await new MintingController__factory(registryOwner).deploy(cnsRegistry.address);
- await cnsRegistry.addController(mintingController.address);
+ mintingController = await new MintingController__factory(registryOwner).deploy(await cnsRegistry.getAddress());
+ await cnsRegistry.addController(await mintingController.getAddress());
- signatureController = await new SignatureController__factory(registryOwner).deploy(cnsRegistry.address);
- await cnsRegistry.addController(signatureController.address);
- cnsForwarder = await new CNSRegistryForwarder__factory(registryOwner).deploy(signatureController.address);
+ signatureController = await new SignatureController__factory(registryOwner).deploy(await cnsRegistry.getAddress());
+ await cnsRegistry.addController(await signatureController.getAddress());
+ cnsForwarder = await new CNSRegistryForwarder__factory(registryOwner).deploy(
+ await signatureController.getAddress(),
+ );
- resolver = await new Resolver__factory(registryOwner).deploy(cnsRegistry.address, mintingController.address);
+ resolver = await new Resolver__factory(registryOwner).deploy(
+ await cnsRegistry.getAddress(),
+ await mintingController.getAddress(),
+ );
- uriPrefixController = await new URIPrefixController__factory(registryOwner).deploy(cnsRegistry.address);
- await cnsRegistry.addController(uriPrefixController.address);
+ uriPrefixController = await new URIPrefixController__factory(registryOwner).deploy(await cnsRegistry.getAddress());
+ await cnsRegistry.addController(await uriPrefixController.getAddress());
mintingManager = await new MintingManager__factory(registryOwner).deploy();
- await mintingController.addMinter(mintingManager.address);
- await uriPrefixController.addWhitelisted(mintingManager.address);
+ await mintingController.addMinter(await mintingManager.getAddress());
+ await uriPrefixController.addWhitelisted(await mintingManager.getAddress());
l2UnsRegistry = await new UNSRegistry__factory(registryOwner).connect(registryOwner).deploy();
@@ -92,40 +97,54 @@ describe('RootRegistry', () => {
// deploy and init predicate
predicate = await new MintableERC721Predicate__factory(predicateOwner).connect(predicateOwner).deploy();
- await predicate.initialize(predicateOwner.address);
+ await predicate.initialize(await predicateOwner.getAddress());
// deploy and setup root chain manager
rootChainManager = await new RootChainManager__factory(rcmOwner).connect(rcmOwner).deploy();
await rootChainManager.initialize(rcmOwner.address);
- await rootChainManager.setCheckpointManager(checkpointManager.address);
- await rootChainManager.setStateSender(stateSender.address);
- await rootChainManager.registerPredicate(utils.keccak256(l1UnsRegistry.address), predicate.address);
+ await rootChainManager.setCheckpointManager(await checkpointManager.getAddress());
+ await rootChainManager.setStateSender(await stateSender.getAddress());
+ await rootChainManager.registerPredicate(keccak256(await l1UnsRegistry.getAddress()), await predicate.getAddress());
await rootChainManager.mapToken(
- l1UnsRegistry.address,
- l2UnsRegistry.address,
- utils.keccak256(l1UnsRegistry.address),
+ await l1UnsRegistry.getAddress(),
+ await l2UnsRegistry.getAddress(),
+ keccak256(await l1UnsRegistry.getAddress()),
);
- await predicate.grantRole(await predicate.MANAGER_ROLE(), rootChainManager.address);
+ await predicate.grantRole(await predicate.MANAGER_ROLE(), await rootChainManager.getAddress());
// post-configuration
- await l1UnsRegistry.initialize(mintingManager.address, cnsRegistry.address, rootChainManager.address, ZERO_ADDRESS);
+ await l1UnsRegistry.initialize(
+ await mintingManager.getAddress(),
+ await cnsRegistry.getAddress(),
+ await rootChainManager.getAddress(),
+ ZERO_ADDRESS,
+ );
- await l2UnsRegistry.initialize(registryOwner.address, ZERO_ADDRESS, ZERO_ADDRESS, registryOwner.address);
+ await l2UnsRegistry.initialize(
+ await registryOwner.getAddress(),
+ ZERO_ADDRESS,
+ ZERO_ADDRESS,
+ await registryOwner.getAddress(),
+ );
await l2UnsRegistry.mintTLD(TLD.WALLET, 'wallet');
await mintingManager.initialize(
- l1UnsRegistry.address,
- mintingController.address,
- uriPrefixController.address,
- resolver.address,
+ await l1UnsRegistry.getAddress(),
+ await mintingController.getAddress(),
+ await uriPrefixController.getAddress(),
+ await resolver.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
);
await mintingManager.addMinter(registryOwner.address);
await mintingManager.setTokenURIPrefix('https://metadata.unstoppabledomains.ooo/metadata/');
- buildExecuteCnsParams = buildExecuteFunc(cnsRegistry.interface, signatureController.address, cnsForwarder);
- buildExecuteUnsParams = buildExecuteFunc(l1UnsRegistry.interface, l1UnsRegistry.address, l1UnsRegistry);
+ buildExecuteCnsParams = buildExecuteFunc(
+ cnsRegistry.interface,
+ await signatureController.getAddress(),
+ cnsForwarder,
+ );
+ buildExecuteUnsParams = buildExecuteFunc(l1UnsRegistry.interface, await l1UnsRegistry.getAddress(), l1UnsRegistry);
});
describe('Deposit', () => {
@@ -135,9 +154,9 @@ describe('RootRegistry', () => {
await expect(l1UnsRegistry.connect(owner).depositToPolygon(tokenId))
.to.emit(predicate, 'LockedMintableERC721')
- .withArgs(l1UnsRegistry.address, owner.address, l1UnsRegistry.address, tokenId);
+ .withArgs(await l1UnsRegistry.getAddress(), owner.address, await l1UnsRegistry.getAddress(), tokenId);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
});
it('should meta-deposit token through UNS registry', async () => {
@@ -146,9 +165,9 @@ describe('RootRegistry', () => {
const { req, signature } = await buildExecuteUnsParams('depositToPolygon(uint256)', [tokenId], owner, tokenId);
await expect(l1UnsRegistry.execute(req, signature))
.to.emit(predicate, 'LockedMintableERC721')
- .withArgs(l1UnsRegistry.address, owner.address, l1UnsRegistry.address, tokenId);
+ .withArgs(await l1UnsRegistry.getAddress(), owner.address, await l1UnsRegistry.getAddress(), tokenId);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
});
it('should deposit CNS domains through MintingManager', async () => {
@@ -159,14 +178,14 @@ describe('RootRegistry', () => {
.connect(owner)
['safeTransferFrom(address,address,uint256,bytes)'](
owner.address,
- l1UnsRegistry.address,
+ await l1UnsRegistry.getAddress(),
tokenId,
abiCoder.encode(['bool'], [true]),
);
await expect(cnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await l1UnsRegistry.exists(tokenId)).to.be.equal(true);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
});
it('should mate-deposit CNS domains through MintingManager', async () => {
@@ -175,7 +194,7 @@ describe('RootRegistry', () => {
const { req, signature } = await buildExecuteCnsParams(
'safeTransferFrom(address,address,uint256,bytes)',
- [owner.address, l1UnsRegistry.address, tokenId, abiCoder.encode(['bool'], [true])],
+ [owner.address, await l1UnsRegistry.getAddress(), tokenId, abiCoder.encode(['bool'], [true])],
owner,
tokenId,
);
@@ -184,7 +203,7 @@ describe('RootRegistry', () => {
await expect(cnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await l1UnsRegistry.exists(tokenId)).to.be.equal(true);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
});
it('should mate-deposit(legacy) CNS domains through MintingManager', async () => {
@@ -194,20 +213,26 @@ describe('RootRegistry', () => {
const data = cnsRegistry.interface.encodeFunctionData('safeTransferFrom(address,address,uint256,bytes)', [
owner.address,
- l1UnsRegistry.address,
+ await l1UnsRegistry.getAddress(),
tokenId,
abiCoder.encode(['bool'], [true]),
]);
const nonce = await signatureController.nonceOf(tokenId);
- const signature = await sign(data, signatureController.address, nonce, owner);
+ const signature = await sign(data, await signatureController.getAddress(), nonce, owner);
await signatureController
.connect(spender)
- [funcSig](owner.address, l1UnsRegistry.address, tokenId, abiCoder.encode(['bool'], [true]), signature);
+ [funcSig](
+ owner.address,
+ await l1UnsRegistry.getAddress(),
+ tokenId,
+ abiCoder.encode(['bool'], [true]),
+ signature,
+ );
await expect(cnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await l1UnsRegistry.exists(tokenId)).to.be.equal(true);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
});
});
@@ -215,14 +240,14 @@ describe('RootRegistry', () => {
it('should deposit token', async () => {
const tokenId = await mintDomainL1(owner.address, ['poly-2d-aq1', 'wallet']);
- await l1UnsRegistry.connect(owner).approve(predicate.address, tokenId);
+ await l1UnsRegistry.connect(owner).approve(await predicate.getAddress(), tokenId);
- const data = utils.defaultAbiCoder.encode(['uint256'], [tokenId]);
- await expect(rootChainManager.connect(owner).depositFor(owner.address, l1UnsRegistry.address, data))
+ const data = new AbiCoder().encode(['uint256'], [tokenId]);
+ await expect(rootChainManager.connect(owner).depositFor(owner.address, await l1UnsRegistry.getAddress(), data))
.to.emit(predicate, 'LockedMintableERC721')
- .withArgs(owner.address, owner.address, l1UnsRegistry.address, tokenId);
+ .withArgs(owner.address, owner.address, await l1UnsRegistry.getAddress(), tokenId);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
});
});
@@ -233,7 +258,7 @@ describe('RootRegistry', () => {
await cnsRegistry
.connect(owner)
- ['safeTransferFrom(address,address,uint256)'](owner.address, l1UnsRegistry.address, tokenId);
+ ['safeTransferFrom(address,address,uint256)'](owner.address, await l1UnsRegistry.getAddress(), tokenId);
await expect(cnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await l1UnsRegistry.exists(tokenId)).to.be.equal(true);
@@ -247,13 +272,15 @@ describe('RootRegistry', () => {
const data = cnsRegistry.interface.encodeFunctionData('safeTransferFrom(address,address,uint256)', [
owner.address,
- l1UnsRegistry.address,
+ await l1UnsRegistry.getAddress(),
tokenId,
]);
const nonce = await signatureController.nonceOf(tokenId);
- const signature = await sign(data, signatureController.address, nonce, owner);
+ const signature = await sign(data, await signatureController.getAddress(), nonce, owner);
- await signatureController.connect(spender)[funcSig](owner.address, l1UnsRegistry.address, tokenId, signature);
+ await signatureController
+ .connect(spender)
+ [funcSig](owner.address, await l1UnsRegistry.getAddress(), tokenId, signature);
await expect(cnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await l1UnsRegistry.exists(tokenId)).to.be.equal(true);
@@ -268,7 +295,7 @@ describe('RootRegistry', () => {
.connect(owner)
['safeTransferFrom(address,address,uint256,bytes)'](
owner.address,
- l1UnsRegistry.address,
+ await l1UnsRegistry.getAddress(),
tokenId,
abiCoder.encode(['bool'], [false]),
);
@@ -285,16 +312,22 @@ describe('RootRegistry', () => {
const data = cnsRegistry.interface.encodeFunctionData('safeTransferFrom(address,address,uint256,bytes)', [
owner.address,
- l1UnsRegistry.address,
+ await l1UnsRegistry.getAddress(),
tokenId,
abiCoder.encode(['bool'], [false]),
]);
const nonce = await signatureController.nonceOf(tokenId);
- const signature = await sign(data, signatureController.address, nonce, owner);
+ const signature = await sign(data, await signatureController.getAddress(), nonce, owner);
await signatureController
.connect(spender)
- [funcSig](owner.address, l1UnsRegistry.address, tokenId, abiCoder.encode(['bool'], [false]), signature);
+ [funcSig](
+ owner.address,
+ await l1UnsRegistry.getAddress(),
+ tokenId,
+ abiCoder.encode(['bool'], [false]),
+ signature,
+ );
await expect(cnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await l1UnsRegistry.exists(tokenId)).to.be.equal(true);
@@ -309,7 +342,7 @@ describe('RootRegistry', () => {
await expect(
randomERC721
.connect(owner)
- ['safeTransferFrom(address,address,uint256)'](owner.address, l1UnsRegistry.address, tokenId),
+ ['safeTransferFrom(address,address,uint256)'](owner.address, await l1UnsRegistry.getAddress(), tokenId),
).to.be.revertedWith('Registry: ERC721_RECEIVING_PROHIBITED');
});
});
@@ -319,10 +352,10 @@ describe('RootRegistry', () => {
it('should withdraw a domain', async () => {
const tokenId = await mintDomainL1(owner.address, ['poly-1w-as1', 'wallet']);
await l1UnsRegistry.connect(owner).depositToPolygon(tokenId);
- expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(predicate.address);
+ expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(await predicate.getAddress());
const inputData = buildPredicateExitInput(owner.address, ZERO_ADDRESS, tokenId);
- await predicate.exitTokens(ZERO_ADDRESS, l1UnsRegistry.address, inputData);
+ await predicate.exitTokens(ZERO_ADDRESS, await l1UnsRegistry.getAddress(), inputData);
expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
});
@@ -332,7 +365,7 @@ describe('RootRegistry', () => {
await expect(l1UnsRegistry.ownerOf(tokenId)).to.be.revertedWith('ERC721: invalid token ID');
const inputData = buildPredicateExitInput(owner.address, ZERO_ADDRESS, tokenId);
- await predicate.exitTokens(ZERO_ADDRESS, l1UnsRegistry.address, inputData);
+ await predicate.exitTokens(ZERO_ADDRESS, await l1UnsRegistry.getAddress(), inputData);
expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
});
@@ -362,7 +395,7 @@ describe('RootRegistry', () => {
0,
checkpointData.number,
checkpointData.number,
- utils.hexlify(checkpointData.header.root),
+ hexlify(checkpointData.header.root),
);
};
@@ -375,7 +408,7 @@ describe('RootRegistry', () => {
const { setCheckPointTx, checkpointData } = await writeCheckpoint(checkpointManager, rcmOwner, txn);
await expectNewHeaderBlockEventEmitted(setCheckPointTx, checkpointData);
- const data = await buildExitInput(checkpointManager, receipt, checkpointData);
+ const data = await buildExitInput(checkpointManager, receipt!, checkpointData);
await rootChainManager.exit(data);
expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
@@ -390,7 +423,7 @@ describe('RootRegistry', () => {
const { setCheckPointTx, checkpointData } = await writeCheckpoint(checkpointManager, rcmOwner, txn);
await expectNewHeaderBlockEventEmitted(setCheckPointTx, checkpointData);
- const data = await buildExitInput(checkpointManager, receipt, checkpointData);
+ const data = await buildExitInput(checkpointManager, receipt!, checkpointData);
await l1UnsRegistry.connect(owner).withdrawFromPolygon(data, tokenId, [], []);
expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
@@ -405,7 +438,7 @@ describe('RootRegistry', () => {
const { setCheckPointTx, checkpointData } = await writeCheckpoint(checkpointManager, rcmOwner, txn);
await expectNewHeaderBlockEventEmitted(setCheckPointTx, checkpointData);
- const data = await buildExitInput(checkpointManager, receipt, checkpointData);
+ const data = await buildExitInput(checkpointManager, receipt!, checkpointData);
await l1UnsRegistry.connect(owner).withdrawFromPolygon(data, tokenId, ['k1'], ['v1']);
expect(await l1UnsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
@@ -421,7 +454,7 @@ describe('RootRegistry', () => {
const { setCheckPointTx, checkpointData } = await writeCheckpoint(checkpointManager, rcmOwner, txn);
await expectNewHeaderBlockEventEmitted(setCheckPointTx, checkpointData);
- const data = await buildExitInput(checkpointManager, receipt, checkpointData);
+ const data = await buildExitInput(checkpointManager, receipt!, checkpointData);
const { req, signature } = await buildExecuteUnsParams(
'withdrawFromPolygon(bytes,uint256,string[],string[])',
[data, tokenId, ['k2'], ['v2']],
@@ -436,48 +469,35 @@ describe('RootRegistry', () => {
});
describe('Expirable tokens transfers', async () => {
- let tokenId: BigNumber;
+ let tokenId: bigint;
before(async () => {
- const { timestamp } = await ethers.provider.getBlock('latest');
+ const timestamp = await getLatestBlockTimestamp();
const labels = ['expirable-predicate-test', 'com'];
- await mintingManager.issueExpirableWithRecords(
- owner.address,
- labels,
- [],
- [],
- timestamp + 60 * 60 * 24,
- true,
- );
+ await mintingManager.issueExpirableWithRecords(owner.address, labels, [], [], timestamp + 60 * 60 * 24, true);
tokenId = await l1UnsRegistry.namehash(labels);
});
it('should revert setOwner to predicate', async () => {
- await expect(
- l1UnsRegistry.connect(owner).setOwner(predicate.address, tokenId),
- ).to.be.revertedWith(
+ await expect(l1UnsRegistry.connect(owner).setOwner(await predicate.getAddress(), tokenId)).to.be.revertedWith(
'Registry: TOKEN_EXPIRABLE',
);
});
it('should revert transferFrom to predicate', async () => {
await expect(
- l1UnsRegistry.connect(owner).transferFrom(owner.address, predicate.address, tokenId),
- ).to.be.revertedWith(
- 'Registry: TOKEN_EXPIRABLE',
- );
+ l1UnsRegistry.connect(owner).transferFrom(owner.address, await predicate.getAddress(), tokenId),
+ ).to.be.revertedWith('Registry: TOKEN_EXPIRABLE');
});
it('should revert safeTransferFrom to predicate', async () => {
const selector = 'safeTransferFrom(address,address,uint256)';
await expect(
- l1UnsRegistry.connect(owner)[selector](owner.address, predicate.address, tokenId),
- ).to.be.revertedWith(
- 'Registry: TOKEN_EXPIRABLE',
- );
+ l1UnsRegistry.connect(owner)[selector](owner.address, await predicate.getAddress(), tokenId),
+ ).to.be.revertedWith('Registry: TOKEN_EXPIRABLE');
});
it('should revert safeTransferFrom to predicate', async () => {
@@ -485,22 +505,16 @@ describe('RootRegistry', () => {
const selectorWithBytes = 'safeTransferFrom(address,address,uint256,bytes)';
await expect(
- l1UnsRegistry.connect(owner)[selector](owner.address, predicate.address, tokenId),
- ).to.be.revertedWith(
- 'Registry: TOKEN_EXPIRABLE',
- );
+ l1UnsRegistry.connect(owner)[selector](owner.address, await predicate.getAddress(), tokenId),
+ ).to.be.revertedWith('Registry: TOKEN_EXPIRABLE');
await expect(
- l1UnsRegistry.connect(owner)[selectorWithBytes](owner.address, predicate.address, tokenId, '0x'),
- ).to.be.revertedWith(
- 'Registry: TOKEN_EXPIRABLE',
- );
+ l1UnsRegistry.connect(owner)[selectorWithBytes](owner.address, await predicate.getAddress(), tokenId, '0x'),
+ ).to.be.revertedWith('Registry: TOKEN_EXPIRABLE');
});
it('should revert depositToPolygon', async () => {
- await expect(
- l1UnsRegistry.connect(owner).depositToPolygon(tokenId),
- ).to.be.revertedWith(
+ await expect(l1UnsRegistry.connect(owner).depositToPolygon(tokenId)).to.be.revertedWith(
'Registry: TOKEN_EXPIRABLE',
);
});
diff --git a/test/UNSOperator.test.ts b/test/UNSOperator.test.ts
index bc382968..8e5581fe 100644
--- a/test/UNSOperator.test.ts
+++ b/test/UNSOperator.test.ts
@@ -1,6 +1,6 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import type { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { UNSOperator } from '../types/contracts';
import { UNSOperator__factory } from '../types/factories/contracts';
diff --git a/test/UNSRegistry.metatx.test.ts b/test/UNSRegistry.metatx.test.ts
index 623d445c..c7fd0801 100644
--- a/test/UNSRegistry.metatx.test.ts
+++ b/test/UNSRegistry.metatx.test.ts
@@ -1,16 +1,14 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { utils, BigNumber, Contract, BigNumberish } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { FunctionFragment } from 'ethers/lib/utils';
-import { Block } from '@ethersproject/abstract-provider';
+import { BigNumberish, FunctionFragment, id, Fragment, BaseContract, solidityPacked } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { UNSRegistry } from '../types/contracts';
import { UNSRegistry__factory } from '../types/factories/contracts';
import { sign, buildExecuteFunc, ExecuteFunc } from './helpers/metatx';
import { TLD, ZERO_ADDRESS } from './helpers/constants';
import { mintDomain, mintRandomDomain } from './helpers/registry';
import { getFuncSignature } from './helpers/proxy';
-import { increaseTimeBy } from './helpers/utils';
+import { getLatestBlockTimestamp, increaseTimeBy } from './helpers/utils';
describe('UNSRegistry (metatx)', () => {
let unsRegistry: UNSRegistry, buildExecuteParams: ExecuteFunc;
@@ -22,7 +20,7 @@ describe('UNSRegistry (metatx)', () => {
accessControl: SignerWithAddress,
operator: SignerWithAddress;
- let latestBlock: Block;
+ let latestBlockTimestamp: number;
before(async () => {
signers = await ethers.getSigners();
@@ -34,11 +32,11 @@ describe('UNSRegistry (metatx)', () => {
await unsRegistry.mintTLD(TLD.CRYPTO, 'crypto');
await unsRegistry.setTokenURIPrefix('/');
- buildExecuteParams = buildExecuteFunc(unsRegistry.interface, unsRegistry.address, unsRegistry);
+ buildExecuteParams = buildExecuteFunc(unsRegistry.interface, await unsRegistry.getAddress(), unsRegistry);
});
beforeEach(async () => {
- latestBlock = await ethers.provider.getBlock('latest');
+ latestBlockTimestamp = await getLatestBlockTimestamp();
});
describe('General', () => {
@@ -86,7 +84,7 @@ describe('UNSRegistry (metatx)', () => {
});
it('should revert meta-setOwner for expired token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
unsRegistry,
owner,
@@ -158,7 +156,7 @@ describe('UNSRegistry (metatx)', () => {
});
it('should revert meta-transferFrom for expired token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
unsRegistry,
owner,
@@ -206,7 +204,7 @@ describe('UNSRegistry (metatx)', () => {
});
it('should revert meta-safeTransferFrom for expired token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
unsRegistry,
owner,
@@ -253,7 +251,7 @@ describe('UNSRegistry (metatx)', () => {
});
it('should revert meta-safeTransferFrom for expired token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
unsRegistry,
owner,
@@ -292,9 +290,13 @@ describe('UNSRegistry (metatx)', () => {
describe('ABI-based', () => {
const registryFuncs = () => {
- return Object.values(unsRegistry.interface.functions).filter(
- (fragment: FunctionFragment) => !['view', 'pure'].includes(fragment.stateMutability),
- );
+ return Object.values(unsRegistry.interface.fragments).filter((fragment: Fragment) => {
+ if (fragment instanceof FunctionFragment) {
+ return !['view', 'pure'].includes(fragment.stateMutability);
+ }
+
+ return false;
+ }) as FunctionFragment[];
};
const buidRequest = async (
@@ -303,7 +305,7 @@ describe('UNSRegistry (metatx)', () => {
tokenId: BigNumberish,
paramsMap: any, // eslint-disable-line @typescript-eslint/no-explicit-any
) => {
- const contract: Contract = unsRegistry;
+ const contract = unsRegistry as BaseContract;
const req = {
from,
@@ -324,31 +326,25 @@ describe('UNSRegistry (metatx)', () => {
values: ['value1'],
uri: 'awesome-uri',
labels: ['token-based', 'crypto'],
- tokenId: '',
+ tokenId: BigInt(0),
to: '',
};
- const included = [
- 'issueWithRecords',
- 'unlockWithRecords',
- 'unlock',
- 'mintTLD',
- ];
+ const included = ['issueWithRecords', 'unlockWithRecords', 'unlock', 'mintTLD'];
const getFuncs = () => {
- return registryFuncs()
- .filter((x) => included.includes(x.name) || included.includes(getFuncSignature(x)));
+ return registryFuncs().filter((x) => included.includes(x.name) || included.includes(getFuncSignature(x)));
};
before(async () => {
paramValueMap.to = receiver.address;
- paramValueMap.tokenId = (await unsRegistry.namehash(paramValueMap.labels)).toHexString();
+ paramValueMap.tokenId = await unsRegistry.namehash(paramValueMap.labels);
});
it('should execute all functions successfully', async () => {
for (const func of getFuncs()) {
const req = await buidRequest(func, coinbase.address, paramValueMap.tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
}
});
@@ -360,13 +356,13 @@ describe('UNSRegistry (metatx)', () => {
data: '0x',
key: 'key_t1',
keys: ['key_t1'],
- keyHash: BigNumber.from(utils.id('key_t1')),
- keyHashes: [BigNumber.from(utils.id('key_t1'))],
+ keyHash: BigInt(id('key_t1')),
+ keyHashes: [BigInt(id('key_t1'))],
value: 'value',
values: ['value1'],
from: '',
to: '',
- tokenId: BigNumber.from('0x0'),
+ tokenId: BigInt('0x0'),
};
const excluded = [
@@ -388,7 +384,7 @@ describe('UNSRegistry (metatx)', () => {
'removeReverse',
'addProxyReader',
'setExpiry', // onlyMintingManager action, covered in separate test case
- 'unlock', // onlyMintingManager action, covered in a separate test case
+ 'unlock', // onlyMintingManager action, covered in a separate test case
];
const getFuncs = () => {
@@ -406,12 +402,12 @@ describe('UNSRegistry (metatx)', () => {
it('should execute all functions successfully', async () => {
for (const func of getFuncs()) {
- const funcSigHash = utils.id(`${getFuncSignature(func)}_ok`);
+ const funcSigHash = id(`${getFuncSignature(func)}_ok`);
paramValueMap.tokenId = await mintDomain({ unsRegistry, owner, labels: [funcSigHash, 'crypto'] });
const req = await buidRequest(func, owner.address, paramValueMap.tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, owner);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, owner);
await unsRegistry.execute(req, signature);
}
});
@@ -419,12 +415,12 @@ describe('UNSRegistry (metatx)', () => {
it('should revert execution of all token-based functions when used signature', async () => {
for (const func of getFuncs()) {
const funcSig = getFuncSignature(func);
- const funcSigHash = utils.id(`${funcSig}_doubleUse`);
+ const funcSigHash = id(`${funcSig}_doubleUse`);
paramValueMap.tokenId = await mintDomain({ unsRegistry, owner, labels: [funcSigHash, 'crypto'] });
const req = await buidRequest(func, owner.address, paramValueMap.tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, owner);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, owner);
await unsRegistry.execute(req, signature);
await expect(unsRegistry.execute(req, signature)).to.be.revertedWith(
@@ -436,12 +432,12 @@ describe('UNSRegistry (metatx)', () => {
it('should revert execution of all token-based functions when nonce invalidated', async () => {
for (const func of getFuncs()) {
const funcSig = getFuncSignature(func);
- const funcSigHash = utils.id(`${funcSig}_nonceInvalidated`);
+ const funcSigHash = id(`${funcSig}_nonceInvalidated`);
paramValueMap.tokenId = await mintDomain({ unsRegistry, owner, labels: [funcSigHash, 'crypto'] });
const req = await buidRequest(func, owner.address, paramValueMap.tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, owner);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, owner);
await unsRegistry.connect(owner).set('key', 'value', paramValueMap.tokenId);
@@ -454,33 +450,33 @@ describe('UNSRegistry (metatx)', () => {
it('should fail execution of all token-based functions when tokenId does not match', async () => {
for (const func of getFuncs()) {
const funcSig = getFuncSignature(func);
- const funcSigHash = utils.id(`${funcSig}_wrongToken`);
+ const funcSigHash = id(`${funcSig}_wrongToken`);
paramValueMap.tokenId = await mintDomain({ unsRegistry, owner, labels: [funcSigHash, 'crypto'] });
- const tokenIdForwarder = await unsRegistry.namehash([utils.id(`_${funcSig}`), 'crypto']);
+ const tokenIdForwarder = await unsRegistry.namehash([id(`_${funcSig}`), 'crypto']);
const req = await buidRequest(func, owner.address, tokenIdForwarder, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, owner);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, owner);
await expect(unsRegistry.execute(req, signature)).to.be.revertedWith('Registry: TOKEN_INVALID');
}
});
it('should fail execution of all token-based functions when tokenId is empty', async () => {
for (const func of getFuncs()) {
- const funcSigHash = utils.id(`${getFuncSignature(func)}_emptyTokenId`);
+ const funcSigHash = id(`${getFuncSignature(func)}_emptyTokenId`);
paramValueMap.tokenId = await mintDomain({ unsRegistry, owner, labels: [funcSigHash, 'crypto'] });
const req = await buidRequest(func, owner.address, 0, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, owner);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, owner);
await expect(unsRegistry.execute(req, signature)).to.be.revertedWith('Registry: TOKEN_INVALID');
}
});
it('should execute setExpiry via forwarder', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({
unsRegistry,
@@ -496,7 +492,7 @@ describe('UNSRegistry (metatx)', () => {
tokenId,
});
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
@@ -504,7 +500,7 @@ describe('UNSRegistry (metatx)', () => {
});
it('should execute unlock via forwarder', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({
unsRegistry,
owner,
@@ -518,7 +514,7 @@ describe('UNSRegistry (metatx)', () => {
tokenId,
});
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
@@ -537,7 +533,7 @@ describe('UNSRegistry (metatx)', () => {
values: ['value1'],
approved: true,
prefix: '/',
- tld: BigNumber.from('0x0'),
+ tld: BigInt('0x0'),
account: '',
to: '',
operator: '',
@@ -573,10 +569,10 @@ describe('UNSRegistry (metatx)', () => {
it('should execute all functions successfully', async () => {
for (const func of getFuncs()) {
const funcSig = getFuncSignature(func);
- paramValueMap.labels = [utils.id(`${funcSig}_label`), 'crypto'];
+ paramValueMap.labels = [id(`${funcSig}_label`), 'crypto'];
const req = await buidRequest(func, coinbase.address, 0, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
}
});
@@ -586,10 +582,10 @@ describe('UNSRegistry (metatx)', () => {
.filter((x) => !x.inputs.filter((i) => i.name === 'tokenId').length)
.filter((x) => x.name === 'setReverse')[0];
const funcSig = getFuncSignature(setReverseFunc);
- paramValueMap.labels = [utils.id(`${funcSig}_label`), 'crypto'];
+ paramValueMap.labels = [id(`${funcSig}_label`), 'crypto'];
const tokenId = await mintDomain({ unsRegistry, owner, labels: paramValueMap.labels });
const req = await buidRequest(setReverseFunc, owner.address, tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, owner);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, owner);
await unsRegistry.execute(req, signature);
});
@@ -598,22 +594,22 @@ describe('UNSRegistry (metatx)', () => {
.filter((x) => !x.inputs.filter((i) => i.name === 'tokenId').length)
.filter((x) => x.name === 'unlockWithRecords')[0];
const funcSig = getFuncSignature(unlockWithRecordsLabels);
- paramValueMap.labels = [utils.id(`${funcSig}_label`), 'crypto'];
+ paramValueMap.labels = [id(`${funcSig}_label`), 'crypto'];
const tokenId = await mintDomain({ unsRegistry, owner, labels: paramValueMap.labels });
const req = await buidRequest(unlockWithRecordsLabels, coinbase.address, tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
});
it('should revert execution of all functions when used signature', async () => {
for (const func of getFuncs()) {
const funcSig = getFuncSignature(func);
- paramValueMap.labels = [utils.id(`${funcSig}_doubleUse`), 'crypto'];
- paramValueMap.key = utils.id(`${funcSig}_doubleUse`);
+ paramValueMap.labels = [id(`${funcSig}_doubleUse`), 'crypto'];
+ paramValueMap.key = id(`${funcSig}_doubleUse`);
- const tokenIdForwarder = await unsRegistry.namehash([utils.id(`_${funcSig}`), 'crypto']);
+ const tokenIdForwarder = await unsRegistry.namehash([id(`_${funcSig}`), 'crypto']);
const req = await buidRequest(func, coinbase.address, tokenIdForwarder, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
await expect(unsRegistry.execute(req, signature)).to.be.revertedWith(
@@ -625,15 +621,15 @@ describe('UNSRegistry (metatx)', () => {
it('should revert execution of all functions when used signature and tokenId is empty', async () => {
for (const func of getFuncs()) {
const funcSig = getFuncSignature(func);
- paramValueMap.labels = [utils.id(`${funcSig}_doubleUse_0`), 'crypto'];
+ paramValueMap.labels = [id(`${funcSig}_doubleUse_0`), 'crypto'];
const tokenId = 0;
const nonce = await unsRegistry.nonceOf(tokenId);
const req = await buidRequest(func, coinbase.address, tokenId, paramValueMap);
- const signature = await sign(req.data, unsRegistry.address, req.nonce, coinbase);
+ const signature = await sign(req.data, await unsRegistry.getAddress(), req.nonce, coinbase);
await unsRegistry.execute(req, signature);
- expect(await unsRegistry.nonceOf(tokenId)).to.be.equal(nonce.add(1));
+ expect(await unsRegistry.nonceOf(tokenId)).to.be.equal(nonce + BigInt(1));
await expect(unsRegistry.execute(req, signature)).to.be.revertedWith(
'UNSRegistryForwarder: SIGNATURE_INVALID',
);
@@ -667,7 +663,7 @@ describe('UNSRegistry (metatx)', () => {
const labels = ['res_label_mb3_expirable', 'com'];
const tokenId = await unsRegistry.namehash(labels);
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const { req, signature } = await buildExecuteParams(
'multicall(bytes[])',
@@ -696,7 +692,7 @@ describe('UNSRegistry (metatx)', () => {
[owner.address, labels, [], [], false],
coinbase,
tokenId,
- BigNumber.from(0),
+ BigInt(0),
);
const transferMetaParams = await buildExecuteParams(
@@ -704,7 +700,7 @@ describe('UNSRegistry (metatx)', () => {
[receiver.address, tokenId],
owner,
tokenId,
- BigNumber.from(1),
+ BigInt(1),
);
await unsRegistry.multicall([
@@ -724,7 +720,7 @@ describe('UNSRegistry (metatx)', () => {
[receiver.address, tokenId],
owner,
tokenId,
- BigNumber.from(0),
+ BigInt(0),
);
await unsRegistry.multicall([
@@ -745,20 +741,23 @@ describe('UNSRegistry (metatx)', () => {
'multicall(bytes[])',
[
[
- ethers.utils.solidityPack(['bytes', 'address', 'uint256'], [
- unsRegistry.interface.encodeFunctionData('setOwner', [nonOwner.address, tokenId]),
- owner.address,
- tokenId,
- ]),
+ solidityPacked(
+ ['bytes', 'address', 'uint256'],
+ [
+ unsRegistry.interface.encodeFunctionData('setOwner', [nonOwner.address, tokenId]),
+ owner.address,
+ tokenId,
+ ],
+ ),
],
],
nonOwner,
tokenId,
);
- await expect(
- unsRegistry.connect(nonOwner).execute(req, signature),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.connect(nonOwner).execute(req, signature)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
});
});
diff --git a/test/UNSRegistry.multicall.test.ts b/test/UNSRegistry.multicall.test.ts
index 619fe441..1817058d 100644
--- a/test/UNSRegistry.multicall.test.ts
+++ b/test/UNSRegistry.multicall.test.ts
@@ -1,6 +1,6 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { UNSRegistry, UNSRegistry__factory } from '../types';
import { TLD, ZERO_ADDRESS } from './helpers/constants';
diff --git a/test/UNSRegistry.proxy.test.ts b/test/UNSRegistry.proxy.test.ts
index b26b7ec1..b6bb39b4 100644
--- a/test/UNSRegistry.proxy.test.ts
+++ b/test/UNSRegistry.proxy.test.ts
@@ -1,10 +1,11 @@
-import { ethers, upgrades } from 'hardhat';
+import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { utils, BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { id } from 'ethers';
import { UNSRegistry } from '../types/contracts';
import { UNSRegistry__factory } from '../types/factories/contracts';
import { UNSRegistryV07__factory } from '../types';
+import { deployProxy, upgradeProxy } from '../src/helpers';
import { mintDomain } from './helpers/registry';
import { TLD, ZERO_ADDRESS } from './helpers/constants';
import { buildExecuteFunc, ExecuteFunc } from './helpers/metatx';
@@ -25,19 +26,15 @@ describe('UNSRegistry (proxy)', () => {
unsRegistryV07Factory = new UNSRegistryV07__factory(owner);
unsRegistryFactory = new UNSRegistry__factory(owner);
- unsRegistry = (await upgrades.deployProxy(
- unsRegistryV07Factory,
- [owner.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS],
- {
- initializer: 'initialize',
- unsafeAllow: ['delegatecall'],
- },
- )) as UNSRegistry;
+ unsRegistry = (await deployProxy(unsRegistryV07Factory, [owner.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS], {
+ initializer: 'initialize',
+ unsafeAllow: ['delegatecall'],
+ })) as unknown as UNSRegistry;
await unsRegistry.mintTLD(TLD.CRYPTO, 'crypto');
await unsRegistry.setTokenURIPrefix('/');
- buildExecuteParams = buildExecuteFunc(unsRegistry.interface, unsRegistry.address, unsRegistry);
+ buildExecuteParams = buildExecuteFunc(unsRegistry.interface, await unsRegistry.getAddress(), unsRegistry);
});
describe('Registry', () => {
@@ -104,7 +101,7 @@ describe('UNSRegistry (proxy)', () => {
await unsRegistry.set(expectedKey, 'value', tokenId);
- const keyFromHash = await unsRegistry.getKey(BigNumber.from(utils.id(expectedKey)));
+ const keyFromHash = await unsRegistry.getKey(BigInt(id(expectedKey)));
expect(keyFromHash).to.be.equal(expectedKey);
});
@@ -114,7 +111,7 @@ describe('UNSRegistry (proxy)', () => {
await unsRegistry.setMany(expectedKeys, ['value', 'value'], tokenId);
- const expectedKeyHashes = expectedKeys.map((key) => BigNumber.from(utils.id(key)));
+ const expectedKeyHashes = expectedKeys.map((key) => BigInt(id(key)));
const keysFromHashes = await unsRegistry.getKeys(expectedKeyHashes);
expect(keysFromHashes).to.be.eql(expectedKeys);
});
@@ -125,7 +122,7 @@ describe('UNSRegistry (proxy)', () => {
const newKeyHashTxReceipt = await newKeyHashTx.wait();
const exitsKeyHashTx = await unsRegistry.set('keyhash-gas', 'value', tokenId);
const exitsKeyHashTxReceipt = await exitsKeyHashTx.wait();
- expect(newKeyHashTxReceipt.gasUsed).to.be.above(exitsKeyHashTxReceipt.gasUsed);
+ expect(newKeyHashTxReceipt?.gasUsed).to.be.above(exitsKeyHashTxReceipt?.gasUsed);
const newKeyHashTx2 = await unsRegistry.setMany(
['keyhash-gas-1', 'keyhash-gas-2'],
@@ -139,7 +136,7 @@ describe('UNSRegistry (proxy)', () => {
tokenId,
);
const exitsKeyHashTxReceipt2 = await exitsKeyHashTx2.wait();
- expect(newKeyHashTxReceipt2.gasUsed).to.be.above(exitsKeyHashTxReceipt2.gasUsed);
+ expect(newKeyHashTxReceipt2?.gasUsed).to.be.above(exitsKeyHashTxReceipt2?.gasUsed);
const newKeyHashTx3 = await unsRegistry.setMany(
['keyhash-gas-3', 'keyhash-gas-4', 'keyhash-gas-5'],
@@ -153,7 +150,7 @@ describe('UNSRegistry (proxy)', () => {
tokenId,
);
const exitsKeyHashTxReceipt3 = await exitsKeyHashTx3.wait();
- expect(newKeyHashTxReceipt3.gasUsed).to.be.above(exitsKeyHashTxReceipt3.gasUsed);
+ expect(newKeyHashTxReceipt3?.gasUsed).to.be.above(exitsKeyHashTxReceipt3?.gasUsed);
});
it('should get value by key hash', async () => {
@@ -163,7 +160,7 @@ describe('UNSRegistry (proxy)', () => {
await unsRegistry.set(key, expectedValue, tokenId);
- const result = await unsRegistry.getByHash(utils.id(key), tokenId);
+ const result = await unsRegistry.getByHash(id(key), tokenId);
expect(result.value).to.be.equal(expectedValue);
expect(result.key).to.be.equal(key);
});
@@ -175,7 +172,7 @@ describe('UNSRegistry (proxy)', () => {
await unsRegistry.setMany(keys, expectedValues, tokenId);
- const hashedKeys = keys.map((key) => BigNumber.from(utils.id(key)));
+ const hashedKeys = keys.map((key) => BigInt(id(key)));
const result = await unsRegistry.getManyByHash(hashedKeys, tokenId);
expect(result).to.be.eql([keys, expectedValues]);
});
@@ -185,9 +182,7 @@ describe('UNSRegistry (proxy)', () => {
const key = 'new-key';
const value = 'value';
- await expect(unsRegistry.set(key, value, tokenId))
- .to.emit(unsRegistry, 'NewKey')
- .withArgs(tokenId, utils.id(key), key);
+ await expect(unsRegistry.set(key, value, tokenId)).to.emit(unsRegistry, 'NewKey').withArgs(tokenId, key, key);
await expect(unsRegistry.set(key, value, tokenId)).not.to.emit(unsRegistry, 'NewKey');
});
@@ -199,7 +194,7 @@ describe('UNSRegistry (proxy)', () => {
await expect(unsRegistry.set(key, value, tokenId))
.to.emit(unsRegistry, 'Set')
- .withArgs(tokenId, utils.id(key), utils.id(value), key, value);
+ .withArgs(tokenId, key, value, key, value);
});
it('should reconfigure resolver with new values', async () => {
@@ -229,9 +224,9 @@ describe('UNSRegistry (proxy)', () => {
await unsRegistry.execute(params1.req, params1.signature);
expect(await unsRegistry.nonceOf(tokenId)).to.be.equal(1);
- unsRegistry = (await upgrades.upgradeProxy(unsRegistry.address, unsRegistryFactory, {
+ await upgradeProxy(await unsRegistry.getAddress(), unsRegistryFactory, {
unsafeAllow: ['delegatecall'],
- })) as UNSRegistry;
+ });
expect(await unsRegistry.nonceOf(tokenId)).to.be.equal(1);
diff --git a/test/UNSRegistry.reverse.test.ts b/test/UNSRegistry.reverse.test.ts
index c2e3c1cc..cc41c92f 100644
--- a/test/UNSRegistry.reverse.test.ts
+++ b/test/UNSRegistry.reverse.test.ts
@@ -1,6 +1,7 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { EventLog } from 'ethers';
import { UNSRegistry } from '../types/contracts';
import { UNSRegistryMock } from '../types/contracts/mocks';
import { UNSRegistry__factory } from '../types/factories/contracts';
@@ -33,11 +34,7 @@ describe('UNSRegistry (reverse)', () => {
await unsRegistry.mintTLD(TLD.X, 'x');
await unsRegistry.setTokenURIPrefix('/');
- buildExecuteParams = buildExecuteFunc(
- unsRegistry.interface,
- unsRegistry.address,
- unsRegistry,
- );
+ buildExecuteParams = buildExecuteFunc(unsRegistry.interface, await unsRegistry.getAddress(), unsRegistry);
await unsRegistry.addProxyReader(reader.address);
@@ -52,20 +49,14 @@ describe('UNSRegistry (reverse)', () => {
describe('Minting', () => {
it('should produce NewURI and SetReverse events', async () => {
- const mintTx = await unsRegistry.mintWithRecords(
- owner.address,
- ['testminting', 'crypto'],
- [],
- [],
- true,
- );
+ const mintTx = await unsRegistry.mintWithRecords(owner.address, ['testminting', 'crypto'], [], [], true);
const mintTxReceipt = await mintTx.wait();
- const newUriEventIndex = mintTxReceipt.events?.findIndex(
- ({ event }) => event === 'NewURI',
+ const newUriEventIndex = mintTxReceipt?.logs.findIndex((log) =>
+ log instanceof EventLog ? log.eventName === 'NewURI' : false,
);
- const setReverseIndex = mintTxReceipt.events?.findIndex(
- ({ event }) => event === 'SetReverse',
+ const setReverseIndex = mintTxReceipt?.logs.findIndex((log) =>
+ log instanceof EventLog ? log.eventName === 'SetReverse' : false,
);
expect(newUriEventIndex).to.be.greaterThan(0);
@@ -73,20 +64,14 @@ describe('UNSRegistry (reverse)', () => {
});
it('should only produce NewURI and not SetReverse events with setReverse = false', async () => {
- const mintTx = await unsRegistry.mintWithRecords(
- owner.address,
- ['testminting2', 'crypto'],
- [],
- [],
- false,
- );
+ const mintTx = await unsRegistry.mintWithRecords(owner.address, ['testminting2', 'crypto'], [], [], false);
const mintTxReceipt = await mintTx.wait();
- const newUriEventIndex = mintTxReceipt.events?.findIndex(
- ({ event }) => event === 'NewURI',
+ const newUriEventIndex = mintTxReceipt?.logs.findIndex((log) =>
+ log instanceof EventLog ? log.eventName === 'NewURI' : false,
);
- const setReverseIndex = mintTxReceipt.events?.findIndex(
- ({ event }) => event === 'SetReverse',
+ const setReverseIndex = mintTxReceipt?.logs.findIndex((log) =>
+ log instanceof EventLog ? log.eventName === 'SetReverse' : false,
);
expect(newUriEventIndex).to.be.greaterThan(0);
@@ -98,75 +83,42 @@ describe('UNSRegistry (reverse)', () => {
const uri = labels.join('.');
const tokenId = await unsRegistry.namehash(labels);
- await unsRegistry.mintWithRecords(
- coinbase.address,
- labels,
- ['key_1'],
- ['value_1'],
- true,
- );
+ await unsRegistry.mintWithRecords(coinbase.address, labels, ['key_1'], ['value_1'], true);
- expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(
- coinbase.address,
- );
- expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(
- tokenId,
- );
- expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(
- uri,
- );
+ expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(coinbase.address);
+ expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(tokenId);
+ expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(uri);
});
it('should not set reverse resolution on mint if withReverse = false', async () => {
const labels = ['reversemint4_21', 'crypto'];
const tokenId = await unsRegistry.namehash(labels);
- await unsRegistry.mintWithRecords(
- coinbase.address,
- labels,
- ['key_1'],
- ['value_1'],
- false,
- );
+ await unsRegistry.mintWithRecords(coinbase.address, labels, ['key_1'], ['value_1'], false);
- expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(
- coinbase.address,
- );
- expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(
- ZERO_ADDRESS,
- );
- expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(
- '',
- );
+ expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(coinbase.address);
+ expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(ZERO_ADDRESS);
+ expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal('');
});
it('should produce SetReverse event after NewURI', async () => {
const labels = ['reversemint41_2', 'crypto'];
const tokenId = await unsRegistry.namehash(labels);
- const mintTx = await unsRegistry.mintWithRecords(
- coinbase.address,
- labels,
- ['key_1'],
- ['value_1'],
- true,
- );
+ const mintTx = await unsRegistry.mintWithRecords(coinbase.address, labels, ['key_1'], ['value_1'], true);
const mintTxReceipt = await mintTx.wait();
- const newUriEventIndex = mintTxReceipt.events?.findIndex(
- ({ event }) => event === 'NewURI',
+ const newUriEventIndex = mintTxReceipt?.logs.findIndex((log) =>
+ log instanceof EventLog ? log.eventName === 'NewURI' : false,
);
- const setReverseIndex = mintTxReceipt.events?.findIndex(
- ({ event }) => event === 'SetReverse',
+ const setReverseIndex = mintTxReceipt?.logs.findIndex((log) =>
+ log instanceof EventLog ? log.eventName === 'SetReverse' : false,
);
expect(setReverseIndex).to.be.greaterThan(0);
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- expect(mintTxReceipt.events?.[setReverseIndex!].args).to.deep.equal([
- coinbase.address,
- tokenId,
- ]);
+ const setReverseEvent = mintTxReceipt?.logs?.[setReverseIndex!] as EventLog;
+ expect(setReverseEvent.args).to.deep.equal([coinbase.address, tokenId]);
expect(setReverseIndex).to.be.greaterThan(newUriEventIndex);
});
@@ -175,31 +127,18 @@ describe('UNSRegistry (reverse)', () => {
const labels = ['reversemint42_2', 'crypto'];
const uri = labels.join('.');
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels });
- expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(
- tokenId,
- );
- expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(
- uri,
- );
+ expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(tokenId);
+ expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(uri);
const labels1 = ['reversemint43', 'crypto'];
- await expect(
- unsRegistry.mintWithRecords(
- coinbase.address,
- labels1,
- ['key_1'],
- ['value_1'],
- true,
- ),
- ).not.to.emit(unsRegistry, 'SetReverse');
-
- expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(
- tokenId,
- );
- expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(
- uri,
+ await expect(unsRegistry.mintWithRecords(coinbase.address, labels1, ['key_1'], ['value_1'], true)).not.to.emit(
+ unsRegistry,
+ 'SetReverse',
);
+
+ expect(await unsRegistry.reverseOf(coinbase.address)).to.be.equal(tokenId);
+ expect(await unsRegistry.reverseNameOf(coinbase.address)).to.be.equal(uri);
});
});
@@ -212,7 +151,7 @@ describe('UNSRegistry (reverse)', () => {
owner,
labels: ['res_1', 'x'],
withoutReverse: true,
- } );
+ });
const _unsRegistry = unsRegistry.connect(owner);
await expect(_unsRegistry['setReverse(string[])'](labels))
@@ -252,19 +191,11 @@ describe('UNSRegistry (reverse)', () => {
.to.emit(unsRegistry, 'SetReverse')
.withArgs(owner.address, tokenId.toString());
- expect(
- await unsRegistry.reverseOf(ethers.utils.getAddress(owner.address)),
- ).to.be.equal(tokenId);
- expect(
- await unsRegistry.reverseOf(owner.address.toLowerCase()),
- ).to.be.equal(tokenId);
-
- expect(
- await unsRegistry.reverseNameOf(ethers.utils.getAddress(owner.address)),
- ).to.be.equal(uri);
- expect(
- await unsRegistry.reverseNameOf(owner.address.toLowerCase()),
- ).to.be.equal(uri);
+ expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(tokenId);
+ expect(await unsRegistry.reverseOf(owner.address.toLowerCase())).to.be.equal(tokenId);
+
+ expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal(uri);
+ expect(await unsRegistry.reverseNameOf(owner.address.toLowerCase())).to.be.equal(uri);
});
it('revert setting reverse record by non-owner', async () => {
@@ -277,9 +208,7 @@ describe('UNSRegistry (reverse)', () => {
});
const _unsRegistry = unsRegistry.connect(receiver);
- await expect(
- _unsRegistry['setReverse(string[])'](labels),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_OWNER');
+ await expect(_unsRegistry['setReverse(string[])'](labels)).to.be.revertedWith('Registry: SENDER_IS_NOT_OWNER');
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(0);
});
@@ -312,9 +241,7 @@ describe('UNSRegistry (reverse)', () => {
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(tokenId);
expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal(uri);
- await unsRegistry
- .connect(owner)
- .transferFrom(owner.address, receiver.address, tokenId2);
+ await unsRegistry.connect(owner).transferFrom(owner.address, receiver.address, tokenId2);
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(tokenId);
expect(await unsRegistry.reverseOf(receiver.address)).to.be.equal(0);
@@ -332,9 +259,7 @@ describe('UNSRegistry (reverse)', () => {
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(tokenId);
expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal(uri);
- await expect(_unsRegistry.removeReverse())
- .to.emit(unsRegistry, 'RemoveReverse')
- .withArgs(owner.address);
+ await expect(_unsRegistry.removeReverse()).to.emit(unsRegistry, 'RemoveReverse').withArgs(owner.address);
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(0);
expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal('');
@@ -346,9 +271,7 @@ describe('UNSRegistry (reverse)', () => {
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(0);
expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal('');
- await expect(_unsRegistry.removeReverse()).to.be.revertedWith(
- 'Registry: REVERSE_RECORD_IS_EMPTY',
- );
+ await expect(_unsRegistry.removeReverse()).to.be.revertedWith('Registry: REVERSE_RECORD_IS_EMPTY');
});
it('should set reverse resolution for labels', async () => {
@@ -378,8 +301,7 @@ describe('UNSRegistry (reverse)', () => {
});
const _unsRegistry = unsRegistry.connect(reader);
- await expect(_unsRegistry['setReverse(string[])'](labels))
- .to.be.revertedWith('Registry: SENDER_IS_NOT_OWNER');
+ await expect(_unsRegistry['setReverse(string[])'](labels)).to.be.revertedWith('Registry: SENDER_IS_NOT_OWNER');
});
});
@@ -394,12 +316,7 @@ describe('UNSRegistry (reverse)', () => {
withoutReverse: true,
});
- const params = await buildExecuteParams(
- 'setReverse(string[])',
- [labels],
- owner,
- tokenId,
- );
+ const params = await buildExecuteParams('setReverse(string[])', [labels], owner, tokenId);
await unsRegistry.execute(params.req, params.signature);
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(tokenId);
@@ -415,12 +332,7 @@ describe('UNSRegistry (reverse)', () => {
withoutReverse: true,
});
- const params = await buildExecuteParams(
- 'setReverse(string[])',
- [labels],
- receiver,
- tokenId,
- );
+ const params = await buildExecuteParams('setReverse(string[])', [labels], receiver, tokenId);
await expect(unsRegistry.execute(params.req, params.signature)).to.be.revertedWith(
'Registry: SENDER_IS_NOT_OWNER',
);
@@ -438,15 +350,8 @@ describe('UNSRegistry (reverse)', () => {
withoutReverse: true,
});
- const params = await buildExecuteParams(
- 'setReverse(string[])',
- [labels],
- owner,
- 1,
- );
- await expect(unsRegistry.execute(params.req, params.signature)).to.be.revertedWith(
- 'Registry: TOKEN_INVALID',
- );
+ const params = await buildExecuteParams('setReverse(string[])', [labels], owner, 1);
+ await expect(unsRegistry.execute(params.req, params.signature)).to.be.revertedWith('Registry: TOKEN_INVALID');
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(0);
expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal('');
@@ -459,12 +364,7 @@ describe('UNSRegistry (reverse)', () => {
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(tokenId);
expect(await unsRegistry.reverseNameOf(owner.address)).to.be.equal(uri);
- const { req, signature } = await buildExecuteParams(
- 'removeReverse()',
- [],
- owner,
- owner.address,
- );
+ const { req, signature } = await buildExecuteParams('removeReverse()', [], owner, owner.address);
await unsRegistry.execute(req, signature);
expect(await unsRegistry.reverseOf(owner.address)).to.be.equal(0);
diff --git a/test/UNSRegistry.test.ts b/test/UNSRegistry.test.ts
index 7625ee40..55cde363 100644
--- a/test/UNSRegistry.test.ts
+++ b/test/UNSRegistry.test.ts
@@ -1,16 +1,14 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import namehash from 'eth-ens-namehash';
-import { utils, BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { Block } from '@ethersproject/abstract-provider';
+import { id, namehash } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { UNSRegistry } from '../types/contracts';
import { UNSRegistryMock } from '../types/contracts/mocks';
import { UNSRegistry__factory } from '../types/factories/contracts';
import { UNSRegistryMock__factory } from '../types/factories/contracts/mocks';
import { EXPIRABLE_TLDS, TLD, ZERO_ADDRESS } from './helpers/constants';
import { mintDomain, mintRandomDomain } from './helpers/registry';
-import { increaseTimeBy } from './helpers/utils';
+import { getLatestBlockTimestamp, increaseTimeBy } from './helpers/utils';
describe('UNSRegistry', () => {
let unsRegistry: UNSRegistry;
@@ -24,7 +22,7 @@ describe('UNSRegistry', () => {
sender: SignerWithAddress,
accounts: string[];
- let latestBlock: Block;
+ let latestBlockTimestamp: number;
before(async () => {
signers = await ethers.getSigners();
@@ -47,7 +45,7 @@ describe('UNSRegistry', () => {
});
beforeEach(async () => {
- latestBlock = await ethers.provider.getBlock('latest');
+ latestBlockTimestamp = await getLatestBlockTimestamp();
});
describe('General', () => {
@@ -57,13 +55,13 @@ describe('UNSRegistry', () => {
it('should resolve properly', async () => {
const tokenId = await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['resolution', 'crypto'] });
- expect(await unsRegistry.resolverOf(tokenId)).to.be.equal(unsRegistry.address);
+ expect(await unsRegistry.resolverOf(tokenId)).to.be.equal(await unsRegistry.getAddress());
await unsRegistry.burn(tokenId);
expect(await unsRegistry.resolverOf(tokenId)).to.be.equal(ZERO_ADDRESS);
await mintDomain({ unsRegistry, owner: coinbase.address, labels: ['resolution', 'crypto'] });
- expect(await unsRegistry.resolverOf(tokenId)).to.be.equal(unsRegistry.address);
+ expect(await unsRegistry.resolverOf(tokenId)).to.be.equal(await unsRegistry.getAddress());
});
it('should set URI prefix', async () => {
@@ -78,7 +76,7 @@ describe('UNSRegistry', () => {
for (const key of Object.keys(TLD)) {
it(`should be possible to mint .${key} domain`, async () => {
- const expiry = EXPIRABLE_TLDS.includes(key) ? latestBlock.timestamp + 60 * 60 * 24 : 0;
+ const expiry = EXPIRABLE_TLDS.includes(key) ? latestBlockTimestamp + 60 * 60 * 24 : 0;
const tokenId = await mintDomain({
unsRegistry,
@@ -93,7 +91,7 @@ describe('UNSRegistry', () => {
describe('namehash', () => {
it('should return valid namehash', async () => {
const tokenId = await unsRegistry.namehash(['12ew3', 'crypto']);
- expect(tokenId).to.be.equal(namehash.hash('12ew3.crypto'));
+ expect(tokenId).to.be.equal(namehash('12ew3.crypto'));
});
it('should revert when childId lable is empty', async () => {
@@ -117,14 +115,14 @@ describe('UNSRegistry', () => {
unsRegistry,
owner: coinbase.address,
tld: 'com',
- expiry: latestBlock.timestamp + 60 * 60 * 24,
+ expiry: latestBlockTimestamp + 60 * 60 * 24,
});
expect(await unsRegistry.exists(tokenId)).to.be.equal(true);
});
it('should return true with expired token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({
unsRegistry,
@@ -148,13 +146,13 @@ describe('UNSRegistry', () => {
});
it('should return owner of expirable token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'crypto', expiry });
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(coinbase.address);
});
it('should return zero address if token is expired', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com', expiry });
await increaseTimeBy(60 * 60 * 24);
@@ -187,7 +185,7 @@ describe('UNSRegistry', () => {
});
describe('burn', () => {
- let tokenId: BigNumber;
+ let tokenId: bigint;
beforeEach(async () => {
tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'crypto' });
@@ -202,7 +200,7 @@ describe('UNSRegistry', () => {
});
it('should revert with expirable token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com', expiry });
await expect(unsRegistry.burn(tokenId)).to.be.revertedWith('Registry: TOKEN_EXPIRABLE');
@@ -228,7 +226,7 @@ describe('UNSRegistry', () => {
});
it('should revert with expired token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com', expiry });
await increaseTimeBy(60 * 60 * 24);
@@ -284,9 +282,11 @@ describe('UNSRegistry', () => {
coinbase.address,
labels,
['key1'],
- ['42'], true,
+ ['42'],
+ true,
),
- ).to.emit(unsRegistry, 'NewURI')
+ )
+ .to.emit(unsRegistry, 'NewURI')
.withArgs(tokenId, 'label_38f7.crypto');
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(coinbase.address);
@@ -294,7 +294,7 @@ describe('UNSRegistry', () => {
it('should revert re-minting an expired domain', async () => {
const labels = ['label_38f8', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
unsRegistry,
@@ -307,15 +307,9 @@ describe('UNSRegistry', () => {
expect(await unsRegistry.isExpired(tokenId)).to.be.eq(true);
- await expect(
- unsRegistry.mintWithRecords(
- receiver.address,
- labels,
- [],
- [],
- true,
- ),
- ).to.be.revertedWith('ERC721: token already minted');
+ await expect(unsRegistry.mintWithRecords(receiver.address, labels, [], [], true)).to.be.revertedWith(
+ 'ERC721: token already minted',
+ );
});
it('should not allow minting subdomain if not minting manager', async () => {
@@ -333,7 +327,7 @@ describe('UNSRegistry', () => {
const labels = ['label_38qwex', 'crypto'];
const parentTokenId = await mintDomain({ unsRegistry: unsRegistryMock, owner, labels });
- await unsRegistryMock.connect(coinbase).upgradeAll([ parentTokenId ]);
+ await unsRegistryMock.connect(coinbase).upgradeAll([parentTokenId]);
labels.unshift('sub');
@@ -342,9 +336,8 @@ describe('UNSRegistry', () => {
unsRegistry: unsRegistryMock,
owner,
labels,
- })).to.be.revertedWith(
- 'Registry: TOKEN_UPGRADED',
- );
+ }),
+ ).to.be.revertedWith('Registry: TOKEN_UPGRADED');
});
});
@@ -370,7 +363,7 @@ describe('UNSRegistry', () => {
it('should properly unlock expirable domain', async () => {
const labels = ['label_12324_unlock', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
labels,
unsRegistry,
@@ -397,7 +390,7 @@ describe('UNSRegistry', () => {
it('should fail if called by non-allowed address', async () => {
const labels = ['label_12325_unlock_fail', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintDomain({
labels,
@@ -408,9 +401,9 @@ describe('UNSRegistry', () => {
expiry,
});
- await expect(
- unsRegistry.connect(receiver).unlock(receiver.address, tokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_MINTING_MANAGER');
+ await expect(unsRegistry.connect(receiver).unlock(receiver.address, tokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_MINTING_MANAGER',
+ );
});
});
@@ -475,7 +468,7 @@ describe('UNSRegistry', () => {
it('should unlock expired domain to new owner, set records and reverse', async () => {
const labels = ['label_38f01', 'com'];
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const initialOwnerBalance = await unsRegistry.balanceOf(owner.address);
@@ -488,12 +481,8 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- expect(
- await unsRegistry.isExpired(tokenId),
- ).to.be.eq(true);
- expect(
- (await unsRegistry.balanceOf(owner.address)).sub(initialOwnerBalance),
- ).to.be.eq(1);
+ expect(await unsRegistry.isExpired(tokenId)).to.be.eq(true);
+ expect((await unsRegistry.balanceOf(owner.address)) - initialOwnerBalance).to.be.eq(1);
const newExpiry = expiry + 60 * 60 * 24;
const initialReceiverBalance = await unsRegistry.balanceOf(receiver.address);
@@ -502,23 +491,12 @@ describe('UNSRegistry', () => {
await unsRegistry.setExpiry(newExpiry, tokenId);
await unsRegistry.connect(receiver).removeReverse();
- await expect(
- unsRegistry.unlockWithRecords(
- receiver.address,
- labels,
- ['key1'],
- ['42'],
- true,
- ),
- ).to.emit(unsRegistry, 'Transfer')
+ await expect(unsRegistry.unlockWithRecords(receiver.address, labels, ['key1'], ['42'], true))
+ .to.emit(unsRegistry, 'Transfer')
.withArgs(owner.address, receiver.address, tokenId);
- expect(
- await unsRegistry.balanceOf(owner.address),
- ).to.be.eq(initialOwnerBalance);
- expect(
- (await unsRegistry.balanceOf(receiver.address)).sub(initialReceiverBalance),
- ).to.be.eq(1);
+ expect(await unsRegistry.balanceOf(owner.address)).to.be.eq(initialOwnerBalance);
+ expect((await unsRegistry.balanceOf(receiver.address)) - initialReceiverBalance).to.be.eq(1);
expect(await unsRegistry.ownerOf(tokenId)).to.eq(receiver.address);
expect(await unsRegistry.expiryOf(tokenId)).to.eq(newExpiry);
@@ -552,8 +530,8 @@ describe('UNSRegistry', () => {
});
describe('Registry (ownership management)', () => {
- let tokenId: BigNumber;
- let expirableTokenId: BigNumber;
+ let tokenId: bigint;
+ let expirableTokenId: bigint;
beforeEach(async () => {
tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'crypto' });
@@ -561,24 +539,22 @@ describe('UNSRegistry', () => {
unsRegistry,
owner: coinbase.address,
tld: 'com',
- expiry: latestBlock.timestamp + 60 * 60 * 24,
+ expiry: latestBlockTimestamp + 60 * 60 * 24,
});
});
describe('setOwner', () => {
it('sets owner correctly', async () => {
- await expect(
- unsRegistry.setOwner(owner.address, tokenId),
- ).to.emit(unsRegistry, 'Transfer')
+ await expect(unsRegistry.setOwner(owner.address, tokenId))
+ .to.emit(unsRegistry, 'Transfer')
.withArgs(coinbase.address, owner.address, tokenId);
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
});
it('sets owner correctly for expirable token', async () => {
- await expect(
- unsRegistry.setOwner(owner.address, expirableTokenId),
- ).to.emit(unsRegistry, 'Transfer')
+ await expect(unsRegistry.setOwner(owner.address, expirableTokenId))
+ .to.emit(unsRegistry, 'Transfer')
.withArgs(coinbase.address, owner.address, expirableTokenId);
expect(await unsRegistry.ownerOf(expirableTokenId)).to.be.equal(owner.address);
@@ -587,9 +563,9 @@ describe('UNSRegistry', () => {
it('reverts if token is expired', async () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.setOwner(owner.address, expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.setOwner(owner.address, expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('reverts if expired and sender is approved', async () => {
@@ -597,9 +573,9 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.connect(sender).setOwner(owner.address, expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.connect(sender).setOwner(owner.address, expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('reverts if expired and sender is approvedForAll', async () => {
@@ -607,15 +583,15 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.connect(sender).setOwner(owner.address, expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.connect(sender).setOwner(owner.address, expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('reverts if not owner', async () => {
- await expect(
- unsRegistry.connect(signers[1]).setOwner(owner.address, tokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.connect(signers[1]).setOwner(owner.address, tokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('sets owner correctly even if token is upgraded', async () => {
@@ -640,9 +616,7 @@ describe('UNSRegistry', () => {
await unsRegistry.set('key_16', 'value_23', tokenId);
expect(await unsRegistry.get('key_16', tokenId)).to.be.equal('value_23');
- await expect(unsRegistry.setOwner(owner.address, tokenId))
- .to.not.emit(unsRegistry, 'ResetRecords')
- .withArgs(tokenId);
+ await expect(unsRegistry.setOwner(owner.address, tokenId)).to.not.emit(unsRegistry, 'ResetRecords');
expect(await unsRegistry.get('key_16', tokenId)).to.be.equal('value_23');
});
});
@@ -663,9 +637,7 @@ describe('UNSRegistry', () => {
it('reverts if token is expired', async () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.transferFrom(coinbase.address, owner.address, expirableTokenId),
- ).to.be.revertedWith(
+ await expect(unsRegistry.transferFrom(coinbase.address, owner.address, expirableTokenId)).to.be.revertedWith(
'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
);
});
@@ -735,9 +707,7 @@ describe('UNSRegistry', () => {
it('reverts if token is expired', async () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry[selector](coinbase.address, owner.address, expirableTokenId),
- ).to.be.revertedWith(
+ await expect(unsRegistry[selector](coinbase.address, owner.address, expirableTokenId)).to.be.revertedWith(
'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
);
});
@@ -762,11 +732,7 @@ describe('UNSRegistry', () => {
it('reverts if not owner', async () => {
await expect(
- unsRegistry.connect(signers[1])[selector](
- coinbase.address,
- owner.address,
- tokenId,
- ),
+ unsRegistry.connect(signers[1])[selector](coinbase.address, owner.address, tokenId),
).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
});
@@ -795,32 +761,22 @@ describe('UNSRegistry', () => {
const selector = 'safeTransferFrom(address,address,uint256,bytes)';
it('transfers domain correctly', async () => {
- await unsRegistry[selector](
- coinbase.address,
- owner.address,
- tokenId,
- '0x',
- );
+ await unsRegistry[selector](coinbase.address, owner.address, tokenId, '0x');
expect(await unsRegistry.ownerOf(tokenId)).to.be.equal(owner.address);
});
it('transfers expirable domain correctly', async () => {
- await unsRegistry[selector](
- coinbase.address,
- owner.address,
- expirableTokenId,
- '0x',
- );
+ await unsRegistry[selector](coinbase.address, owner.address, expirableTokenId, '0x');
expect(await unsRegistry.ownerOf(expirableTokenId)).to.be.equal(owner.address);
});
it('reverts if domain is expired', async () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry[selector](coinbase.address, owner.address, expirableTokenId, '0x'),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry[selector](coinbase.address, owner.address, expirableTokenId, '0x')).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('reverts if domain is expired and sender is approved', async () => {
@@ -843,12 +799,7 @@ describe('UNSRegistry', () => {
it('reverts if not owner', async () => {
await expect(
- unsRegistry.connect(signers[1])[selector](
- coinbase.address,
- owner.address,
- tokenId,
- '0x',
- ),
+ unsRegistry.connect(signers[1])[selector](coinbase.address, owner.address, tokenId, '0x'),
).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
});
@@ -856,12 +807,7 @@ describe('UNSRegistry', () => {
tokenId = await mintRandomDomain({ unsRegistry: unsRegistryMock, owner: coinbase.address, tld: 'crypto' });
await unsRegistryMock.upgradeAll([tokenId]);
- await unsRegistryMock[selector](
- coinbase.address,
- owner.address,
- tokenId,
- '0x',
- );
+ await unsRegistryMock[selector](coinbase.address, owner.address, tokenId, '0x');
expect(await unsRegistryMock.ownerOf(tokenId)).to.be.equal(owner.address);
});
@@ -870,9 +816,7 @@ describe('UNSRegistry', () => {
await unsRegistry.set('key_12', 'value_23', tokenId);
expect(await unsRegistry.get('key_12', tokenId)).to.be.equal('value_23');
- await expect(
- unsRegistry[selector](coinbase.address, accounts[0], tokenId, '0x'),
- )
+ await expect(unsRegistry[selector](coinbase.address, accounts[0], tokenId, '0x'))
.to.emit(unsRegistry, 'ResetRecords')
.withArgs(tokenId);
expect(await unsRegistry.get('key_12', tokenId)).to.be.equal('');
@@ -883,11 +827,11 @@ describe('UNSRegistry', () => {
describe('Registry (records management)', () => {
const initializeKey = async (key: string) => {
await unsRegistry.addKey(key);
- return BigNumber.from(utils.id(key));
+ return BigInt(id(key));
};
- let tokenId: BigNumber;
- let expirableTokenId: BigNumber;
+ let tokenId: bigint;
+ let expirableTokenId: bigint;
beforeEach(async () => {
tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'crypto' });
@@ -895,7 +839,7 @@ describe('UNSRegistry', () => {
unsRegistry,
owner: coinbase.address,
tld: 'com',
- expiry: latestBlock.timestamp + 60 * 60 * 24,
+ expiry: latestBlockTimestamp + 60 * 60 * 24,
});
});
@@ -966,9 +910,7 @@ describe('UNSRegistry', () => {
const key = 'new-key';
const value = 'value';
- await expect(unsRegistry.set(key, value, tokenId))
- .to.emit(unsRegistry, 'NewKey')
- .withArgs(tokenId, utils.id(key), key);
+ await expect(unsRegistry.set(key, value, tokenId)).to.emit(unsRegistry, 'NewKey').withArgs(tokenId, key, key);
await expect(unsRegistry.set(key, value, tokenId)).not.to.emit(unsRegistry, 'NewKey');
});
@@ -979,7 +921,7 @@ describe('UNSRegistry', () => {
await expect(unsRegistry.set(key, value, tokenId))
.to.emit(unsRegistry, 'Set')
- .withArgs(tokenId, utils.id(key), utils.id(value), key, value);
+ .withArgs(tokenId, key, value, key, value);
});
});
@@ -1081,9 +1023,9 @@ describe('UNSRegistry', () => {
it('should fail with expired token', async () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.reset(expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.reset(expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('should fail with expired token and sender is approved', async () => {
@@ -1091,9 +1033,9 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.connect(sender).reset(expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.connect(sender).reset(expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('should fail with expired token and sender is approvedForAll', async () => {
@@ -1101,9 +1043,9 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.connect(sender).reset(expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.connect(sender).reset(expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
});
@@ -1112,7 +1054,7 @@ describe('UNSRegistry', () => {
const expectedKey = 'new-hashed-key';
await unsRegistry.set(expectedKey, 'value', tokenId);
- const keyFromHash = await unsRegistry.getKey(BigNumber.from(utils.id(expectedKey)));
+ const keyFromHash = await unsRegistry.getKey(BigInt(id(expectedKey)));
expect(keyFromHash).to.be.equal(expectedKey);
});
@@ -1120,7 +1062,7 @@ describe('UNSRegistry', () => {
const expectedKey = 'new-hashed-key';
await unsRegistry.set(expectedKey, 'value', expirableTokenId);
- const keyFromHash = await unsRegistry.getKey(BigNumber.from(utils.id(expectedKey)));
+ const keyFromHash = await unsRegistry.getKey(BigInt(id(expectedKey)));
expect(keyFromHash).to.be.equal(expectedKey);
});
@@ -1130,7 +1072,7 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- const keyHash = BigNumber.from(utils.id(expectedKey));
+ const keyHash = BigInt(id(expectedKey));
expect(await unsRegistry.getKey(keyHash)).to.be.equal(expectedKey);
expect(await unsRegistry.getKeys([keyHash])).to.be.eql([expectedKey]);
@@ -1140,7 +1082,7 @@ describe('UNSRegistry', () => {
const expectedKeys = ['keyhash-many-1', 'keyhash-many-2'];
await unsRegistry.setMany(expectedKeys, ['value', 'value'], tokenId);
- const expectedKeyHashes = expectedKeys.map((key) => BigNumber.from(utils.id(key)));
+ const expectedKeyHashes = expectedKeys.map((key) => BigInt(id(key)));
const keysFromHashes = await unsRegistry.getKeys(expectedKeyHashes);
expect(keysFromHashes).to.be.eql(expectedKeys);
});
@@ -1164,9 +1106,9 @@ describe('UNSRegistry', () => {
it('should fail when trying to reconfigure expired domain', async () => {
await increaseTimeBy(60 * 60 * 24);
- await expect(
- unsRegistry.reconfigure(['new-key'], ['new-value'], expirableTokenId),
- ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
+ await expect(unsRegistry.reconfigure(['new-key'], ['new-value'], expirableTokenId)).to.be.revertedWith(
+ 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
+ );
});
it('should fail when trying to reconfigure expired domain and sender is approved', async () => {
@@ -1196,7 +1138,7 @@ describe('UNSRegistry', () => {
const expectedValue = 'get-key-by-hash-value';
await unsRegistry.set(key, expectedValue, tokenId);
- const result = await unsRegistry.getByHash(utils.id(key), tokenId);
+ const result = await unsRegistry.getByHash(id(key), tokenId);
expect(result.value).to.be.equal(expectedValue);
expect(result.key).to.be.equal(key);
});
@@ -1206,14 +1148,11 @@ describe('UNSRegistry', () => {
const value = 'get-key-by-hash-value';
await unsRegistry.set(key, value, expirableTokenId);
- const result = await unsRegistry.getByHash(utils.id(key), expirableTokenId);
+ const result = await unsRegistry.getByHash(id(key), expirableTokenId);
expect(result.key).to.be.equal(key);
expect(result.value).to.be.equal(value);
- expect(await unsRegistry.getManyByHash([utils.id(key)], expirableTokenId)).to.be.eql([
- [key],
- [value],
- ]);
+ expect(await unsRegistry.getManyByHash([id(key)], expirableTokenId)).to.be.eql([[key], [value]]);
});
it('should return empty value by keyhash if reader is ProxyReader and token is upgraded', async () => {
@@ -1224,9 +1163,9 @@ describe('UNSRegistry', () => {
await unsRegistryMock.set(key, value, tokenId);
await unsRegistryMock.upgradeAll([tokenId]);
- expect((await unsRegistryMock.connect(reader).getByHash(utils.id(key), tokenId)).value).to.be.equal('');
+ expect((await unsRegistryMock.connect(reader).getByHash(id(key), tokenId)).value).to.be.equal('');
- expect((await unsRegistryMock.connect(coinbase).getByHash(utils.id(key), tokenId)).value).to.be.equal(value);
+ expect((await unsRegistryMock.connect(coinbase).getByHash(id(key), tokenId)).value).to.be.equal(value);
});
it('should revert setting new values by key hashes with expired token', async () => {
@@ -1237,36 +1176,28 @@ describe('UNSRegistry', () => {
await increaseTimeBy(60 * 60 * 24);
- expect(
- await unsRegistry.getByHash(utils.id(key), expirableTokenId),
- ).to.be.eql([key, value]);
+ expect(await unsRegistry.getByHash(id(key), expirableTokenId)).to.be.eql([key, value]);
- expect(await unsRegistry.getManyByHash(
- [utils.id(key)], expirableTokenId),
- ).to.be.eql([ [key], [value] ]);
+ expect(await unsRegistry.getManyByHash([id(key)], expirableTokenId)).to.be.eql([[key], [value]]);
- await expect(unsRegistry.setByHash(utils.id(key), 'new-value', expirableTokenId)).to.be.revertedWith(
+ await expect(unsRegistry.setByHash(id(key), 'new-value', expirableTokenId)).to.be.revertedWith(
'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
);
- await expect(unsRegistry.setManyByHash([utils.id(key)], ['new-value'], expirableTokenId)).to.be.revertedWith(
+ await expect(unsRegistry.setManyByHash([id(key)], ['new-value'], expirableTokenId)).to.be.revertedWith(
'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
);
await unsRegistry.approve(sender.address, expirableTokenId);
- await expect(
- unsRegistry.connect(sender).setByHash(utils.id(key), 'new-value', expirableTokenId),
- ).to.be.revertedWith(
+ await expect(unsRegistry.connect(sender).setByHash(id(key), 'new-value', expirableTokenId)).to.be.revertedWith(
'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
);
await unsRegistry.setApprovalForAll(sender.address, true);
await expect(
- unsRegistry.connect(sender).setManyByHash([utils.id(key)], ['new-value'], expirableTokenId),
- ).to.be.revertedWith(
- 'Registry: SENDER_IS_NOT_APPROVED_OR_OWNER',
- );
+ unsRegistry.connect(sender).setManyByHash([id(key)], ['new-value'], expirableTokenId),
+ ).to.be.revertedWith('Registry: SENDER_IS_NOT_APPROVED_OR_OWNER');
});
it('should get multiple values by hashes', async () => {
@@ -1274,7 +1205,7 @@ describe('UNSRegistry', () => {
const expectedValues = ['value-42', 'value-43'];
await unsRegistry.setMany(keys, expectedValues, tokenId);
- const hashedKeys = keys.map((key) => BigNumber.from(utils.id(key)));
+ const hashedKeys = keys.map((key) => BigInt(id(key)));
const result = await unsRegistry.getManyByHash(hashedKeys, tokenId);
expect(result).to.be.eql([keys, expectedValues]);
});
@@ -1287,7 +1218,7 @@ describe('UNSRegistry', () => {
await unsRegistryMock.setMany(keys, values, tokenId);
await unsRegistryMock.upgradeAll([tokenId]);
- const hashedKeys = keys.map((key) => BigNumber.from(utils.id(key)));
+ const hashedKeys = keys.map((key) => BigInt(id(key)));
const [, resultingValues] = await unsRegistryMock.connect(reader).getManyByHash(hashedKeys, tokenId);
@@ -1311,7 +1242,7 @@ describe('UNSRegistry', () => {
it('should revert setting record by hash when key is not registered', async () => {
const expectedKey = 'key_23f3c';
- const keyHash = BigNumber.from(utils.id(expectedKey));
+ const keyHash = BigInt(id(expectedKey));
await expect(unsRegistry.setByHash(keyHash, 'value', tokenId)).to.be.revertedWith(
'RecordStorage: KEY_NOT_FOUND',
@@ -1345,7 +1276,7 @@ describe('UNSRegistry', () => {
const key1 = 'key_2d83c';
const key2 = 'key_4o83f';
const key1Hash = await initializeKey(key1);
- const key2Hash = BigNumber.from(utils.id(key2));
+ const key2Hash = BigInt(id(key2));
await expect(unsRegistry.setManyByHash([key1Hash, key2Hash], ['value1', 'value2'], tokenId)).to.be.revertedWith(
'RecordStorage: KEY_NOT_FOUND',
@@ -1358,7 +1289,7 @@ describe('UNSRegistry', () => {
const exitsKeyHashTx = await unsRegistry.set('keyhash-gas', 'value', tokenId);
const exitsKeyHashTxReceipt = await exitsKeyHashTx.wait();
- expect(newKeyHashTxReceipt.gasUsed).to.be.above(exitsKeyHashTxReceipt.gasUsed);
+ expect(newKeyHashTxReceipt?.gasUsed).to.be.above(exitsKeyHashTxReceipt?.gasUsed);
const newKeyHashTx2 = await unsRegistry.setMany(
['keyhash-gas-1', 'keyhash-gas-2'],
@@ -1373,7 +1304,7 @@ describe('UNSRegistry', () => {
);
const exitsKeyHashTxReceipt2 = await exitsKeyHashTx2.wait();
- expect(newKeyHashTxReceipt2.gasUsed).to.be.above(exitsKeyHashTxReceipt2.gasUsed);
+ expect(newKeyHashTxReceipt2?.gasUsed).to.be.above(exitsKeyHashTxReceipt2?.gasUsed);
const newKeyHashTx3 = await unsRegistry.setMany(
['keyhash-gas-3', 'keyhash-gas-4', 'keyhash-gas-5'],
@@ -1388,7 +1319,7 @@ describe('UNSRegistry', () => {
);
const exitsKeyHashTxReceipt3 = await exitsKeyHashTx3.wait();
- expect(newKeyHashTxReceipt3.gasUsed).to.be.above(exitsKeyHashTxReceipt3.gasUsed);
+ expect(newKeyHashTxReceipt3?.gasUsed).to.be.above(exitsKeyHashTxReceipt3?.gasUsed);
});
});
});
@@ -1396,7 +1327,7 @@ describe('UNSRegistry', () => {
describe('Registry (renewals)', () => {
describe('expiryOf', () => {
it('should return expiry of a token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase, tld: 'com', expiry });
expect(await unsRegistry.expiryOf(tokenId)).to.be.equal(expiry);
@@ -1410,14 +1341,14 @@ describe('UNSRegistry', () => {
describe('isExpired', () => {
it('should return false if token is not expired', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com', expiry });
expect(await unsRegistry.isExpired(tokenId)).to.be.equal(false);
});
it('should return true if token is expired', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com', expiry });
await increaseTimeBy(60 * 60 * 24 + 1);
@@ -1433,21 +1364,21 @@ describe('UNSRegistry', () => {
describe('setExpiry', () => {
it('should set expiry for a token', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com' });
const newExpiry = expiry + 60 * 60 * 24;
- await expect(
- unsRegistry.setExpiry(newExpiry, tokenId),
- ).to.emit(unsRegistry, 'SetExpiry').withArgs(tokenId, newExpiry);
+ await expect(unsRegistry.setExpiry(newExpiry, tokenId))
+ .to.emit(unsRegistry, 'SetExpiry')
+ .withArgs(tokenId, newExpiry);
expect(await unsRegistry.expiryOf(tokenId)).to.be.equal(newExpiry);
});
it('should not allow setting expiry in the past', async () => {
- const expiry = latestBlock.timestamp + 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 60 * 60 * 24;
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com' });
await expect(unsRegistry.setExpiry(expiry - 60 * 60 * 24, tokenId)).to.be.revertedWith(
@@ -1458,7 +1389,7 @@ describe('UNSRegistry', () => {
it('should not allow setting expiry for non-existent token', async () => {
const tokenId = await unsRegistry.namehash(['some_invalid_label', 'crypto']);
- await expect(unsRegistry.setExpiry(latestBlock.timestamp + 60 * 60 * 24, tokenId)).to.be.revertedWith(
+ await expect(unsRegistry.setExpiry(latestBlockTimestamp + 60 * 60 * 24, tokenId)).to.be.revertedWith(
'ERC721: invalid token ID',
);
});
@@ -1467,13 +1398,8 @@ describe('UNSRegistry', () => {
const tokenId = await mintRandomDomain({ unsRegistry, owner: coinbase.address, tld: 'com' });
await expect(
- unsRegistry.connect(signers[1]).setExpiry(
- latestBlock.timestamp + 60 * 60 * 24,
- tokenId,
- ),
- ).to.be.revertedWith(
- 'Registry: SENDER_IS_NOT_MINTING_MANAGER',
- );
+ unsRegistry.connect(signers[1]).setExpiry(latestBlockTimestamp + 60 * 60 * 24, tokenId),
+ ).to.be.revertedWith('Registry: SENDER_IS_NOT_MINTING_MANAGER');
});
});
});
diff --git a/test/consumption/CNSRegistry.gas.test.ts b/test/consumption/CNSRegistry.gas.test.ts
index b564f1a0..662c41d7 100644
--- a/test/consumption/CNSRegistry.gas.test.ts
+++ b/test/consumption/CNSRegistry.gas.test.ts
@@ -1,4 +1,4 @@
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { ethers } from 'hardhat';
import { CNSRegistryForwarder } from '../../types/contracts/metatx';
import { CNSRegistry } from '../../types/dot-crypto/contracts';
@@ -32,15 +32,15 @@ describe('CNSRegistry (consumption)', () => {
[owner, receiver, spender] = signers;
registry = await new CNSRegistry__factory(owner).deploy();
- mintingController = await new MintingController__factory(owner).deploy(registry.address);
- signatureController = await new SignatureController__factory(owner).deploy(registry.address);
+ mintingController = await new MintingController__factory(owner).deploy(await registry.getAddress());
+ signatureController = await new SignatureController__factory(owner).deploy(await registry.getAddress());
- await registry.addController(mintingController.address);
- await registry.addController(signatureController.address);
+ await registry.addController(await mintingController.getAddress());
+ await registry.addController(await signatureController.getAddress());
- forwarder = await new CNSRegistryForwarder__factory(owner).deploy(signatureController.address);
+ forwarder = await new CNSRegistryForwarder__factory(owner).deploy(await signatureController.getAddress());
- buildExecuteParams = buildExecuteFunc(registry.interface, signatureController.address, forwarder);
+ buildExecuteParams = buildExecuteFunc(registry.interface, await signatureController.getAddress(), forwarder);
});
it('`transferFrom` consumption', async () => {
@@ -51,7 +51,7 @@ describe('CNSRegistry (consumption)', () => {
const tokenId = await mintDomain(label, owner.address);
const directTx = await registry.connect(owner).transferFrom(owner.address, receiver.address, tokenId);
- const directTxReceipt = await directTx.wait();
+ const directTxReceipt = (await directTx.wait())!;
// Old meta-tx
const tokenIdFor = await mintDomain(label + 'for', owner.address);
@@ -61,12 +61,12 @@ describe('CNSRegistry (consumption)', () => {
tokenIdFor,
]);
const nonceFor = await signatureController.nonceOf(tokenIdFor);
- const signatureFor = await sign(dataFor, signatureController.address, nonceFor, owner);
+ const signatureFor = await sign(dataFor, await signatureController.getAddress(), nonceFor, owner);
const forTx = await signatureController
.connect(spender)
.transferFromFor(owner.address, receiver.address, tokenIdFor, signatureFor);
- const forTxReceipt = await forTx.wait();
+ const forTxReceipt = (await forTx.wait())!;
// Forwarder
const tokenIdForward = await mintDomain(label + 'forward', owner.address);
@@ -78,15 +78,15 @@ describe('CNSRegistry (consumption)', () => {
);
const forwardTx = await forwarder.connect(spender).execute(req, signature);
- const forwardTxReceipt = await forwardTx.wait();
+ const forwardTxReceipt = (await forwardTx.wait())!;
result.push({
selector: 'transferFrom(address,address,uint256)',
directTx: directTxReceipt.gasUsed.toString(),
forTx: forTxReceipt.gasUsed.toString(),
- diff1: percDiff(directTxReceipt.gasUsed.toNumber(), forTxReceipt.gasUsed.toNumber()) + ' %',
+ diff1: percDiff(directTxReceipt.gasUsed, forTxReceipt.gasUsed) + ' %',
forwardTx: forwardTxReceipt.gasUsed.toString(),
- diff2: percDiff(forTxReceipt.gasUsed.toNumber(), forwardTxReceipt.gasUsed.toNumber()) + ' %',
+ diff2: percDiff(forTxReceipt.gasUsed, forwardTxReceipt.gasUsed) + ' %',
});
console.table(result);
});
diff --git a/test/consumption/DotCoinBurner.gas.test.ts b/test/consumption/DotCoinBurner.gas.test.ts
index 4e21bfe2..02e55300 100644
--- a/test/consumption/DotCoinBurner.gas.test.ts
+++ b/test/consumption/DotCoinBurner.gas.test.ts
@@ -1,14 +1,10 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { solidityKeccak256 } from 'ethers/lib/utils';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumber } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { solidityPackedKeccak256 } from 'ethers';
import { DotCoinBurner__factory, UNSRegistry__factory } from '../../types/factories/contracts';
import { DotCoinBurner, UNSRegistry } from '../../types/contracts';
-import {
- DEAD_ADDRESS,
- ZERO_ADDRESS,
-} from '../helpers/constants';
+import { DEAD_ADDRESS, ZERO_ADDRESS } from '../helpers/constants';
import { mintDomain } from '../helpers/registry';
// Gas estimations is not needed to be ran due to temporary nature of DotCoinBurner contract
@@ -28,7 +24,7 @@ describe.skip('DotCoinBurner (consumption)', () => {
beforeEach(async () => {
// deploy Dot Coin Burner
- dotCoinBurner = await new DotCoinBurner__factory(coinbase).deploy(unsRegistry.address);
+ dotCoinBurner = await new DotCoinBurner__factory(coinbase).deploy(await unsRegistry.getAddress());
});
describe('Estimate gas spendings', () => {
@@ -42,15 +38,16 @@ describe.skip('DotCoinBurner (consumption)', () => {
});
async function verifyMultipleDomainsBurn (amount: number, labelPrefix: string) {
- const mintedTokenIds: BigNumber[] = [];
+ const mintedTokenIds: bigint[] = [];
const labelHashes: string[] = [];
for (let i = 0; i < amount; i++) {
const label = `${labelPrefix}-${i}`;
- labelHashes.push(solidityKeccak256(['string'], [label]));
+ labelHashes.push(solidityPackedKeccak256(['string'], [label]));
mintedTokenIds.push(await mintDomain({ unsRegistry, owner: accounts[0], labels: [label, 'coin'] }));
}
- await unsRegistry.connect(accounts[0]).setApprovalForAll(dotCoinBurner.address, true);
- const txReceipt = await (await dotCoinBurner.burnAll(labelHashes)).wait();
+ await unsRegistry.connect(accounts[0]).setApprovalForAll(await dotCoinBurner.getAddress(), true);
+ const tx = await dotCoinBurner.burnAll(labelHashes);
+ const txReceipt = (await tx.wait())!;
expect(mintedTokenIds).to.have.lengthOf(amount);
for (let i = 0; i < mintedTokenIds.length; i++) {
diff --git a/test/consumption/MintingManager.gas.test.ts b/test/consumption/MintingManager.gas.test.ts
index 01029fd2..13ed2d7e 100644
--- a/test/consumption/MintingManager.gas.test.ts
+++ b/test/consumption/MintingManager.gas.test.ts
@@ -1,6 +1,6 @@
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { getBytes, parseEther, solidityPackedKeccak256 } from 'ethers';
import { ethers, network } from 'hardhat';
-import { Block } from '@ethersproject/abstract-provider';
import { ERC20Mock, ERC20Mock__factory } from '../../types';
import { MintingManager, UNSRegistry } from '../../types/contracts';
import { MintingManagerForwarder } from '../../types/contracts/metatx';
@@ -9,7 +9,7 @@ import { MintingManagerForwarder__factory } from '../../types/factories/contract
import { ZERO_ADDRESS } from '../helpers/constants';
import { percDiff } from '../helpers/consumption';
import { buildExecuteFunc, ExecuteFunc } from '../helpers/metatx';
-import { increaseTimeBy } from '../helpers/utils';
+import { getLatestBlockTimestamp, increaseTimeBy } from '../helpers/utils';
describe('MintingManager (consumption)', () => {
let unsRegistry: UNSRegistry, mintingManager: MintingManager, forwarder: MintingManagerForwarder;
@@ -18,7 +18,7 @@ describe('MintingManager (consumption)', () => {
receiver: SignerWithAddress,
spender: SignerWithAddress;
- let latestBlock: Block;
+ let latestBlockTimestamp: number;
let buildExecuteParams: ExecuteFunc;
@@ -36,12 +36,12 @@ describe('MintingManager (consumption)', () => {
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
- forwarder = await new MintingManagerForwarder__factory(coinbase).deploy(mintingManager.address);
+ forwarder = await new MintingManagerForwarder__factory(coinbase).deploy(await mintingManager.getAddress());
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
@@ -50,13 +50,13 @@ describe('MintingManager (consumption)', () => {
);
await mintingManager.addMinter(coinbase.address);
await mintingManager.setTokenURIPrefix('/');
- await mintingManager.setForwarder(forwarder.address);
+ await mintingManager.setForwarder(await forwarder.getAddress());
- buildExecuteParams = buildExecuteFunc(mintingManager.interface, mintingManager.address, forwarder);
+ buildExecuteParams = buildExecuteFunc(mintingManager.interface, await mintingManager.getAddress(), forwarder);
});
beforeEach(async () => {
- latestBlock = await ethers.provider.getBlock('latest');
+ latestBlockTimestamp = await getLatestBlockTimestamp();
});
describe('Mint consumption', () => {
@@ -100,7 +100,7 @@ describe('MintingManager (consumption)', () => {
const { req, signature } = await buildExecuteParams(selector, executeParams, coinbase, tokenId);
const executeTx = await forwarder.connect(spender).execute(req, signature);
- const executeTxReceipt = await executeTx.wait();
+ const executeTxReceipt = (await executeTx.wait())!;
await removeReverse();
@@ -116,11 +116,11 @@ describe('MintingManager (consumption)', () => {
reverse: params[4],
execute: executeTxReceipt.gasUsed.toString(),
send: tx.receipt.gasUsed.toString(),
- increase: percDiff(tx.receipt.gasUsed.toNumber(), executeTxReceipt.gasUsed.toNumber()) + ' %',
+ increase: percDiff(tx.receipt.gasUsed, executeTxReceipt.gasUsed) + ' %',
});
- await unsRegistry.connect(receiver).setOwner(mintingManager.address, tokenId);
- await unsRegistry.connect(receiver).setOwner(mintingManager.address, tokenId2);
+ await unsRegistry.connect(receiver).setOwner(await mintingManager.getAddress(), tokenId);
+ await unsRegistry.connect(receiver).setOwner(await mintingManager.getAddress(), tokenId2);
}
console.table(result);
});
@@ -128,7 +128,7 @@ describe('MintingManager (consumption)', () => {
describe('Mint expirable consumption', () => {
const getCases = () => {
- const expiry = latestBlock.timestamp + 2 * 60 * 60 * 24;
+ const expiry = latestBlockTimestamp + 2 * 60 * 60 * 24;
return [
{
@@ -158,15 +158,17 @@ describe('MintingManager (consumption)', () => {
await mintingManager.issueExpirableWithRecords(
spender.address,
['expired-consumption', 'com'],
- [], [],
- latestBlock.timestamp + 60 * 60 * 24,
+ [],
+ [],
+ latestBlockTimestamp + 60 * 60 * 24,
true,
);
await mintingManager.issueExpirableWithRecords(
spender.address,
['expired-consumption-meta', 'com'],
- [], [],
- latestBlock.timestamp + 60 * 60 * 24,
+ [],
+ [],
+ latestBlockTimestamp + 60 * 60 * 24,
true,
);
await increaseTimeBy(60 * 60 * 24);
@@ -184,7 +186,7 @@ describe('MintingManager (consumption)', () => {
const { req, signature } = await buildExecuteParams(selector, executeParams, coinbase, tokenId);
const executeTx = await forwarder.connect(spender).execute(req, signature);
- const executeTxReceipt = await executeTx.wait();
+ const executeTxReceipt = (await executeTx.wait())!;
await removeReverse();
@@ -200,11 +202,11 @@ describe('MintingManager (consumption)', () => {
reverse: params[5],
execute: executeTxReceipt.gasUsed.toString(),
send: tx.receipt.gasUsed.toString(),
- increase: percDiff(tx.receipt.gasUsed.toNumber(), executeTxReceipt.gasUsed.toNumber()) + ' %',
+ increase: percDiff(tx.receipt.gasUsed, executeTxReceipt.gasUsed) + ' %',
});
- await unsRegistry.connect(receiver).setOwner(mintingManager.address, tokenId);
- await unsRegistry.connect(receiver).setOwner(mintingManager.address, tokenId2);
+ await unsRegistry.connect(receiver).setOwner(await mintingManager.getAddress(), tokenId);
+ await unsRegistry.connect(receiver).setOwner(await mintingManager.getAddress(), tokenId2);
}
console.table(result);
@@ -368,7 +370,7 @@ describe('MintingManager (consumption)', () => {
const { req, signature } = await buildExecuteParams(selector, executeParams, coinbase, tokenId);
const executeTx = await forwarder.connect(spender).execute(req, signature);
- const executeTxReceipt = await executeTx.wait();
+ const executeTxReceipt = (await executeTx.wait())!;
await removeReverse();
@@ -384,11 +386,11 @@ describe('MintingManager (consumption)', () => {
reverse: params[4],
execute: executeTxReceipt.gasUsed.toString(),
send: tx.receipt.gasUsed.toString(),
- increase: percDiff(tx.receipt.gasUsed.toNumber(), executeTxReceipt.gasUsed.toNumber()) + ' %',
+ increase: percDiff(tx.receipt.gasUsed, executeTxReceipt.gasUsed) + ' %',
});
- await unsRegistry.connect(receiver).setOwner(mintingManager.address, tokenId);
- await unsRegistry.connect(receiver).setOwner(mintingManager.address, tokenId2);
+ await unsRegistry.connect(receiver).setOwner(await mintingManager.getAddress(), tokenId);
+ await unsRegistry.connect(receiver).setOwner(await mintingManager.getAddress(), tokenId2);
}
console.table(result);
});
@@ -399,78 +401,78 @@ describe('MintingManager (consumption)', () => {
const chainId = network.config.chainId;
const buyDomain = async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = parseEther('1');
const labels = ['onchainpurchase-consumption', 'nft'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = getBytes(
+ solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
+ [await mintingManager.getAddress(), chainId, spender.address, tokenId, expiry, price, ZERO_ADDRESS],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- const tx = await mintingManager.connect(spender).buy(
- spender.address,
- labels,
- ['key'], ['value'],
- expiry,
- price,
- signature,
- { value: price },
- );
+ const tx = await mintingManager
+ .connect(spender)
+ .buy(spender.address, labels, ['key'], ['value'], expiry, price, signature, { value: price });
- return tx.wait();
+ return (await tx.wait())!;
};
const buyDomainForErc20 = async () => {
- const expiry = latestBlock.timestamp + 24 * 60 * 60;
- const price = ethers.utils.parseEther('1');
+ const expiry = latestBlockTimestamp + 24 * 60 * 60;
+ const price = parseEther('1');
const labels = ['onchainpurchase-consumption-erc20', 'nft'];
const tokenId = await unsRegistry.namehash(labels);
- const purchaseHash = ethers.utils.arrayify(
- ethers.utils.solidityKeccak256(
+ const purchaseHash = getBytes(
+ solidityPackedKeccak256(
['address', 'uint256', 'address', 'uint256', 'uint64', 'uint256', 'address'],
- [mintingManager.address, chainId, spender.address, tokenId, expiry, price, erc20Mock.address],
+ [
+ await mintingManager.getAddress(),
+ chainId,
+ spender.address,
+ tokenId,
+ expiry,
+ price,
+ await erc20Mock.getAddress(),
+ ],
),
);
const signature = await coinbase.signMessage(purchaseHash);
- await erc20Mock.connect(spender).approve(mintingManager.address, price);
-
- const tx = await mintingManager.connect(spender).buyForErc20(
- spender.address,
- labels,
- ['key'], ['value'],
- expiry,
- erc20Mock.address,
- price,
- signature,
- );
-
- return tx.wait();
+ await erc20Mock.connect(spender).approve(await mintingManager.getAddress(), price);
+
+ const tx = await mintingManager
+ .connect(spender)
+ .buyForErc20(
+ spender.address,
+ labels,
+ ['key'],
+ ['value'],
+ expiry,
+ await erc20Mock.getAddress(),
+ price,
+ signature,
+ );
+
+ return (await tx.wait())!;
};
before(async () => {
erc20Mock = await new ERC20Mock__factory(coinbase).deploy();
- await erc20Mock.mint(spender.address, ethers.utils.parseEther('1'));
+ await erc20Mock.mint(spender.address, parseEther('1'));
});
it('Consumption', async () => {
const result: unknown[] = [];
- await mintingManager.connect(coinbase).issueWithRecords(
- spender.address,
- ['reverse', 'x'],
- [], [],
- true,
- );
+ await mintingManager.connect(coinbase).issueWithRecords(spender.address, ['reverse', 'x'], [], [], true);
const buyDomainReceipt = await buyDomain();
const buyDomainErc20Receipt = await buyDomainForErc20();
diff --git a/test/consumption/UNSRegistry.gas.test.ts b/test/consumption/UNSRegistry.gas.test.ts
index e7ec30c6..108f37ce 100644
--- a/test/consumption/UNSRegistry.gas.test.ts
+++ b/test/consumption/UNSRegistry.gas.test.ts
@@ -1,6 +1,6 @@
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { ContractTransactionReceipt, id } from 'ethers';
import { ethers } from 'hardhat';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumber, utils } from 'ethers';
import { UNSRegistry } from '../../types/contracts';
import { UNSRegistry__factory } from '../../types/factories/contracts';
import { TLD, ZERO_ADDRESS } from '../helpers/constants';
@@ -10,9 +10,9 @@ describe('UNSRegistry (consumption)', () => {
let unsRegistry: UNSRegistry;
let signers: SignerWithAddress[], coinbase: SignerWithAddress;
- const initializeKey = async (key) => {
+ const initializeKey = async (key: string) => {
await unsRegistry.addKey(key);
- return BigNumber.from(utils.id(key));
+ return BigInt(id(key));
};
before(async () => {
@@ -66,6 +66,7 @@ describe('UNSRegistry (consumption)', () => {
params2: ['9898219.c054e083d016bc5000000000000000000000000000000000000000000000000000000000000.f4240', 'v1'],
},
];
+
for (let i = 0; i < cases.length; i++) {
const { name, selector1, selector2, labels1, labels2, params1, params2 } = cases[i];
@@ -79,17 +80,17 @@ describe('UNSRegistry (consumption)', () => {
const keyHash = await initializeKey(key);
const tx1 = await unsRegistry[selector1](...params1, tokenId1);
- tx1.receipt = await tx1.wait();
+ const tx1Receipt = (await tx1.wait()) as ContractTransactionReceipt;
const tx2 = await unsRegistry[selector2](keyHash, value, tokenId2);
- tx2.receipt = await tx2.wait();
+ const tx2Receipt = (await tx2.wait()) as ContractTransactionReceipt;
result.push({
name,
recordLen: params1[0].length,
- set: tx1.receipt.gasUsed.toString(),
- setByHash: tx2.receipt.gasUsed.toString(),
- increase: percDiff(tx1.receipt.gasUsed.toNumber(), tx2.receipt.gasUsed.toNumber()) + ' %',
+ set: tx1Receipt.gasUsed.toString(),
+ setByHash: tx2Receipt.gasUsed.toString(),
+ increase: percDiff(tx1Receipt.gasUsed, tx2Receipt.gasUsed) + ' %',
});
}
console.table(result);
@@ -152,17 +153,17 @@ describe('UNSRegistry (consumption)', () => {
const keyHashes = keys.map(async (key) => await initializeKey(key));
const tx1 = await unsRegistry[selector1](...params1, tokenId1);
- tx1.receipt = await tx1.wait();
+ const tx1Receipt = (await tx1.wait()) as ContractTransactionReceipt;
const tx2 = await unsRegistry[selector2](keyHashes, values, tokenId2);
- tx2.receipt = await tx2.wait();
+ const tx2Receipt = (await tx2.wait()) as ContractTransactionReceipt;
result.push({
name,
records: params1[0].length,
- setMany: tx1.receipt.gasUsed.toString(),
- setManyByHash: tx2.receipt.gasUsed.toString(),
- increase: percDiff(tx1.receipt.gasUsed.toNumber(), tx2.receipt.gasUsed.toNumber()) + ' %',
+ setMany: tx1Receipt.gasUsed.toString(),
+ setManyByHash: tx2Receipt.gasUsed.toString(),
+ increase: percDiff(tx1Receipt.gasUsed, tx2Receipt.gasUsed) + ' %',
});
}
console.table(result);
diff --git a/test/consumption/UNSRegistry.multicall.gas.test.ts b/test/consumption/UNSRegistry.multicall.gas.test.ts
index f834fa58..21c00035 100644
--- a/test/consumption/UNSRegistry.multicall.gas.test.ts
+++ b/test/consumption/UNSRegistry.multicall.gas.test.ts
@@ -1,6 +1,6 @@
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { ContractTransactionReceipt, Interface } from 'ethers';
import { ethers } from 'hardhat';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { Interface } from 'ethers/lib/utils';
import { UNSRegistry } from '../../types/contracts';
import { UNSRegistry__factory } from '../../types/factories/contracts';
import { TLD, ZERO_ADDRESS } from '../helpers/constants';
@@ -133,12 +133,12 @@ describe('UNSRegistry Multicall (consumption)', () => {
for (let i = 0; i < cases.length; i++) {
const { name, labels, selectors, params } = cases[i];
- let cumGasUsed = 0;
+ let cumGasUsed = BigInt(0);
const params1 = await prepParams(params, labels);
for (let i = 0; i < selectors.length; i++) {
const tx = await unsRegistry[selectors[i]](...params1[i]);
- const receipt = await tx.wait();
- cumGasUsed += receipt.gasUsed.toNumber();
+ const receipt = (await tx.wait()) as ContractTransactionReceipt;
+ cumGasUsed += receipt.gasUsed;
}
const labels2 = [labels[0] + '-multi', labels[1]];
@@ -147,16 +147,16 @@ describe('UNSRegistry Multicall (consumption)', () => {
const iface: Interface = unsRegistry.interface;
const tx = await unsRegistry.multicall(
selectors.map((selector, index) =>
- iface.encodeFunctionData(unsRegistry.interface.functions[selector].name, params2[index]),
+ iface.encodeFunctionData(unsRegistry.interface.getFunctionName(selector), params2[index]),
),
);
- const receipt = await tx.wait();
+ const receipt = (await tx.wait())!;
result.push({
name,
seq: cumGasUsed.toString(),
multicall: receipt.gasUsed.toString(),
- increase: percDiff(cumGasUsed, receipt.gasUsed.toNumber()) + ' %',
+ increase: percDiff(cumGasUsed, receipt.gasUsed) + ' %',
});
}
console.table(result);
diff --git a/test/consumption/UNSRegistry.reverse.gas.test.ts b/test/consumption/UNSRegistry.reverse.gas.test.ts
index dfbcf346..8f8492b6 100644
--- a/test/consumption/UNSRegistry.reverse.gas.test.ts
+++ b/test/consumption/UNSRegistry.reverse.gas.test.ts
@@ -1,6 +1,6 @@
import * as crypto from 'crypto';
import { ethers } from 'hardhat';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { UNSRegistry } from '../../types/contracts';
import { UNSRegistry__factory } from '../../types/factories/contracts';
import { buildExecuteFunc, ExecuteFunc } from '../helpers/metatx';
@@ -10,9 +10,7 @@ import { mintDomain } from '../helpers/registry';
describe('UNSRegistry Set Reverse (consumption)', () => {
let unsRegistry: UNSRegistry;
- let signers: SignerWithAddress[],
- coinbase: SignerWithAddress,
- owner: SignerWithAddress;
+ let signers: SignerWithAddress[], coinbase: SignerWithAddress, owner: SignerWithAddress;
let buildExecuteParams: ExecuteFunc;
before(async () => {
@@ -26,11 +24,7 @@ describe('UNSRegistry Set Reverse (consumption)', () => {
await unsRegistry.initialize(coinbase.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await unsRegistry.mintTLD(TLD.X, 'x');
- buildExecuteParams = buildExecuteFunc(
- unsRegistry.interface,
- unsRegistry.address,
- unsRegistry,
- );
+ buildExecuteParams = buildExecuteFunc(unsRegistry.interface, await unsRegistry.getAddress(), unsRegistry);
});
describe('Set Reverse Consumption', () => {
@@ -49,14 +43,10 @@ describe('UNSRegistry Set Reverse (consumption)', () => {
const uri = labels.join('.');
const tokenId = await mintDomain({ unsRegistry, owner, labels });
- const newSetReverseParams = await buildExecuteParams(
- 'setReverse(string[])',
- [labels],
- owner,
- tokenId,
- );
- const newTxReceipt =
- await (await unsRegistry.execute(newSetReverseParams.req, newSetReverseParams.signature)).wait();
+ const newSetReverseParams = await buildExecuteParams('setReverse(string[])', [labels], owner, tokenId);
+ const newTxReceipt = await (
+ await unsRegistry.execute(newSetReverseParams.req, newSetReverseParams.signature)
+ ).wait();
const subdomainLabels = ['a', ...labels];
const subdomainUri = subdomainLabels.join('.');
@@ -67,12 +57,9 @@ describe('UNSRegistry Set Reverse (consumption)', () => {
owner,
subdomainTokenId,
);
- const newSubdomainTxReceipt =
- await (await unsRegistry
- .execute(
- newSubdomainsSetReverseParams.req,
- newSubdomainsSetReverseParams.signature,
- )).wait();
+ const newSubdomainTxReceipt = await (
+ await unsRegistry.execute(newSubdomainsSetReverseParams.req, newSubdomainsSetReverseParams.signature)
+ ).wait();
const secondLevelSubdomainLabels = ['b', ...subdomainLabels];
const secondLevelSubdomainUri = secondLevelSubdomainLabels.join('.');
@@ -83,20 +70,20 @@ describe('UNSRegistry Set Reverse (consumption)', () => {
owner,
secondLevelSubdomainTokenId,
);
- const newSecondLevelSubdomainTxReceipt =
- await (await unsRegistry
- .execute(
- newSecondLevelSubdomainSetReverseParams.req,
- newSecondLevelSubdomainSetReverseParams.signature,
- )).wait();
+ const newSecondLevelSubdomainTxReceipt = await (
+ await unsRegistry.execute(
+ newSecondLevelSubdomainSetReverseParams.req,
+ newSecondLevelSubdomainSetReverseParams.signature,
+ )
+ ).wait();
return {
- 'length': uri.length,
- 'gas': newTxReceipt.gasUsed.toString(),
+ length: uri.length,
+ gas: newTxReceipt?.gasUsed.toString(),
'1 level subdomain length': subdomainUri.length,
- '1 level subdomain gas': newSubdomainTxReceipt.gasUsed.toString(),
+ '1 level subdomain gas': newSubdomainTxReceipt?.gasUsed.toString(),
'2 level subdomain length': secondLevelSubdomainUri.length,
- '2 level subdomain gas': newSecondLevelSubdomainTxReceipt.gasUsed.toString(),
+ '2 level subdomain gas': newSecondLevelSubdomainTxReceipt?.gasUsed.toString(),
};
}
});
diff --git a/test/custody/ENSCustody.metatx.test.ts b/test/custody/ENSCustody.metatx.test.ts
index 5b1a7da0..54fef61e 100644
--- a/test/custody/ENSCustody.metatx.test.ts
+++ b/test/custody/ENSCustody.metatx.test.ts
@@ -1,40 +1,56 @@
-import { ethers, upgrades } from 'hardhat';
+import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { namehash } from 'ethers/lib/utils';
+import { namehash, Wallet } from 'ethers';
import { sha3 } from 'web3-utils';
-import { BigNumber } from 'ethers';
+import { HardhatEthersProvider } from '@nomicfoundation/hardhat-ethers/internal/hardhat-ethers-provider';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import {
+ BaseRegistrarImplementation,
BaseRegistrarImplementation__factory,
DummyOracle__factory,
+ ENSCustody,
ENSCustody__factory,
+ ENSRegistry,
ENSRegistry__factory,
+ ETHRegistrarController,
ETHRegistrarController__factory,
+ NameWrapper,
NameWrapper__factory,
+ ReverseRegistrar,
ReverseRegistrar__factory,
+ StablePriceOracle,
StablePriceOracle__factory,
} from '../../types';
import { REGISTRATION_TIME, ZERO_ADDRESS, ZERO_WORD } from '../helpers/constants';
import { ExecuteFunc, buildExecuteFunc } from '../helpers/metatx';
import { increaseTimeBy } from '../helpers/utils';
+import { deployProxy } from '../../src/helpers';
describe('ENSCustody (metatx)', function () {
- let provider;
- let ens;
- let baseRegistrar;
- let controller;
- let priceOracle;
- let reverseRegistrar;
- let nameWrapper;
- let custody;
+ let provider: HardhatEthersProvider;
+ let ens: ENSRegistry;
+ let baseRegistrar: BaseRegistrarImplementation;
+ let controller: ETHRegistrarController;
+ let priceOracle: StablePriceOracle;
+ let reverseRegistrar: ReverseRegistrar;
+ let nameWrapper: NameWrapper;
+ let custody: ENSCustody;
const secret = '0x0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF';
let buildExecuteParams: ExecuteFunc;
- let signers, owner, registrant, minter, spender;
- let ownerAddress, registrantAddress;
- let result;
-
- async function registerAndParkName (name, minter, resolver = ZERO_ADDRESS, selfCustody = false, txOptions = {}) {
+ let signers: SignerWithAddress[], owner: SignerWithAddress, registrant: SignerWithAddress, spender: SignerWithAddress;
+ let minter: Wallet;
+ let ownerAddress: string, registrantAddress: string;
+ let result: unknown;
+
+ async function registerAndParkName (
+ name: string,
+ minter: Wallet,
+ resolver = ZERO_ADDRESS,
+ selfCustody = false,
+ txOptions = {},
+ ) {
// make commitment
const commitment = await custody.makeCommitment(
name,
@@ -48,10 +64,11 @@ describe('ENSCustody (metatx)', function () {
selfCustody,
);
const commitTx = await custody.commit(commitment);
- const { timestamp } = await provider.getBlock(commitTx.blockNumber);
+ const block = await provider.getBlock(commitTx.blockNumber!);
+ const { timestamp } = block!;
expect(await controller.commitments(commitment)).to.equal(timestamp);
- await increaseTimeBy((await controller.minCommitmentAge()).toNumber());
+ await increaseTimeBy(await controller.minCommitmentAge());
// register
const tokenId = namehash(`${name}.eth`);
@@ -60,31 +77,31 @@ describe('ENSCustody (metatx)', function () {
[name, registrantAddress, REGISTRATION_TIME, secret, resolver, [], false, 0, selfCustody],
minter,
tokenId,
- BigNumber.from(0),
+ BigInt(0),
);
const registerTx = await custody.connect(spender).execute(req, signature, txOptions);
return [commitTx, registerTx];
}
- async function topupCustody (name) {
+ async function topupCustody (name: string) {
const [base, premium] = await controller.rentPrice(name, REGISTRATION_TIME);
- const price = base.add(premium);
- await owner.sendTransaction({ to: custody.address, value: price });
+ const price = base + premium;
+ await owner.sendTransaction({ to: await custody.getAddress(), value: price });
return price;
}
- async function assertOwnership (name, owner, selfCustody = false) {
- const tokenId = sha3(name);
+ async function assertOwnership (name: string, owner: string, selfCustody = false) {
+ const tokenId = sha3(name)!;
const node = namehash(`${name}.eth`);
expect(await controller.available(name)).to.equal(false);
- expect(await ens.owner(node)).to.equal(nameWrapper.address);
- expect(await baseRegistrar.ownerOf(tokenId)).to.equal(nameWrapper.address);
+ expect(await ens.owner(node)).to.equal(await nameWrapper.getAddress());
+ expect(await baseRegistrar.ownerOf(tokenId)).to.equal(await nameWrapper.getAddress());
if (selfCustody) {
expect(await nameWrapper.ownerOf(node)).to.equal(owner);
} else {
- expect(await nameWrapper.ownerOf(node)).to.equal(custody.address);
+ expect(await nameWrapper.ownerOf(node)).to.equal(await custody.getAddress());
expect(await custody.ownerOf(node)).to.equal(owner);
}
}
@@ -98,42 +115,46 @@ describe('ENSCustody (metatx)', function () {
minter = new ethers.Wallet('0x' + '1'.repeat(64), provider);
ens = await new ENSRegistry__factory(owner).deploy();
- baseRegistrar = await new BaseRegistrarImplementation__factory(owner).deploy(ens.address, namehash('eth'));
- reverseRegistrar = await new ReverseRegistrar__factory(owner).deploy(ens.address);
+ baseRegistrar = await new BaseRegistrarImplementation__factory(owner).deploy(
+ await ens.getAddress(),
+ namehash('eth'),
+ );
+ reverseRegistrar = await new ReverseRegistrar__factory(owner).deploy(await ens.getAddress());
- await ens.setSubnodeOwner(ZERO_WORD, sha3('reverse'), ownerAddress);
- await ens.setSubnodeOwner(namehash('reverse'), sha3('addr'), reverseRegistrar.address);
+ await ens.setSubnodeOwner(ZERO_WORD, sha3('reverse')!, ownerAddress);
+ await ens.setSubnodeOwner(namehash('reverse'), sha3('addr')!, await reverseRegistrar.getAddress());
- nameWrapper = await new NameWrapper__factory(owner).deploy(ens.address, baseRegistrar.address, ownerAddress);
+ nameWrapper = await new NameWrapper__factory(owner).deploy(
+ await ens.getAddress(),
+ await baseRegistrar.getAddress(),
+ ownerAddress,
+ );
- await ens.setSubnodeOwner(ZERO_WORD, sha3('eth'), baseRegistrar.address);
+ await ens.setSubnodeOwner(ZERO_WORD, sha3('eth')!, await baseRegistrar.getAddress());
const dummyOracle = await new DummyOracle__factory(owner).deploy('100000000');
- priceOracle = await new StablePriceOracle__factory(owner).deploy(dummyOracle.address, [0, 0, 4, 2, 1]);
+ priceOracle = await new StablePriceOracle__factory(owner).deploy(await dummyOracle.getAddress(), [0, 0, 4, 2, 1]);
controller = await new ETHRegistrarController__factory(owner).deploy(
- baseRegistrar.address,
- priceOracle.address,
+ await baseRegistrar.getAddress(),
+ await priceOracle.getAddress(),
600,
86400,
- reverseRegistrar.address,
- nameWrapper.address,
- ens.address,
- );
- await nameWrapper.setController(controller.address, true);
- await baseRegistrar.addController(nameWrapper.address);
- await reverseRegistrar.setController(controller.address, true);
-
- custody = await upgrades.deployProxy(
- new ENSCustody__factory(owner),
- [
- controller.address,
- nameWrapper.address,
- baseRegistrar.address,
- ],
+ await reverseRegistrar.getAddress(),
+ await nameWrapper.getAddress(),
+ await ens.getAddress(),
);
+ await nameWrapper.setController(await controller.getAddress(), true);
+ await baseRegistrar.addController(await nameWrapper.getAddress());
+ await reverseRegistrar.setController(await controller.getAddress(), true);
+
+ custody = await deployProxy(new ENSCustody__factory(owner), [
+ await controller.getAddress(),
+ await nameWrapper.getAddress(),
+ await baseRegistrar.getAddress(),
+ ]);
await custody.addMinter(minter.address);
- buildExecuteParams = buildExecuteFunc(custody.interface, custody.address, custody);
+ buildExecuteParams = buildExecuteFunc(custody.interface, await custody.getAddress(), custody);
});
beforeEach(async () => {
@@ -192,7 +213,11 @@ describe('ENSCustody (metatx)', function () {
tokenId,
await custody.nonceOf(tokenId),
);
- await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWith('Unauthorised');
+
+ await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWithCustomError(
+ custody,
+ 'Unauthorised',
+ );
});
it('should revert with invalid signature error when invalid nonce', async () => {
@@ -208,9 +233,12 @@ describe('ENSCustody (metatx)', function () {
[registrantAddress, tokenId],
minter,
tokenId,
- BigNumber.from(0),
+ BigInt(42),
+ );
+ await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWithCustomError(
+ custody,
+ 'InvalidSignature',
);
- await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWith('InvalidSignature');
});
it('should revert with unauthorised error when invalid signer', async () => {
@@ -228,7 +256,10 @@ describe('ENSCustody (metatx)', function () {
tokenId,
await custody.nonceOf(tokenId),
);
- await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWith('Unauthorised');
+ await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWithCustomError(
+ custody,
+ 'Unauthorised',
+ );
});
it('should revert with invalid token error when forwarded token incorrect', async () => {
@@ -246,6 +277,9 @@ describe('ENSCustody (metatx)', function () {
1,
await custody.nonceOf(1),
);
- await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWith('InvalidForwardedToken');
+ await expect(custody.connect(spender).execute(req, signature)).to.be.revertedWithCustomError(
+ custody,
+ 'InvalidForwardedToken',
+ );
});
});
diff --git a/test/custody/ENSCustody.proxy.test.ts b/test/custody/ENSCustody.proxy.test.ts
index 081af54d..7377eda8 100644
--- a/test/custody/ENSCustody.proxy.test.ts
+++ b/test/custody/ENSCustody.proxy.test.ts
@@ -1,38 +1,52 @@
import { ethers, upgrades } from 'hardhat';
import { expect } from 'chai';
-import { namehash } from 'ethers/lib/utils';
import { sha3 } from 'web3-utils';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { namehash } from 'ethers';
import {
+ BaseRegistrarImplementation,
BaseRegistrarImplementation__factory,
DummyOracle__factory,
+ ENSCustody,
ENSCustody__factory,
+ ENSRegistry,
ENSRegistry__factory,
+ ETHRegistrarController,
ETHRegistrarController__factory,
+ NameWrapper,
NameWrapper__factory,
+ ReverseRegistrar,
ReverseRegistrar__factory,
+ StablePriceOracle,
StablePriceOracle__factory,
} from '../../types';
import { REGISTRATION_TIME, ZERO_ADDRESS, ZERO_WORD } from '../helpers/constants';
-import { increaseTimeBy } from '../helpers/utils';
+import { getLatestBlockTimestamp, increaseTimeBy } from '../helpers/utils';
+import { deployProxy } from '../../src/helpers';
describe('ENSCustody (proxy)', function () {
- let provider;
- let ens;
- let baseRegistrar;
- let controller;
- let priceOracle;
- let reverseRegistrar;
- let nameWrapper;
- let custodyFactory;
- let custody;
+ let ens: ENSRegistry;
+ let baseRegistrar: BaseRegistrarImplementation;
+ let controller: ETHRegistrarController;
+ let priceOracle: StablePriceOracle;
+ let reverseRegistrar: ReverseRegistrar;
+ let nameWrapper: NameWrapper;
+ let custodyFactory: ENSCustody__factory;
+ let custody: ENSCustody;
const secret = '0x0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF';
- let signers, owner, registrant, minter;
- let ownerAddress, registrantAddress;
- let result;
-
- async function registerAndParkName (name, minter, resolver = ZERO_ADDRESS, selfCustody = false, txOptions = {}) {
+ let signers: SignerWithAddress[], owner: SignerWithAddress, registrant: SignerWithAddress, minter: SignerWithAddress;
+ let ownerAddress: string, registrantAddress: string;
+ let result: unknown;
+
+ async function registerAndParkName (
+ name: string,
+ minter: SignerWithAddress,
+ resolver = ZERO_ADDRESS,
+ selfCustody = false,
+ txOptions = {},
+ ) {
// make commitment
const commitment = await custody.makeCommitment(
name,
@@ -46,10 +60,10 @@ describe('ENSCustody (proxy)', function () {
selfCustody,
);
const commitTx = await custody.commit(commitment);
- const { timestamp } = await provider.getBlock(commitTx.blockNumber);
+ const timestamp = await getLatestBlockTimestamp();
expect(await controller.commitments(commitment)).to.equal(timestamp);
- await increaseTimeBy((await controller.minCommitmentAge()).toNumber());
+ await increaseTimeBy(await controller.minCommitmentAge());
// register
const registerTx = await custody
@@ -58,85 +72,93 @@ describe('ENSCustody (proxy)', function () {
return [commitTx, registerTx];
}
- async function topupCustody (name) {
+ async function topupCustody (name: string) {
const [base, premium] = await controller.rentPrice(name, REGISTRATION_TIME);
- const price = base.add(premium);
- await owner.sendTransaction({ to: custody.address, value: price });
+ const price = base + premium;
+ await owner.sendTransaction({ to: await custody.getAddress(), value: price });
return price;
}
- async function assertOwnership (name, owner, selfCustody = false) {
- const tokenId = sha3(name);
+ async function assertOwnership (name: string, owner: string, selfCustody = false) {
+ const tokenId = sha3(name)!;
const node = namehash(`${name}.eth`);
expect(await controller.available(name)).to.equal(false);
- expect(await ens.owner(node)).to.equal(nameWrapper.address);
- expect(await baseRegistrar.ownerOf(tokenId)).to.equal(nameWrapper.address);
+ expect(await ens.owner(node)).to.equal(await nameWrapper.getAddress());
+ expect(await baseRegistrar.ownerOf(tokenId)).to.equal(await nameWrapper.getAddress());
if (selfCustody) {
expect(await nameWrapper.ownerOf(node)).to.equal(owner);
} else {
- expect(await nameWrapper.ownerOf(node)).to.equal(custody.address);
+ expect(await nameWrapper.ownerOf(node)).to.equal(await custody.getAddress());
expect(await custody.ownerOf(node)).to.equal(owner);
}
}
before(async () => {
- provider = ethers.provider;
signers = await ethers.getSigners();
[owner, registrant, minter] = signers;
ownerAddress = await owner.getAddress();
registrantAddress = await registrant.getAddress();
ens = await new ENSRegistry__factory(owner).deploy();
- baseRegistrar = await new BaseRegistrarImplementation__factory(owner).deploy(ens.address, namehash('eth'));
- reverseRegistrar = await new ReverseRegistrar__factory(owner).deploy(ens.address);
+ baseRegistrar = await new BaseRegistrarImplementation__factory(owner).deploy(
+ await ens.getAddress(),
+ namehash('eth'),
+ );
+ reverseRegistrar = await new ReverseRegistrar__factory(owner).deploy(await ens.getAddress());
- await ens.setSubnodeOwner(ZERO_WORD, sha3('reverse'), ownerAddress);
- await ens.setSubnodeOwner(namehash('reverse'), sha3('addr'), reverseRegistrar.address);
+ await ens.setSubnodeOwner(ZERO_WORD, sha3('reverse')!, ownerAddress);
+ await ens.setSubnodeOwner(namehash('reverse'), sha3('addr')!, await reverseRegistrar.getAddress());
- nameWrapper = await new NameWrapper__factory(owner).deploy(ens.address, baseRegistrar.address, ownerAddress);
+ nameWrapper = await new NameWrapper__factory(owner).deploy(
+ await ens.getAddress(),
+ await baseRegistrar.getAddress(),
+ ownerAddress,
+ );
- await ens.setSubnodeOwner(ZERO_WORD, sha3('eth'), baseRegistrar.address);
+ await ens.setSubnodeOwner(ZERO_WORD, sha3('eth')!, await baseRegistrar.getAddress());
const dummyOracle = await new DummyOracle__factory(owner).deploy('100000000');
- priceOracle = await new StablePriceOracle__factory(owner).deploy(dummyOracle.address, [0, 0, 4, 2, 1]);
+ priceOracle = await new StablePriceOracle__factory(owner).deploy(await dummyOracle.getAddress(), [0, 0, 4, 2, 1]);
controller = await new ETHRegistrarController__factory(owner).deploy(
- baseRegistrar.address,
- priceOracle.address,
+ await baseRegistrar.getAddress(),
+ await priceOracle.getAddress(),
600,
86400,
- reverseRegistrar.address,
- nameWrapper.address,
- ens.address,
+ await reverseRegistrar.getAddress(),
+ await nameWrapper.getAddress(),
+ await ens.getAddress(),
);
- await nameWrapper.setController(controller.address, true);
- await baseRegistrar.addController(nameWrapper.address);
- await reverseRegistrar.setController(controller.address, true);
+ await nameWrapper.setController(await controller.getAddress(), true);
+ await baseRegistrar.addController(await nameWrapper.getAddress());
+ await reverseRegistrar.setController(await controller.getAddress(), true);
custodyFactory = new ENSCustody__factory(owner);
- custody = await upgrades.deployProxy(custodyFactory, [], { initializer: false });
- await custody.initialize(controller.address, nameWrapper.address, baseRegistrar.address);
+ custody = await deployProxy(custodyFactory, [], { initializer: false });
+ await custody.initialize(
+ await controller.getAddress(),
+ await nameWrapper.getAddress(),
+ await baseRegistrar.getAddress(),
+ );
await custody.addMinter(minter.address);
});
beforeEach(async () => {
- result = await provider.send('evm_snapshot', []);
+ result = await ethers.provider.send('evm_snapshot', []);
});
afterEach(async () => {
- await provider.send('evm_revert', [result]);
+ await ethers.provider.send('evm_revert', [result]);
});
it('should not allow initialize twice', async () => {
await expect(
custody.initialize(
- controller.address,
- nameWrapper.address,
- baseRegistrar.address,
+ await controller.getAddress(),
+ await nameWrapper.getAddress(),
+ await baseRegistrar.getAddress(),
),
- ).to.be.revertedWith(
- 'Initializable: contract is already initialized',
- );
+ ).to.be.revertedWith('Initializable: contract is already initialized');
});
it('should register and park name', async () => {
@@ -169,7 +191,7 @@ describe('ENSCustody (proxy)', function () {
await registerAndParkName(name, minter, ZERO_ADDRESS, false);
await assertOwnership(name, registrantAddress);
- await expect(custody.safeTransfer(registrantAddress, node)).to.be.revertedWith('Unauthorised');
+ await expect(custody.safeTransfer(registrantAddress, node)).to.be.revertedWithCustomError(custody, 'Unauthorised');
});
it('should keep state after upgrade', async () => {
@@ -180,7 +202,7 @@ describe('ENSCustody (proxy)', function () {
await registerAndParkName(name, minter, ZERO_ADDRESS, false);
await assertOwnership(name, registrantAddress);
- custody = await upgrades.upgradeProxy(custody.address, custodyFactory);
+ custody = (await upgrades.upgradeProxy(await custody.getAddress(), custodyFactory)) as unknown as ENSCustody;
await assertOwnership(name, registrantAddress);
expect(await custody.nonceOf(node)).to.be.equal(1);
diff --git a/test/custody/ENSCustody.test.ts b/test/custody/ENSCustody.test.ts
index 0c7af718..bd135515 100644
--- a/test/custody/ENSCustody.test.ts
+++ b/test/custody/ENSCustody.test.ts
@@ -1,9 +1,9 @@
-import { ethers, upgrades } from 'hardhat';
+import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { namehash } from 'ethers/lib/utils';
+import { ContractTransactionResponse, EventLog, namehash } from 'ethers';
import { sha3Raw as sha3 } from 'web3-utils';
-import { BigNumber, ContractTransaction } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { HardhatEthersProvider } from '@nomicfoundation/hardhat-ethers/internal/hardhat-ethers-provider';
import {
BaseRegistrarImplementation__factory,
DummyOracle__factory,
@@ -28,11 +28,12 @@ import {
} from '../../types';
import { BUFFERED_REGISTRATION_COST, DAY, REGISTRATION_TIME, ZERO_ADDRESS, ZERO_WORD } from '../helpers/constants';
import { makeInterfaceId } from '../helpers/makeInterfaceId';
-import { increaseTimeBy } from '../helpers/utils';
+import { getLatestBlockTimestamp, increaseTimeBy } from '../helpers/utils';
+import { deployProxy } from '../../src/helpers';
describe('ENSCustody', function () {
- let provider;
- let result;
+ let provider: HardhatEthersProvider;
+ let result: unknown;
let ensRegistry: ENSRegistry;
let resolver: PublicResolver;
@@ -65,10 +66,10 @@ describe('ENSCustody', function () {
0,
);
let tx = await controller.commit(commitment);
- const { timestamp } = await provider.getBlock(tx.blockNumber);
+ const timestamp = await getLatestBlockTimestamp();
expect(await controller.commitments(commitment)).to.equal(timestamp);
- await increaseTimeBy((await controller.minCommitmentAge()).toNumber());
+ await increaseTimeBy(await controller.minCommitmentAge());
tx = await controller.register(
name,
@@ -106,10 +107,10 @@ describe('ENSCustody', function () {
selfCustody,
);
const commitTx = await custody.connect(minter).commit(commitment);
- const { timestamp } = await provider.getBlock(commitTx.blockNumber);
+ const timestamp = await getLatestBlockTimestamp();
expect(await controller.commitments(commitment)).to.equal(timestamp);
- await increaseTimeBy((await controller.minCommitmentAge()).toNumber());
+ await increaseTimeBy(await controller.minCommitmentAge());
// register
const registerTx = await custody
@@ -146,19 +147,21 @@ describe('ENSCustody', function () {
async function topupCustody (name: string, registrationTime = REGISTRATION_TIME) {
const [base, premium] = await controller.rentPrice(name, registrationTime);
- const price = base.add(premium);
- await owner.sendTransaction({ to: custody.address, value: price });
+ const price = base + premium;
+ await owner.sendTransaction({ to: await custody.getAddress(), value: price });
return price;
}
- async function assertGasSpent (address: string, prevBalance: BigNumber, txs: ContractTransaction[]) {
- let spent = BigNumber.from(0);
+ async function assertGasSpent (address: string, prevBalance: bigint, txs: ContractTransactionResponse[]) {
+ let spent = BigInt(0);
+
for (const tx of txs) {
const receipt = await provider.getTransactionReceipt(tx.hash);
- const gasFee = receipt.gasUsed.mul(tx.gasPrice);
- spent = spent.add(gasFee);
+ const gasFee = receipt!.gasUsed * tx.gasPrice;
+ spent = spent + gasFee;
}
- expect(await provider.getBalance(address)).to.equal(prevBalance.sub(spent));
+
+ expect(await provider.getBalance(address)).to.equal(prevBalance - spent);
}
async function assertOwnership (name: string, owner: string, selfCustody = false) {
@@ -168,15 +171,15 @@ describe('ENSCustody', function () {
// if 2LD
if (name.split('.').length === 1) {
expect(await controller.available(name)).to.equal(false);
- expect(await baseRegistrar.ownerOf(tokenId)).to.equal(nameWrapper.address);
+ expect(await baseRegistrar.ownerOf(tokenId)).to.equal(await nameWrapper.getAddress());
}
- expect(await ensRegistry.owner(node)).to.equal(nameWrapper.address);
+ expect(await ensRegistry.owner(node)).to.equal(await nameWrapper.getAddress());
if (selfCustody) {
expect(await nameWrapper.ownerOf(node)).to.equal(owner);
} else {
- expect(await nameWrapper.ownerOf(node)).to.equal(custody.address);
+ expect(await nameWrapper.ownerOf(node)).to.equal(await custody.getAddress());
expect(await custody.ownerOf(node)).to.equal(owner);
}
}
@@ -197,48 +200,51 @@ describe('ENSCustody', function () {
newOwnerAddress = await newOwner.getAddress();
ensRegistry = await new ENSRegistry__factory(owner).deploy();
- baseRegistrar = await new BaseRegistrarImplementation__factory(owner).deploy(ensRegistry.address, namehash('eth'));
- reverseRegistrar = await new ReverseRegistrar__factory(owner).deploy(ensRegistry.address);
+ baseRegistrar = await new BaseRegistrarImplementation__factory(owner).deploy(
+ await ensRegistry.getAddress(),
+ namehash('eth'),
+ );
+ reverseRegistrar = await new ReverseRegistrar__factory(owner).deploy(await ensRegistry.getAddress());
await ensRegistry.setSubnodeOwner(ZERO_WORD, sha3('reverse'), ownerAddress);
- await ensRegistry.setSubnodeOwner(namehash('reverse'), sha3('addr'), reverseRegistrar.address);
+ await ensRegistry.setSubnodeOwner(namehash('reverse'), sha3('addr'), await reverseRegistrar.getAddress());
nameWrapper = await new NameWrapper__factory(owner).deploy(
- ensRegistry.address,
- baseRegistrar.address,
+ await ensRegistry.getAddress(),
+ await baseRegistrar.getAddress(),
ownerAddress,
);
- await ensRegistry.setSubnodeOwner(ZERO_WORD, sha3('eth'), baseRegistrar.address);
+ await ensRegistry.setSubnodeOwner(ZERO_WORD, sha3('eth'), await baseRegistrar.getAddress());
const dummyOracle = await new DummyOracle__factory(owner).deploy('100000000');
- priceOracle = await new StablePriceOracle__factory(owner).deploy(dummyOracle.address, [0, 0, 4, 2, 1]);
+ priceOracle = await new StablePriceOracle__factory(owner).deploy(await dummyOracle.getAddress(), [0, 0, 4, 2, 1]);
controller = await new ETHRegistrarController__factory(owner).deploy(
- baseRegistrar.address,
- priceOracle.address,
+ await baseRegistrar.getAddress(),
+ await priceOracle.getAddress(),
600,
86400,
- reverseRegistrar.address,
- nameWrapper.address,
- ensRegistry.address,
+ await reverseRegistrar.getAddress(),
+ await nameWrapper.getAddress(),
+ await ensRegistry.getAddress(),
);
- await nameWrapper.setController(controller.address, true);
- await baseRegistrar.addController(nameWrapper.address);
- await reverseRegistrar.setController(controller.address, true);
+ await nameWrapper.setController(await controller.getAddress(), true);
+ await baseRegistrar.addController(await nameWrapper.getAddress());
+ await reverseRegistrar.setController(await controller.getAddress(), true);
resolver = await new PublicResolver__factory(owner).deploy(
- ensRegistry.address,
- nameWrapper.address,
- controller.address,
- reverseRegistrar.address,
+ await ensRegistry.getAddress(),
+ await nameWrapper.getAddress(),
+ await controller.getAddress(),
+ await reverseRegistrar.getAddress(),
);
- custody = (await upgrades.deployProxy(new ENSCustody__factory(owner), [
- controller.address,
- nameWrapper.address,
- baseRegistrar.address,
+ custody = (await deployProxy(new ENSCustody__factory(owner), [
+ await controller.getAddress(),
+ await nameWrapper.getAddress(),
+ await baseRegistrar.getAddress(),
])) as ENSCustody;
- await custody.addMinter(minter.address);
+ await custody.addMinter(await minter.getAddress());
erc1155 = await new ERC1155Mock__factory(owner).deploy('');
});
@@ -258,15 +264,15 @@ describe('ENSCustody', function () {
await registerName(name);
expect(await controller.available(name)).to.equal(false);
- expect(await ensRegistry.owner(node)).to.equal(nameWrapper.address);
- expect(await baseRegistrar.ownerOf(tokenId)).to.equal(nameWrapper.address);
+ expect(await ensRegistry.owner(node)).to.equal(await nameWrapper.getAddress());
+ expect(await baseRegistrar.ownerOf(tokenId)).to.equal(await nameWrapper.getAddress());
expect(await nameWrapper.ownerOf(node)).to.equal(registrantAddress);
});
it('should return correct rent price', async () => {
const name = 'ts-pa92';
const [base, premium] = await controller.rentPrice(name, REGISTRATION_TIME);
- const price = base.add(premium);
+ const price = base + premium;
expect(await custody.rentPrice(name, REGISTRATION_TIME)).to.equal(price);
});
@@ -279,13 +285,15 @@ describe('ENSCustody', function () {
await registerName(name);
await expect(
- nameWrapper.connect(registrant).safeTransferFrom(
- registrantAddress,
- custody.address,
- node,
- 1,
- new ethers.utils.AbiCoder().encode(['address'], [registrantAddress]),
- ),
+ nameWrapper
+ .connect(registrant)
+ .safeTransferFrom(
+ registrantAddress,
+ await custody.getAddress(),
+ node,
+ 1,
+ new ethers.AbiCoder().encode(['address'], [registrantAddress]),
+ ),
).to.emit(custody, 'Parked');
await assertOwnership(name, registrantAddress, false);
@@ -297,13 +305,15 @@ describe('ENSCustody', function () {
await registerName(name);
- await nameWrapper.connect(registrant).safeTransferFrom(
- registrantAddress,
- custody.address,
- node,
- 1,
- new ethers.utils.AbiCoder().encode(['address'], [newOwnerAddress]),
- );
+ await nameWrapper
+ .connect(registrant)
+ .safeTransferFrom(
+ registrantAddress,
+ await custody.getAddress(),
+ node,
+ 1,
+ new ethers.AbiCoder().encode(['address'], [newOwnerAddress]),
+ );
await assertOwnership(name, newOwnerAddress, false);
});
@@ -315,13 +325,7 @@ describe('ENSCustody', function () {
await registerName(name);
await expect(
- nameWrapper.connect(registrant).safeTransferFrom(
- registrantAddress,
- custody.address,
- node,
- 1,
- '0x',
- ),
+ nameWrapper.connect(registrant).safeTransferFrom(registrantAddress, await custody.getAddress(), node, 1, '0x'),
).to.be.reverted;
});
@@ -332,13 +336,15 @@ describe('ENSCustody', function () {
await registerName(name);
await expect(
- nameWrapper.connect(registrant).safeTransferFrom(
- registrantAddress,
- custody.address,
- node,
- 1,
- new ethers.utils.AbiCoder().encode(['address'], [ZERO_ADDRESS]),
- ),
+ nameWrapper
+ .connect(registrant)
+ .safeTransferFrom(
+ registrantAddress,
+ await custody.getAddress(),
+ node,
+ 1,
+ new ethers.AbiCoder().encode(['address'], [ZERO_ADDRESS]),
+ ),
).to.be.revertedWith('ERC1155: transfer to non ERC1155Receiver implementer');
});
@@ -350,10 +356,10 @@ describe('ENSCustody', function () {
await expect(
erc1155.safeTransferFrom(
owner.address,
- custody.address,
+ await custody.getAddress(),
erc1155TokenId1,
1,
- new ethers.utils.AbiCoder().encode(['address'], [ownerAddress]),
+ new ethers.AbiCoder().encode(['address'], [ownerAddress]),
),
).to.be.revertedWith('ERC1155: transfer to non ERC1155Receiver implementer');
});
@@ -372,10 +378,10 @@ describe('ENSCustody', function () {
.connect(registrant)
.safeBatchTransferFrom(
registrantAddress,
- custody.address,
+ await custody.getAddress(),
[node1, node2],
[1, 1],
- new ethers.utils.AbiCoder().encode(['address'], [registrantAddress]),
+ new ethers.AbiCoder().encode(['address'], [registrantAddress]),
),
).to.emit(custody, 'Parked');
@@ -397,10 +403,10 @@ describe('ENSCustody', function () {
.connect(registrant)
.safeBatchTransferFrom(
registrantAddress,
- custody.address,
+ await custody.getAddress(),
[node1, node2],
[1, 1],
- new ethers.utils.AbiCoder().encode(['address'], [ZERO_ADDRESS]),
+ new ethers.AbiCoder().encode(['address'], [ZERO_ADDRESS]),
),
).to.be.revertedWith('ERC1155: transfer to non ERC1155Receiver implementer');
});
@@ -415,13 +421,10 @@ describe('ENSCustody', function () {
await expect(
erc1155.safeBatchTransferFrom(
owner.address,
- custody.address,
- [
- erc1155TokenId1,
- erc1155TokenId2,
- ],
+ await custody.getAddress(),
+ [erc1155TokenId1, erc1155TokenId2],
[1, 1],
- new ethers.utils.AbiCoder().encode(['address'], [registrantAddress]),
+ new ethers.AbiCoder().encode(['address'], [registrantAddress]),
),
).to.be.revertedWith('ERC1155: transfer to non ERC1155Receiver implementer');
});
@@ -433,21 +436,23 @@ describe('ENSCustody', function () {
const node = namehash(`${name}.eth`);
const subNode = namehash(`${subName}.eth`);
- const { timestamp } = await provider.getBlock('latest');
+ const timestamp = await getLatestBlockTimestamp();
await registerName(name);
- const expiry = timestamp + (await controller.minCommitmentAge()).toNumber();
+ const expiry = BigInt(timestamp) + (await controller.minCommitmentAge());
await nameWrapper.connect(registrant).setSubnodeOwner(node, 'sub', registrantAddress, 0, expiry);
await assertOwnership(subName, registrantAddress, true);
await expect(
- nameWrapper.connect(registrant).safeTransferFrom(
- registrantAddress,
- custody.address,
- subNode,
- 1,
- new ethers.utils.AbiCoder().encode(['address'], [registrantAddress]),
- ),
+ nameWrapper
+ .connect(registrant)
+ .safeTransferFrom(
+ registrantAddress,
+ await custody.getAddress(),
+ subNode,
+ 1,
+ new ethers.AbiCoder().encode(['address'], [registrantAddress]),
+ ),
).to.emit(custody, 'Parked');
await assertOwnership(subName, registrantAddress, false);
@@ -460,21 +465,23 @@ describe('ENSCustody', function () {
const node = namehash(`${name}.eth`);
const subNode = namehash(`${subName}.eth`);
- const { timestamp } = await provider.getBlock('latest');
+ const timestamp = await getLatestBlockTimestamp();
await registerName(name);
- const expiry = timestamp + (await controller.minCommitmentAge()).toNumber();
+ const expiry = BigInt(timestamp) + (await controller.minCommitmentAge());
await nameWrapper.connect(registrant).setSubnodeOwner(node, 'sub', registrantAddress, 0, expiry);
await assertOwnership(subName, registrantAddress, true);
await expect(
- nameWrapper.connect(registrant).safeBatchTransferFrom(
- registrantAddress,
- custody.address,
- [subNode],
- [1],
- new ethers.utils.AbiCoder().encode(['address'], [newOwnerAddress]),
- ),
+ nameWrapper
+ .connect(registrant)
+ .safeBatchTransferFrom(
+ registrantAddress,
+ await custody.getAddress(),
+ [subNode],
+ [1],
+ new ethers.AbiCoder().encode(['address'], [newOwnerAddress]),
+ ),
).to.emit(custody, 'Parked');
await assertOwnership(subName, newOwnerAddress, false);
@@ -489,18 +496,15 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
const wrapTx = await baseRegistrar
.connect(registrant)
['safeTransferFrom(address,address,uint256,bytes)'](
registrant.address,
- custody.address,
+ await custody.getAddress(),
labelHash,
- abiCoder.encode(
- ['address', 'address', 'string'],
- [registrantAddress, resolver.address, name],
- ),
+ abiCoder.encode(['address', 'address', 'string'], [registrantAddress, await resolver.getAddress(), name]),
);
await wrapTx.wait();
@@ -515,18 +519,15 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
const wrapTx = await baseRegistrar
.connect(registrant)
['safeTransferFrom(address,address,uint256,bytes)'](
registrant.address,
- custody.address,
+ await custody.getAddress(),
labelHash,
- abiCoder.encode(
- ['address', 'address', 'string'],
- [newOwnerAddress, resolver.address, name],
- ),
+ abiCoder.encode(['address', 'address', 'string'], [newOwnerAddress, await resolver.getAddress(), name]),
);
await wrapTx.wait();
@@ -541,19 +542,16 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
await expect(
baseRegistrar
.connect(registrant)
['safeTransferFrom(address,address,uint256,bytes)'](
registrant.address,
- custody.address,
+ await custody.getAddress(),
labelHash,
- abiCoder.encode(
- ['address', 'address', 'string'],
- [registrantAddress, resolver.address, name],
- ),
+ abiCoder.encode(['address', 'address', 'string'], [registrantAddress, await resolver.getAddress(), name]),
),
).to.emit(custody, 'Parked');
@@ -571,20 +569,22 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
await expect(
baseRegistrar
.connect(registrant)
['safeTransferFrom(address,address,uint256,bytes)'](
registrant.address,
- custody.address,
+ await custody.getAddress(),
labelHash,
abiCoder.encode(
['address', 'address', 'string'],
- [newOwnerAddress, resolver.address, invalidName],
+ [newOwnerAddress, await resolver.getAddress(), invalidName],
),
),
- ).to.be.revertedWith(`LabelMismatch("${invalidLabelHash}", "${labelHash}")`);
+ )
+ .to.be.revertedWithCustomError(nameWrapper, 'LabelMismatch')
+ .withArgs(invalidLabelHash, labelHash);
});
it('should reject if no data is passed', async () => {
@@ -597,7 +597,7 @@ describe('ENSCustody', function () {
await expect(
baseRegistrar
.connect(registrant)
- ['safeTransferFrom(address,address,uint256)'](registrant.address, custody.address, labelHash),
+ ['safeTransferFrom(address,address,uint256)'](registrant.address, await custody.getAddress(), labelHash),
).to.be.reverted;
});
@@ -608,19 +608,17 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
- await expect(baseRegistrar
- .connect(registrant)
- ['safeTransferFrom(address,address,uint256,bytes)'](
- registrant.address,
- custody.address,
- labelHash,
- abiCoder.encode(
- ['string', 'address'],
- [name, resolver.address],
+ await expect(
+ baseRegistrar
+ .connect(registrant)
+ ['safeTransferFrom(address,address,uint256,bytes)'](
+ registrant.address,
+ await custody.getAddress(),
+ labelHash,
+ abiCoder.encode(['string', 'address'], [name, await resolver.getAddress()]),
),
- ),
).to.be.reverted;
});
@@ -631,19 +629,17 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
- await expect(baseRegistrar
- .connect(registrant)
- ['safeTransferFrom(address,address,uint256,bytes)'](
- registrant.address,
- custody.address,
- labelHash,
- abiCoder.encode(
- ['string', 'address'],
- [name, resolver.address],
+ await expect(
+ baseRegistrar
+ .connect(registrant)
+ ['safeTransferFrom(address,address,uint256,bytes)'](
+ registrant.address,
+ await custody.getAddress(),
+ labelHash,
+ abiCoder.encode(['string', 'address'], [name, await resolver.getAddress()]),
),
- ),
).to.be.reverted;
});
@@ -654,26 +650,27 @@ describe('ENSCustody', function () {
await registerAndUnwrapName(name);
await assertWrapped(name, false);
- const abiCoder = new ethers.utils.AbiCoder();
+ const abiCoder = new ethers.AbiCoder();
- await expect(baseRegistrar
- .connect(registrant)
- ['safeTransferFrom(address,address,uint256,bytes)'](
- registrant.address,
- custody.address,
- labelHash,
- abiCoder.encode(
- ['address', 'address', 'string'],
- [ZERO_ADDRESS, resolver.address, name],
+ await expect(
+ baseRegistrar
+ .connect(registrant)
+ ['safeTransferFrom(address,address,uint256,bytes)'](
+ registrant.address,
+ await custody.getAddress(),
+ labelHash,
+ abiCoder.encode(['address', 'address', 'string'], [ZERO_ADDRESS, await resolver.getAddress(), name]),
),
- ),
- ).to.be.revertedWith('InvalidOwner');
+ ).to.be.revertedWithCustomError(custody, 'InvalidOwner');
});
it('should reject transferring if called not from regisrar', async () => {
const erc721Mock = await new ERC721Mock__factory(owner).deploy();
- await expect(erc721Mock.mint(custody.address, 1)).to.be.revertedWith('OperationProhibited()');
+ await expect(erc721Mock.mint(await custody.getAddress(), 1)).to.be.revertedWithCustomError(
+ custody,
+ 'OperationProhibited',
+ );
});
it('unwrapped subdomains should not be a ERC721 token', async () => {
@@ -688,7 +685,11 @@ describe('ENSCustody', function () {
await expect(
baseRegistrar
.connect(registrant)
- ['safeTransferFrom(address,address,uint256)'](registrant.address, custody.address, sha3(`sub.${name}`)),
+ ['safeTransferFrom(address,address,uint256)'](
+ registrant.address,
+ await custody.getAddress(),
+ sha3(`sub.${name}`),
+ ),
).to.be.reverted;
});
});
@@ -697,13 +698,13 @@ describe('ENSCustody', function () {
it('should register and park name', async () => {
const name = 'ts-ld91';
const price = await topupCustody(name);
- const custodyBalance = await provider.getBalance(custody.address);
+ const custodyBalance = await provider.getBalance(await custody.getAddress());
const minterBalance = await provider.getBalance(minter.address);
const txs = await registerAndParkName(name, minter, ZERO_ADDRESS, false);
await assertOwnership(name, registrantAddress);
- expect(await provider.getBalance(custody.address)).to.equal(custodyBalance.sub(price));
+ expect(await provider.getBalance(await custody.getAddress())).to.equal(custodyBalance - price);
await assertGasSpent(minter.address, minterBalance, txs);
});
@@ -716,13 +717,17 @@ describe('ENSCustody', function () {
const receipt = await registerTx.wait();
- expect(receipt.events?.filter(({ event }) => event === 'Parked').length).to.be.equal(1);
+ const hasParkedEvents = !!receipt?.logs.filter((log) =>
+ log instanceof EventLog ? log.eventName === 'Parked' : false,
+ ).length;
+ expect(hasParkedEvents).to.be.true;
});
it('should revert when custody has not enough balance', async () => {
const name = 'ts-tw75';
- await expect(registerAndParkName(name, minter, ZERO_ADDRESS, false)).to.be.revertedWith(
+ await expect(registerAndParkName(name, minter, ZERO_ADDRESS, false)).to.be.revertedWithCustomError(
+ custody,
'CustodyNotEnoughBalance',
);
});
@@ -731,11 +736,11 @@ describe('ENSCustody', function () {
const name = 'ts-tw14';
const price = await topupCustody(name);
- const balance = await provider.getBalance(custody.address);
- await registerAndParkName(name, minter, resolver.address, false);
+ const balance = await provider.getBalance(await custody.getAddress());
+ await registerAndParkName(name, minter, await resolver.getAddress(), false);
await assertOwnership(name, registrantAddress);
- expect(await provider.getBalance(custody.address)).to.equal(balance.sub(price));
+ expect(await provider.getBalance(await custody.getAddress())).to.equal(balance - price);
});
it('should register and park name with resolver and initial records', async () => {
@@ -744,7 +749,7 @@ describe('ENSCustody', function () {
const callData = [resolver.interface.encodeFunctionData('setAddr(bytes32,address)', [node, registrantAddress])];
await topupCustody(name);
- await registerAndParkName(name, minter, resolver.address, false, callData);
+ await registerAndParkName(name, minter, await resolver.getAddress(), false, callData);
await assertOwnership(name, registrantAddress);
expect(await resolver['addr(bytes32)'](node)).to.equal(registrantAddress);
@@ -771,7 +776,10 @@ describe('ENSCustody', function () {
await registerAndParkName(name, minter, ZERO_ADDRESS, false);
await assertOwnership(name, registrantAddress);
- await expect(custody.safeTransfer(registrantAddress, node)).to.be.revertedWith('Unauthorised');
+ await expect(custody.safeTransfer(registrantAddress, node)).to.be.revertedWithCustomError(
+ custody,
+ 'Unauthorised',
+ );
});
it('should revert registration by non-minter', async () => {
@@ -790,13 +798,13 @@ describe('ENSCustody', function () {
await topupCustody(name);
await registerAndParkName(name, minter, ZERO_ADDRESS, false);
const price = await topupCustody(name, REGISTRATION_TIME);
- const custodyBalance = await provider.getBalance(custody.address);
+ const custodyBalance = await provider.getBalance(await custody.getAddress());
const minterBalance = await provider.getBalance(minter.address);
const tx = await custody.connect(minter).renew(name, REGISTRATION_TIME);
await assertOwnership(name, registrantAddress);
- expect(await provider.getBalance(custody.address)).to.equal(custodyBalance.sub(price));
+ expect(await provider.getBalance(await custody.getAddress())).to.equal(custodyBalance - price);
await assertGasSpent(minter.address, minterBalance, [tx]);
});
@@ -806,11 +814,11 @@ describe('ENSCustody', function () {
await registerAndParkName(name, minter, ZERO_ADDRESS, true);
const price = await topupCustody(name, REGISTRATION_TIME);
- const custodyBalance = await provider.getBalance(custody.address);
+ const custodyBalance = await provider.getBalance(await custody.getAddress());
const minterBalance = await provider.getBalance(minter.address);
const tx = await custody.connect(minter).renew(name, REGISTRATION_TIME);
await assertOwnership(name, registrantAddress, true);
- expect(await provider.getBalance(custody.address)).to.equal(custodyBalance.sub(price));
+ expect(await provider.getBalance(await custody.getAddress())).to.equal(custodyBalance - price);
await assertGasSpent(minter.address, minterBalance, [tx]);
});
@@ -835,7 +843,8 @@ describe('ENSCustody', function () {
await topupCustody(name);
await registerAndParkName(name, minter, ZERO_ADDRESS, false);
- await expect(custody.connect(minter).renew(name, REGISTRATION_TIME)).to.be.revertedWith(
+ await expect(custody.connect(minter).renew(name, REGISTRATION_TIME)).to.be.revertedWithCustomError(
+ custody,
'CustodyNotEnoughBalance',
);
});
@@ -857,13 +866,13 @@ describe('ENSCustody', function () {
await increaseTimeBy(REGISTRATION_TIME + gracePeriod + 1);
await topupCustody(name);
- await expect(custody.connect(minter).renew(name, REGISTRATION_TIME)).to.be.revertedWith('');
+ await expect(custody.connect(minter).renew(name, REGISTRATION_TIME)).to.be.revertedWithoutReason();
});
it('should revert renewing if domain does not exist', async () => {
const name = 'dm-not-exist-1';
await topupCustody(name, REGISTRATION_TIME);
- await expect(custody.connect(minter).renew(name, REGISTRATION_TIME)).to.be.revertedWith('');
+ await expect(custody.connect(minter).renew(name, REGISTRATION_TIME)).to.be.revertedWithoutReason();
expect(await controller.available(name)).to.equal(true);
});
@@ -876,11 +885,11 @@ describe('ENSCustody', function () {
const tokenId = sha3(name);
await nameWrapper.connect(registrant).unwrapETH2LD(tokenId, registrantAddress, registrantAddress);
- const custodyBalance = await provider.getBalance(custody.address);
+ const custodyBalance = await provider.getBalance(await custody.getAddress());
const minterBalance = await provider.getBalance(minter.address);
const tx = await custody.connect(minter).renew(name, REGISTRATION_TIME);
expect(await ensRegistry.owner(namehash(`${name}.eth`))).to.equal(registrantAddress);
- expect(await provider.getBalance(custody.address)).to.equal(custodyBalance.sub(price));
+ expect(await provider.getBalance(await custody.getAddress())).to.equal(custodyBalance - price);
await assertGasSpent(minter.address, minterBalance, [tx]);
});
});
@@ -900,7 +909,7 @@ describe('ENSCustody', function () {
it('reverts with InvalidToken error if token not known', async () => {
const node = namehash('not-existent.eth');
- await expect(custody.ownerOf(node)).to.be.revertedWith('InvalidToken');
+ await expect(custody.ownerOf(node)).to.be.revertedWithCustomError(custody, 'InvalidToken');
});
it('reverts with UnknownToken if subdomain was externally claimed from custody', async () => {
@@ -910,21 +919,23 @@ describe('ENSCustody', function () {
const node = namehash(`${name}.eth`);
const subNode = namehash(`${subName}.eth`);
- const { timestamp } = await provider.getBlock('latest');
+ const timestamp = await getLatestBlockTimestamp();
await registerName(name);
- const expiry = timestamp + (await controller.minCommitmentAge()).toNumber();
+ const expiry = BigInt(timestamp) + (await controller.minCommitmentAge());
await nameWrapper.connect(registrant).setSubnodeOwner(node, 'sub', registrantAddress, 0, expiry);
await assertOwnership(subName, registrantAddress, true);
await expect(
- nameWrapper.connect(registrant).safeTransferFrom(
- registrantAddress,
- custody.address,
- subNode,
- 1,
- new ethers.utils.AbiCoder().encode(['address'], [registrantAddress]),
- ),
+ nameWrapper
+ .connect(registrant)
+ .safeTransferFrom(
+ registrantAddress,
+ await custody.getAddress(),
+ subNode,
+ 1,
+ new ethers.AbiCoder().encode(['address'], [registrantAddress]),
+ ),
).to.emit(custody, 'Parked');
await assertOwnership(subName, registrantAddress, false);
@@ -932,13 +943,13 @@ describe('ENSCustody', function () {
expect(await nameWrapper.ownerOf(subNode)).to.equal(registrantAddress);
- await expect(custody.ownerOf(subNode)).to.be.revertedWith('UnknownToken');
+ await expect(custody.ownerOf(subNode)).to.be.revertedWithCustomError(custody, 'UnknownToken');
});
});
describe('setBaseRegistrar', async () => {
it('sets the registrar only if owner is calling', async () => {
- await custody.connect(owner).setBaseRegistrar(baseRegistrar.address);
+ await custody.connect(owner).setBaseRegistrar(await baseRegistrar.getAddress());
await expect(custody.connect(registrant).setBaseRegistrar(ZERO_ADDRESS)).to.be.revertedWith(
'Ownable: caller is not the owner',
@@ -978,10 +989,7 @@ describe('ENSCustody', function () {
// skip interfaces for which we don't have a function list
if (INTERFACES[k] === undefined) continue;
for (const fnName of INTERFACES[k]) {
- expect(Object.keys(custody.interface.functions).filter((fn) => fn === fnName).length).to.equal(
- 1,
- `did not find ${fnName}`,
- );
+ expect(custody.interface.getFunction(fnName)).to.not.be.null;
}
}
});
diff --git a/test/custody/ZilliqaRecover.test.ts b/test/custody/ZilliqaRecover.test.ts
index 6f4a8364..6d79732c 100644
--- a/test/custody/ZilliqaRecover.test.ts
+++ b/test/custody/ZilliqaRecover.test.ts
@@ -1,24 +1,23 @@
import { readFileSync } from 'fs';
import { expect } from 'chai';
import { decryptPrivateKey, getAddressFromPublicKey, compressPublicKey, KeystoreV3 } from '@zilliqa-js/crypto';
-import { namehash } from 'ethers/lib/utils';
-import { ethers, upgrades } from 'hardhat';
-
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumber, Wallet } from 'ethers';
+import { namehash, Wallet } from 'ethers';
+import { ethers } from 'hardhat';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { custody, UNSRegistry__factory, MintingManager__factory } from '../../types/factories/contracts';
import { MintingManager, UNSRegistry, ZilliqaRecover } from '../../types';
import { ZERO_ADDRESS } from '../helpers/constants';
import { buildExecuteFunc } from '../helpers/metatx';
+import { deployProxy } from '../../src/helpers';
const ZilKey: KeystoreV3 = JSON.parse(
readFileSync(`${__dirname}/zil18k3cvzg379g02et9fg2ga395r027jx5jggzvh5.json`).toString(),
);
-const onChainPubKey = (wallet: Wallet | string): [string, string] => {
+const onChainPubKey = (wallet: string): [string, string] => {
// ETH public key format has a 0x04 constant prefix
// We don't need to that when operating public key in a contract
- return (typeof wallet === 'string' ? wallet : wallet.publicKey)
+ return wallet
.replace(/^0x04/, '')
.split(/(.{64})/)
.filter((s) => s.length)
@@ -47,29 +46,30 @@ describe('ZilliqaRecover', () => {
privateKey = await decryptPrivateKey('UNSTesting32;', ZilKey);
[coinbase, newOwner] = signers;
zilWallet = new Wallet(privateKey, coinbase.provider);
- publicKey = onChainPubKey(zilWallet.publicKey);
- zilAddress = getAddressFromPublicKey(compressPublicKey(zilWallet.publicKey.replace('0x', ''))).toLowerCase();
- await (
- await coinbase.sendTransaction({ to: zilWallet.address, value: BigNumber.from('100000000000000000000') })
- ).wait();
- // zilliqaRecover = await new custody.ZilliqaRecover__factory(coinbase).deploy();
+ publicKey = onChainPubKey(zilWallet.signingKey.publicKey);
+ zilAddress = getAddressFromPublicKey(
+ compressPublicKey(zilWallet.signingKey.publicKey.replace('0x', '')),
+ ).toLowerCase();
+
+ await (await coinbase.sendTransaction({ to: zilWallet.address, value: BigInt('100000000000000000000') })).wait();
+
unsRegistry = await new UNSRegistry__factory(coinbase).deploy();
mintingManager = await new MintingManager__factory(coinbase).deploy();
- zilliqaRecover = (await upgrades.deployProxy(new custody.ZilliqaRecover__factory(coinbase), [
- unsRegistry.address,
- mintingManager.address,
- ])) as ZilliqaRecover;
- // await zilliqaRecover.initialize(unsRegistry.address, mintingManager.address);
- await unsRegistry.initialize(mintingManager.address, ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
+ zilliqaRecover = await deployProxy(new custody.ZilliqaRecover__factory(coinbase), [
+ await unsRegistry.getAddress(),
+ await mintingManager.getAddress(),
+ ]);
+
+ await unsRegistry.initialize(await mintingManager.getAddress(), ZERO_ADDRESS, ZERO_ADDRESS, ZERO_ADDRESS);
await mintingManager.initialize(
- unsRegistry.address,
+ await unsRegistry.getAddress(),
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
ZERO_ADDRESS,
);
- await mintingManager.addMinters([zilliqaRecover.address, coinbase.address]);
+ await mintingManager.addMinters([await zilliqaRecover.getAddress(), coinbase.address]);
});
describe('ethAddress', async () => {
@@ -100,44 +100,56 @@ describe('ZilliqaRecover', () => {
it('requires minting permission', async () => {
const { label } = getRandomDomain();
- await expect(zilliqaRecover.connect(zilWallet).mint(label, zilAddress)).to.be.revertedWith('SenderNotMinter');
+
+ await expect(zilliqaRecover.connect(zilWallet).mint(label, zilAddress)).to.be.revertedWithCustomError(
+ zilliqaRecover,
+ 'SenderNotMinter',
+ );
});
it('requires matching public key without prefix', async () => {
const { tokenId, label } = getRandomDomain();
await zilliqaRecover.mint(label, zilAddress);
+
await expect(
zilliqaRecover
.connect(zilWallet)
- .claim(tokenId, ...onChainPubKey(Wallet.createRandom().publicKey), newOwner.address),
- ).to.be.revertedWith('PublicKeyUnmatchSenderAddress');
+ .claim(tokenId, ...onChainPubKey(Wallet.createRandom().signingKey.publicKey), newOwner.address),
+ ).to.be.revertedWithCustomError(zilliqaRecover, 'PublicKeyUnmatchSenderAddress');
});
it('forbids to return a domain', async () => {
const { tokenId, label } = getRandomDomain();
await zilliqaRecover.mint(label, zilAddress);
await zilliqaRecover.connect(zilWallet).claim(tokenId, ...publicKey, newOwner.address);
+
expect(await zilliqaRecover.isOwnedBy(ZERO_ADDRESS, [tokenId])).to.eql(true);
+
await expect(
unsRegistry
.connect(newOwner)
- ['safeTransferFrom(address,address,uint256)'](newOwner.address, zilliqaRecover.address, tokenId),
- ).to.be.revertedWith('UnknownTokenReceived');
+ ['safeTransferFrom(address,address,uint256)'](newOwner.address, await zilliqaRecover.getAddress(), tokenId),
+ ).to.be.revertedWithCustomError(zilliqaRecover, 'UnknownTokenReceived');
});
it('checks token ownership', async () => {
const { tokenId, label } = getRandomDomain();
await zilliqaRecover.mint(label, zilAddress.replace(/0x..../, '0xf000'));
- await expect(zilliqaRecover.connect(zilWallet).claim(tokenId, ...publicKey, newOwner.address)).to.be.revertedWith(
- 'TokenOwnedByOtherZilAddress',
- );
+
+ await expect(
+ zilliqaRecover.connect(zilWallet).claim(tokenId, ...publicKey, newOwner.address),
+ ).to.be.revertedWithCustomError(zilliqaRecover, 'TokenOwnedByOtherZilAddress');
});
});
describe('execute', async () => {
it('supports claiming via meta transaction', async () => {
const { tokenId, label } = getRandomDomain();
- const buildExecuteParams = buildExecuteFunc(zilliqaRecover.interface, zilliqaRecover.address, zilliqaRecover);
+ const buildExecuteParams = buildExecuteFunc(
+ zilliqaRecover.interface,
+ await zilliqaRecover.getAddress(),
+ zilliqaRecover,
+ );
await zilliqaRecover.mint(label, zilAddress);
const params = await buildExecuteParams(
@@ -155,7 +167,11 @@ describe('ZilliqaRecover', () => {
const { tokenId, label } = getRandomDomain();
const invalidTokenId = tokenId.replace(/0x..../, '0x0000');
expect(invalidTokenId).to.not.eql(tokenId);
- const buildExecuteParams = buildExecuteFunc(zilliqaRecover.interface, zilliqaRecover.address, zilliqaRecover);
+ const buildExecuteParams = buildExecuteFunc(
+ zilliqaRecover.interface,
+ await zilliqaRecover.getAddress(),
+ zilliqaRecover,
+ );
await zilliqaRecover.mint(label, zilAddress);
const params = await buildExecuteParams(
@@ -165,10 +181,10 @@ describe('ZilliqaRecover', () => {
invalidTokenId,
await zilliqaRecover.nonceOf(invalidTokenId),
);
- await expect(
- // custody.connect(spender).execute(req, signature),
- zilliqaRecover.execute(params.req, params.signature),
- ).to.be.revertedWith('InvalidForwardedToken');
+ await expect(zilliqaRecover.execute(params.req, params.signature)).to.be.revertedWithCustomError(
+ zilliqaRecover,
+ 'InvalidForwardedToken',
+ );
});
});
@@ -181,8 +197,8 @@ describe('ZilliqaRecover', () => {
{ label: domain2.label, zilOwner: zilAddress },
]);
- expect(await unsRegistry.ownerOf(domain1.tokenId)).to.eql(zilliqaRecover.address);
- expect(await unsRegistry.ownerOf(domain2.tokenId)).to.eql(zilliqaRecover.address);
+ expect(await unsRegistry.ownerOf(domain1.tokenId)).to.eql(await zilliqaRecover.getAddress());
+ expect(await unsRegistry.ownerOf(domain2.tokenId)).to.eql(await zilliqaRecover.getAddress());
expect((await zilliqaRecover.znsOwnerOf(domain1.tokenId)).toLowerCase()).to.eql(zilAddress);
expect((await zilliqaRecover.znsOwnerOf(domain2.tokenId)).toLowerCase()).to.eql(zilAddress);
expect(await zilliqaRecover.isOwnedBy(zilAddress, [domain1.tokenId, domain2.tokenId])).to.eql(true);
diff --git a/test/helpers/constants.ts b/test/helpers/constants.ts
index 5da52276..ba9694fe 100644
--- a/test/helpers/constants.ts
+++ b/test/helpers/constants.ts
@@ -1,7 +1,3 @@
-import { ethers } from 'hardhat';
-
-const { BigNumber } = ethers;
-
export const DEAD_ADDRESS = '0x000000000000000000000000000000000000dEaD';
export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
export const ZERO_WORD = '0x0000000000000000000000000000000000000000000000000000000000000000';
@@ -15,34 +11,34 @@ export const BUFFERED_REGISTRATION_COST = REGISTRATION_TIME + 3 * DAY;
export const TLD = {
// Regular
- CRYPTO: BigNumber.from('0x0f4a10a4f46c288cea365fcf45cccf0e9d901b945b9829ccdb54c10dc3cb7a6f'),
- WALLET: BigNumber.from('0x1e3f482b3363eb4710dae2cb2183128e272eafbe137f686851c1caea32502230'),
- X: BigNumber.from('0x241e7e2b7fd7333b3c0c049b326316b811af0c01cfc0c7a90b466fda3a70fc2d'),
- NFT: BigNumber.from('0xb75cf4f3d8bc3deb317ed5216d898899d5cc6a783f65f6768eb9bcb89428670d'),
- BLOCKCHAIN: BigNumber.from('0x4118ebbd893ecbb9f5d7a817c7d8039c1bd991b56ea243e2ae84d0a1b2c950a7'),
- BITCOIN: BigNumber.from('0x042fb01c1e43fb4a32f85b41c821e17d2faeac58cfc5fb23f80bc00c940f85e3'),
- 888: BigNumber.from('0x5c828ec285c0bf152a30a325b3963661a80cb87641d60920344caf04d4a0f31e'),
- DAO: BigNumber.from('0xb5f2bbf81da581299d4ff7af60560c0ac854196f5227328d2d0c2bb0df33e553'),
- ZIL: BigNumber.from('0xd81bbfcee722494b885e891546eeac23d0eedcd44038d7a2f6ef9ec2f9e0d239'),
- POLYGON: BigNumber.from('0xed9ce6b49a0e2c56c57c86795b131bd6df792312183994c3cf3de1516cfe92d6'),
- UNSTOPPABLE: BigNumber.from('0x92bba949890cd44a226a8ce54135cf86538cd6c5ca0ccf41877102fd718cc8aa'),
- KLEVER: BigNumber.from('0xa18784bb78ee0f577251fb21ad5cac7a140ab47e9414e3c7af5125e3e1d28923'),
- HI: BigNumber.from('0xfdb51f7f56d9b1149db5ce99afcf60dda4416fd6fb8dc0649fec13cd03e1803e'),
- KRESUS: BigNumber.from('0x2acf53593112265ba651274f0e33a6b3fe86f92bbee4d39211540592fde6b0f3'),
- ANIME: BigNumber.from('0xaf4d61a6acdda7379d6f90207923aeb080994d0f1aaba4b8b24a14f965b2bb7c'),
- MANGA: BigNumber.from('0x57ea207b3238a69d8a9a53252de172f2ceae1d856008b13208a203867a707c78'),
- BINANCEUS: BigNumber.from('0x2a91107027b89ab420a4d8ec457493cfca12ab17615ec8c876695f1343f3f0fd'),
- REALM: BigNumber.from('0x2ac5a394f941733376764fbf4c4b2933098b23a405bd8c55c9a8d32e2c8fb696'),
- GO: BigNumber.from('0xa264639c3dbff58a1ded5efcf724e50a9c7847ff8197c87c00d009fbba2a3720'),
- ALTIMIST: BigNumber.from('0x9bf15275eb85f2e69308f3dbfbe0f94cade4f05c2aa24ba7b9eba5ad2fb1a2cb'),
- PUDGY: BigNumber.from('0x17936dd2b9c99a1e1bfa039dd7d40118f3ed535fcd9c8cda23c8070ffb4c2264'),
- AUSTIN: BigNumber.from('0x89e68000b532da79f9a0d4b8416eaa4f64294236ab233205343453d5bec22933'),
- BITGET: BigNumber.from('0xbf2121df4e351413ea6788cb220e735378a753cec288cb22644340d58d597b23'),
- POG: BigNumber.from('0xe76cc52c68a868af0cba676c92337a921cc721b45b6630e47f7ecb78e3e0edcc'),
- CLAY: BigNumber.from('0x58872a8ca9414ae0f3ab850f51efaf4c77b647d903f9ec89a03d3018bb42e4fa'),
+ CRYPTO: BigInt('0x0f4a10a4f46c288cea365fcf45cccf0e9d901b945b9829ccdb54c10dc3cb7a6f'),
+ WALLET: BigInt('0x1e3f482b3363eb4710dae2cb2183128e272eafbe137f686851c1caea32502230'),
+ X: BigInt('0x241e7e2b7fd7333b3c0c049b326316b811af0c01cfc0c7a90b466fda3a70fc2d'),
+ NFT: BigInt('0xb75cf4f3d8bc3deb317ed5216d898899d5cc6a783f65f6768eb9bcb89428670d'),
+ BLOCKCHAIN: BigInt('0x4118ebbd893ecbb9f5d7a817c7d8039c1bd991b56ea243e2ae84d0a1b2c950a7'),
+ BITCOIN: BigInt('0x042fb01c1e43fb4a32f85b41c821e17d2faeac58cfc5fb23f80bc00c940f85e3'),
+ 888: BigInt('0x5c828ec285c0bf152a30a325b3963661a80cb87641d60920344caf04d4a0f31e'),
+ DAO: BigInt('0xb5f2bbf81da581299d4ff7af60560c0ac854196f5227328d2d0c2bb0df33e553'),
+ ZIL: BigInt('0xd81bbfcee722494b885e891546eeac23d0eedcd44038d7a2f6ef9ec2f9e0d239'),
+ POLYGON: BigInt('0xed9ce6b49a0e2c56c57c86795b131bd6df792312183994c3cf3de1516cfe92d6'),
+ UNSTOPPABLE: BigInt('0x92bba949890cd44a226a8ce54135cf86538cd6c5ca0ccf41877102fd718cc8aa'),
+ KLEVER: BigInt('0xa18784bb78ee0f577251fb21ad5cac7a140ab47e9414e3c7af5125e3e1d28923'),
+ HI: BigInt('0xfdb51f7f56d9b1149db5ce99afcf60dda4416fd6fb8dc0649fec13cd03e1803e'),
+ KRESUS: BigInt('0x2acf53593112265ba651274f0e33a6b3fe86f92bbee4d39211540592fde6b0f3'),
+ ANIME: BigInt('0xaf4d61a6acdda7379d6f90207923aeb080994d0f1aaba4b8b24a14f965b2bb7c'),
+ MANGA: BigInt('0x57ea207b3238a69d8a9a53252de172f2ceae1d856008b13208a203867a707c78'),
+ BINANCEUS: BigInt('0x2a91107027b89ab420a4d8ec457493cfca12ab17615ec8c876695f1343f3f0fd'),
+ REALM: BigInt('0x2ac5a394f941733376764fbf4c4b2933098b23a405bd8c55c9a8d32e2c8fb696'),
+ GO: BigInt('0xa264639c3dbff58a1ded5efcf724e50a9c7847ff8197c87c00d009fbba2a3720'),
+ ALTIMIST: BigInt('0x9bf15275eb85f2e69308f3dbfbe0f94cade4f05c2aa24ba7b9eba5ad2fb1a2cb'),
+ PUDGY: BigInt('0x17936dd2b9c99a1e1bfa039dd7d40118f3ed535fcd9c8cda23c8070ffb4c2264'),
+ AUSTIN: BigInt('0x89e68000b532da79f9a0d4b8416eaa4f64294236ab233205343453d5bec22933'),
+ BITGET: BigInt('0xbf2121df4e351413ea6788cb220e735378a753cec288cb22644340d58d597b23'),
+ POG: BigInt('0xe76cc52c68a868af0cba676c92337a921cc721b45b6630e47f7ecb78e3e0edcc'),
+ CLAY: BigInt('0x58872a8ca9414ae0f3ab850f51efaf4c77b647d903f9ec89a03d3018bb42e4fa'),
// Expirable
- COM: BigNumber.from('0xac2c11ea5d4a4826f418d3befbf0537de7f13572d2a433edfe4a7314ea5dc896'),
+ COM: BigInt('0xac2c11ea5d4a4826f418d3befbf0537de7f13572d2a433edfe4a7314ea5dc896'),
};
export const EXPIRABLE_TLDS = [
diff --git a/test/helpers/consumption.ts b/test/helpers/consumption.ts
index 2b1327a4..8025928b 100644
--- a/test/helpers/consumption.ts
+++ b/test/helpers/consumption.ts
@@ -1,3 +1,3 @@
-export function percDiff (a: number, b: number) {
- return (-((a - b) / a) * 100).toFixed(2);
+export function percDiff (a: bigint, b: bigint) {
+ return Number((-((a - b) / a) * BigInt(100))).toFixed(2);
}
diff --git a/test/helpers/metatx.ts b/test/helpers/metatx.ts
index 5ad7d3d8..3427effe 100644
--- a/test/helpers/metatx.ts
+++ b/test/helpers/metatx.ts
@@ -1,5 +1,5 @@
-import { utils, Contract, BigNumberish, BigNumber, Signer } from 'ethers';
-import { Interface } from '@ethersproject/abi/';
+import { Contract, BigNumberish, Signer, Interface, solidityPackedKeccak256, keccak256, getBytes } from 'ethers';
+import type { BaseRoutingForwarderMock, MintingManagerForwarder, UNSRegistry } from '../../types';
export async function sign (
data: string,
@@ -8,7 +8,7 @@ export async function sign (
signer: ISignerWithAddress,
): Promise {
return signer.signMessage(
- utils.arrayify(utils.solidityKeccak256(['bytes32', 'address', 'uint256'], [utils.keccak256(data), address, nonce])),
+ getBytes(solidityPackedKeccak256(['bytes32', 'address', 'uint256'], [keccak256(data), address, nonce])),
);
}
@@ -17,7 +17,7 @@ export type ExecuteFunc = (
params: unknown[],
from: ISignerWithAddress,
tokenId: BigNumberish,
- nonce?: BigNumber,
+ nonce?: bigint,
) => Promise<{
req: {
from: string;
@@ -30,13 +30,17 @@ export type ExecuteFunc = (
type ISignerWithAddress = Signer & {address: string};
-export function buildExecuteFunc (iface: Interface, toAddress: string, forwarder: Contract): ExecuteFunc {
+export function buildExecuteFunc (
+ iface: Interface,
+ toAddress: string,
+ forwarder: Contract | MintingManagerForwarder | UNSRegistry | BaseRoutingForwarderMock,
+): ExecuteFunc {
return async (
selector: string,
params: unknown[],
from: ISignerWithAddress,
tokenId: BigNumberish,
- nonce?: BigNumber,
+ nonce?: bigint,
) => {
const data = iface.encodeFunctionData(selector, params);
diff --git a/test/helpers/polygon.ts b/test/helpers/polygon.ts
index 957ceae4..06bf9714 100644
--- a/test/helpers/polygon.ts
+++ b/test/helpers/polygon.ts
@@ -1,6 +1,15 @@
import { artifacts } from 'hardhat';
-import { BigNumberish, Contract, ContractReceipt, ContractTransaction, utils } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import {
+ AbiCoder,
+ BaseContract,
+ BigNumberish,
+ ContractTransactionReceipt,
+ ContractTransactionResponse,
+ encodeRlp,
+ hexlify,
+ toBeHex,
+} from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { SimpleCheckpointManager } from '../../types/contracts/@maticnetwork/pos-portal/SimpleCheckpointManager.sol';
import { submitCheckpoint } from './@maticnetwork/checkpoint';
import { childWeb3 } from './@maticnetwork/contracts';
@@ -11,22 +20,22 @@ import { childWeb3 } from './@maticnetwork/contracts';
*/
const ERC721_TRANSFER_EVENT_SIG = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
-const abiCoder = new utils.AbiCoder();
+const abiCoder = new AbiCoder();
-export const buildPredicateExitInput = async (
- withdrawer: string,
- receiver: string,
- tokenId: BigNumberish,
-): Promise => {
- return utils.RLP.encode([
+export const buildPredicateExitInput = (withdrawer: string, receiver: string, tokenId: BigNumberish): string => {
+ return encodeRlp([
'0x', // skip first elem
[ERC721_TRANSFER_EVENT_SIG, withdrawer, receiver, abiCoder.encode(['uint256'], [tokenId])],
]);
};
-export const writeCheckpoint = async (contract: Contract, admin: SignerWithAddress, txn: ContractTransaction) => {
+export const writeCheckpoint = async (
+ contract: BaseContract,
+ admin: SignerWithAddress,
+ txn: ContractTransactionResponse,
+) => {
const abi = (await artifacts.readArtifact('SimpleCheckpointManager')).abi;
- const checkpointManager = new childWeb3.eth.Contract(abi, contract.address, {
+ const checkpointManager = new childWeb3.eth.Contract(abi, await contract.getAddress(), {
from: admin.address,
});
return await submitCheckpoint(checkpointManager, txn.hash);
@@ -34,28 +43,28 @@ export const writeCheckpoint = async (contract: Contract, admin: SignerWithAddre
export const buildExitInput = async (
checkpointManager: SimpleCheckpointManager,
- receipt: ContractReceipt,
+ receipt: ContractTransactionReceipt,
checkpointData: any, // eslint-disable-line @typescript-eslint/no-explicit-any
) => {
- const headerNumber = (await checkpointManager.currentCheckpointNumber()).toNumber();
+ const headerNumber = await checkpointManager.currentCheckpointNumber();
const logIndex = receipt.logs.findIndex(
(log) => log.topics[0].toLowerCase() === ERC721_TRANSFER_EVENT_SIG.toLowerCase(),
);
- return utils.hexlify(
- utils.RLP.encode(
+ return hexlify(
+ encodeRlp(
[
- headerNumber,
+ toBeHex(headerNumber),
Buffer.concat(checkpointData.proof),
- checkpointData.number,
- checkpointData.timestamp,
+ toBeHex(checkpointData.number),
+ toBeHex(checkpointData.timestamp),
checkpointData.transactionsRoot,
checkpointData.receiptsRoot,
checkpointData.receipt,
- utils.RLP.encode(checkpointData.receiptParentNodes),
+ encodeRlp(checkpointData.receiptParentNodes),
checkpointData.path, // branch mask,
- logIndex,
- ].map((val) => utils.hexlify(val)),
+ toBeHex(logIndex),
+ ].map((val) => hexlify(val)),
),
);
};
diff --git a/test/helpers/proxy.ts b/test/helpers/proxy.ts
index 1d0c8776..59aca112 100644
--- a/test/helpers/proxy.ts
+++ b/test/helpers/proxy.ts
@@ -1,6 +1,4 @@
-import { utils, BigNumber } from 'ethers';
-import { FunctionFragment } from 'ethers/lib/utils';
-import { ProxyReader } from '../../types/contracts';
+import { keccak256, FunctionFragment, solidityPacked, toBeHex, BaseContract } from 'ethers';
export const getFuncSignature = (fragment: FunctionFragment): string => {
return `${fragment.name}(${fragment.inputs
@@ -8,23 +6,23 @@ export const getFuncSignature = (fragment: FunctionFragment): string => {
.join(',')})`;
};
-export const getInterfaceId = (proxyReader: ProxyReader, functions: string[]): string => {
- let interfaceId: BigNumber | undefined;
+export const getInterfaceId = (contract: BaseContract, functions: string[]): string => {
+ let interfaceId: bigint | undefined;
for (const functionName of functions) {
- const funcInterface = Object.values(proxyReader.interface.functions).find((x) => x.name === functionName);
+ const funcInterface = contract.interface.getFunction(functionName);
if(!funcInterface) {
throw new Error('getInterfaceId: could not find function with name ' + functionName);
}
const funcSignature = getFuncSignature(funcInterface);
- const funcInterfaceId = utils.keccak256(utils.solidityPack(['string'], [funcSignature])).slice(0, 10);
+ const funcInterfaceId = keccak256(solidityPacked(['string'], [funcSignature])).slice(0, 10);
if (interfaceId === undefined) {
- interfaceId = BigNumber.from(funcInterfaceId);
+ interfaceId = BigInt(funcInterfaceId);
} else {
- interfaceId = interfaceId.xor(BigNumber.from(funcInterfaceId));
+ interfaceId = interfaceId ^ BigInt(funcInterfaceId);
}
}
@@ -32,5 +30,5 @@ export const getInterfaceId = (proxyReader: ProxyReader, functions: string[]): s
throw new Error('getInterfaceId: could not get interfaceId. Probably no functions supplied?');
}
- return interfaceId.toHexString();
+ return toBeHex(interfaceId);
};
diff --git a/test/helpers/registry.ts b/test/helpers/registry.ts
index 149b1994..567ae80c 100644
--- a/test/helpers/registry.ts
+++ b/test/helpers/registry.ts
@@ -1,10 +1,8 @@
-import { ethers } from 'hardhat';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { randomBytes } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { UNSRegistry } from '../../types/contracts/UNSRegistry';
-const generateRandomLabel = () => 'domain-' + ethers.utils.hexlify(
- ethers.utils.randomBytes(16),
-);
+const generateRandomLabel = () => 'domain-' + Buffer.from(randomBytes(16)).toString('hex');
type BaseMintParams = {
unsRegistry: UNSRegistry,
diff --git a/test/helpers/utils.ts b/test/helpers/utils.ts
index b32dfa9e..52c08a6b 100644
--- a/test/helpers/utils.ts
+++ b/test/helpers/utils.ts
@@ -1,6 +1,14 @@
import { ethers } from 'hardhat';
-export async function increaseTimeBy (seconds: number) {
- await ethers.provider.send('evm_increaseTime', [seconds]);
+export async function increaseTimeBy (seconds: number | bigint) {
+ await ethers.provider.send('evm_increaseTime', [Number(seconds)]);
await ethers.provider.send('evm_mine', []);
}
+
+export async function getLatestBlockTimestamp (): Promise {
+ const block = await ethers.provider.getBlock('latest');
+
+ if(!block) throw new Error('Block not found');
+
+ return block.timestamp;
+}
diff --git a/test/metatx/BaseForwarder.test.ts b/test/metatx/BaseForwarder.test.ts
index dc8244b9..5153f3a0 100644
--- a/test/metatx/BaseForwarder.test.ts
+++ b/test/metatx/BaseForwarder.test.ts
@@ -1,7 +1,7 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { BigNumber, Contract } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { BaseContract } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { BaseForwarderMock } from '../../types/contracts/mocks';
import { BaseForwarderMock__factory } from '../../types/factories/contracts/mocks';
import { ERC1271SimpleWallet } from '../../types/contracts/utils';
@@ -13,7 +13,7 @@ describe('BaseForwarder', () => {
let signers: SignerWithAddress[], owner: SignerWithAddress, account: SignerWithAddress;
let simpleWallet: ERC1271SimpleWallet;
- let mockWallet: Contract;
+ let mockWallet: BaseContract;
let buildExecuteParams: ExecuteFunc;
@@ -27,177 +27,96 @@ describe('BaseForwarder', () => {
simpleWallet = await new ERC1271SimpleWallet__factory(owner).deploy(owner.address);
mockWallet = await ERC1271MockFactory.deploy();
- buildExecuteParams = buildExecuteFunc(forwarder.interface, forwarder.address, forwarder);
+ buildExecuteParams = buildExecuteFunc(forwarder.interface, await forwarder.getAddress(), forwarder);
});
describe('Verify', async () => {
it('should verify when the signature is valid', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'revertWithReason()',
- [],
- owner,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('revertWithReason()', [], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.eq(true);
});
it('should verify that the address matches the recovered one', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'revertWithReason()',
- [],
- owner,
- tokenId,
- );
-
- expect(
- await forwarder.verify({ ...req, from: account.address }, signature),
- ).to.eq(false);
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('revertWithReason()', [], owner, tokenId);
+
+ expect(await forwarder.verify({ ...req, from: account.address }, signature)).to.eq(false);
});
it('should verify that nonces match the address once', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'revertWithReason()',
- [],
- owner,
- tokenId,
- );
-
- expect(await forwarder.verify({ ...req, nonce: 42 }, signature)).to.eq(
- false,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('revertWithReason()', [], owner, tokenId);
+
+ expect(await forwarder.verify({ ...req, nonce: 42 }, signature)).to.eq(false);
});
describe('with metatx from contract addresses', async () => {
it('should be able to verify the ERC1271 contract signature', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'mintAsset()',
- [],
- owner,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('mintAsset()', [], owner, tokenId);
- expect(
- await forwarder.verify(
- { ...req, from: simpleWallet.address },
- signature,
- ),
- ).to.eq(true);
+ expect(await forwarder.verify({ ...req, from: await simpleWallet.getAddress() }, signature)).to.eq(true);
});
it('should be able to handle situation when ERC1271 contract returns false', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'mintAsset()',
- [],
- account,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('mintAsset()', [], account, tokenId);
- expect(
- await forwarder.verify(
- { ...req, from: simpleWallet.address },
- signature,
- ),
- ).to.eq(false);
+ expect(await forwarder.verify({ ...req, from: await simpleWallet.getAddress() }, signature)).to.eq(false);
});
it('should be able to handle situation when contract does not implement ERC1271', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'mintAsset()',
- [],
- owner,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('mintAsset()', [], owner, tokenId);
- expect(
- await forwarder.verify(
- { ...req, from: mockWallet.address },
- signature,
- ),
- ).to.eq(false);
+ expect(await forwarder.verify({ ...req, from: await mockWallet.getAddress() }, signature)).to.eq(false);
});
});
});
describe('Execute', async () => {
it('should revert with native reason', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'revertWithReason()',
- [],
- owner,
- tokenId,
- );
-
- await expect(forwarder.execute(req, signature)).to.be.revertedWith(
- 'AAAAAA',
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('revertWithReason()', [], owner, tokenId);
+
+ await expect(forwarder.execute(req, signature)).to.be.revertedWith('AAAAAA');
});
it('should revert with forwarding reason', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'revertWithoutReason()',
- [],
- owner,
- tokenId,
- );
-
- await expect(forwarder.execute(req, signature)).to.be.revertedWith(
- 'BaseForwarder: CALL_FAILED',
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('revertWithoutReason()', [], owner, tokenId);
+
+ await expect(forwarder.execute(req, signature)).to.be.revertedWith('BaseForwarder: CALL_FAILED');
});
describe('metatx from contract addresses', async () => {
it('should be able to mint asset on behalf of ERC1271SmartWallet', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'mintAsset()',
- [],
- owner,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('mintAsset()', [], owner, tokenId);
- await forwarder.execute(
- { ...req, from: simpleWallet.address },
- signature,
- );
+ await forwarder.execute({ ...req, from: await simpleWallet.getAddress() }, signature);
- expect(await forwarder.hasAsset(simpleWallet.address)).to.eq(true);
+ expect(await forwarder.hasAsset(await simpleWallet.getAddress())).to.eq(true);
});
it('should revert when the signature is made not on behalf of smart wallet owner', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'mintAsset()',
- [],
- account,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('mintAsset()', [], account, tokenId);
- await expect(
- forwarder.execute({ ...req, from: mockWallet.address }, signature),
- ).to.be.revertedWith('BaseForwarderMock: SIGNATURE_INVALID');
+ await expect(forwarder.execute({ ...req, from: await mockWallet.getAddress() }, signature)).to.be.revertedWith(
+ 'BaseForwarderMock: SIGNATURE_INVALID',
+ );
});
it('should revert when contract does not implement ERC1271', async () => {
- const tokenId = BigNumber.from(100010);
- const { req, signature } = await buildExecuteParams(
- 'mintAsset()',
- [],
- owner,
- tokenId,
- );
+ const tokenId = BigInt(100010);
+ const { req, signature } = await buildExecuteParams('mintAsset()', [], owner, tokenId);
- await expect(
- forwarder.execute({ ...req, from: mockWallet.address }, signature),
- ).to.be.revertedWith('BaseForwarderMock: SIGNATURE_INVALID');
+ await expect(forwarder.execute({ ...req, from: await mockWallet.getAddress() }, signature)).to.be.revertedWith(
+ 'BaseForwarderMock: SIGNATURE_INVALID',
+ );
});
});
});
diff --git a/test/metatx/BaseRoutingForwarder.test.ts b/test/metatx/BaseRoutingForwarder.test.ts
index 07a641d1..da653a00 100644
--- a/test/metatx/BaseRoutingForwarder.test.ts
+++ b/test/metatx/BaseRoutingForwarder.test.ts
@@ -1,28 +1,24 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumberish, Contract } from 'ethers';
+import { BigNumberish } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { ExecuteFunc, buildExecuteFunc, sign } from '../helpers/metatx';
import { TLD } from '../helpers/constants';
import { CNSRegistry } from '../../types/dot-crypto/contracts';
-import {
- MintingController,
- SignatureController,
-} from '../../types/dot-crypto/contracts/controllers';
+import { MintingController, SignatureController } from '../../types/dot-crypto/contracts/controllers';
import { CNSRegistry__factory } from '../../types/factories/dot-crypto/contracts';
import {
MintingController__factory,
SignatureController__factory,
} from '../../types/factories/dot-crypto/contracts/controllers';
+import { BaseRoutingForwarderMock } from '../../types';
describe('BaseRoutingForwarder', () => {
- let forwarder: Contract,
+ let forwarder: BaseRoutingForwarderMock,
registry: CNSRegistry,
mintingController: MintingController,
signatureController: SignatureController;
- let signers: SignerWithAddress[],
- owner: SignerWithAddress,
- receiver: SignerWithAddress;
+ let signers: SignerWithAddress[], owner: SignerWithAddress, receiver: SignerWithAddress;
const mintDomain = async (label: string, owner: string) => {
await mintingController.mintSLD(owner, label);
@@ -31,11 +27,7 @@ describe('BaseRoutingForwarder', () => {
let buildExecuteParams: ExecuteFunc, buildExecuteRoutingParams: ExecuteFunc;
- const buildTransfer = async (
- from: SignerWithAddress,
- toAddress: string,
- tokenId: BigNumberish,
- ) => {
+ const buildTransfer = async (from: SignerWithAddress, toAddress: string, tokenId: BigNumberish) => {
return await buildExecuteParams(
'transferFrom(address,address,uint256)',
[from.address, toAddress, tokenId],
@@ -48,124 +40,74 @@ describe('BaseRoutingForwarder', () => {
signers = await ethers.getSigners();
[owner, receiver] = signers;
- const BaseRoutingForwarder = await ethers.getContractFactory(
- 'BaseRoutingForwarderMock',
- );
-
registry = await new CNSRegistry__factory(owner).deploy();
- mintingController = await new MintingController__factory(owner).deploy(
- registry.address,
- );
- signatureController = await new SignatureController__factory(owner).deploy(
- registry.address,
- );
+ mintingController = await new MintingController__factory(owner).deploy(await registry.getAddress());
+ signatureController = await new SignatureController__factory(owner).deploy(await registry.getAddress());
- await registry.addController(mintingController.address);
- await registry.addController(signatureController.address);
+ await registry.addController(await mintingController.getAddress());
+ await registry.addController(await signatureController.getAddress());
- forwarder = await BaseRoutingForwarder.deploy();
+ forwarder = await ethers.deployContract('BaseRoutingForwarderMock');
- buildExecuteParams = buildExecuteFunc(
- registry.interface,
- signatureController.address,
- forwarder,
- );
- buildExecuteRoutingParams = buildExecuteFunc(
- forwarder.interface,
- forwarder.address,
- forwarder,
- );
+ buildExecuteParams = buildExecuteFunc(registry.interface, await signatureController.getAddress(), forwarder);
+ buildExecuteRoutingParams = buildExecuteFunc(forwarder.interface, await forwarder.getAddress(), forwarder);
});
it('should build valid `transferFrom` route calldata', async () => {
const tokenId = await registry.childIdOf(TLD.CRYPTO, 'test_foob_1');
- const { req, signature } = await buildTransfer(
- owner,
+ const { req, signature } = await buildTransfer(owner, receiver.address, tokenId);
+
+ const expectedData = signatureController.interface.encodeFunctionData('transferFromFor', [
+ owner.address,
receiver.address,
tokenId,
- );
-
- const expectedData = signatureController.interface.encodeFunctionData(
- 'transferFromFor',
- [owner.address, receiver.address, tokenId, signature],
- );
+ signature,
+ ]);
- const calldata = await forwarder.callStatic.buildRouteData(req, signature);
+ const calldata = await forwarder.buildRouteData.staticCall(req, signature);
expect(calldata).to.be.equal(expectedData);
});
it('should build valid `putString(string)` route calldata', async () => {
const tokenId = await registry.childIdOf(TLD.CRYPTO, 'test_foob_3');
- const { req, signature } = await buildExecuteRoutingParams(
- 'putString(string)',
- ['vv'],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteRoutingParams('putString(string)', ['vv'], owner, tokenId);
- const expectedData = forwarder.interface.encodeFunctionData(
- 'putStringFor(string,bytes)',
- ['vv', signature],
- );
+ const expectedData = forwarder.interface.encodeFunctionData('putStringFor', ['vv', signature]);
- const calldata = await forwarder.callStatic.buildRouteData(req, signature);
+ const calldata = await forwarder.buildRouteData.staticCall(req, signature);
expect(calldata).to.be.equal(expectedData);
});
it('should build valid `putUint(uint)` route calldata', async () => {
const tokenId = await registry.childIdOf(TLD.CRYPTO, 'test_foob_4');
- const { req, signature } = await buildExecuteRoutingParams(
- 'putUint(uint256)',
- [1],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteRoutingParams('putUint(uint256)', [1], owner, tokenId);
- const expectedData = forwarder.interface.encodeFunctionData(
- 'putUintFor(uint256,bytes)',
- [1, signature],
- );
+ const expectedData = forwarder.interface.encodeFunctionData('putUintFor', [1, signature]);
- const calldata = await forwarder.callStatic.buildRouteData(req, signature);
+ const calldata = await forwarder.buildRouteData.staticCall(req, signature);
expect(calldata).to.be.equal(expectedData);
});
it('should build valid `putUintArr(uint256[])` route calldata', async () => {
const tokenId = await registry.childIdOf(TLD.CRYPTO, 'test_foob_5');
- const { req, signature } = await buildExecuteRoutingParams(
- 'putUintArr(uint256[])',
- [[1, 2]],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteRoutingParams('putUintArr(uint256[])', [[1, 2]], owner, tokenId);
- const expectedData = forwarder.interface.encodeFunctionData(
- 'putUintArrFor(uint256[],bytes)',
- [[1, 2], signature],
- );
+ const expectedData = forwarder.interface.encodeFunctionData('putUintArrFor', [[1, 2], signature]);
- const calldata = await forwarder.callStatic.buildRouteData(req, signature);
+ const calldata = await forwarder.buildRouteData.staticCall(req, signature);
expect(calldata).to.be.equal(expectedData);
});
it('should revert when unknown function call', async () => {
const tokenId = await mintDomain('test_foob_2', owner.address);
- const data = registry.interface.encodeFunctionData('setOwner', [
- receiver.address,
- tokenId,
- ]);
+ const data = registry.interface.encodeFunctionData('setOwner', [receiver.address, tokenId]);
const nonce = await forwarder.nonceOf(tokenId);
- const signature = await sign(
- data,
- signatureController.address,
- nonce,
- owner,
- );
+ const signature = await sign(data, await signatureController.getAddress(), nonce, owner);
const req = { from: owner.address, nonce, tokenId, data };
- await expect(
- forwarder.callStatic.buildRouteData(req, signature),
- ).to.be.revertedWith('RoutingForwarder: ROUTE_UNKNOWN');
+ await expect(forwarder.buildRouteData.staticCall(req, signature)).to.be.revertedWith(
+ 'BaseRoutingForwarder: ROUTE_UNKNOWN',
+ );
});
});
diff --git a/test/metatx/CNSRegistryForwarder.test.ts b/test/metatx/CNSRegistryForwarder.test.ts
index 2c2f0b05..2572db2f 100644
--- a/test/metatx/CNSRegistryForwarder.test.ts
+++ b/test/metatx/CNSRegistryForwarder.test.ts
@@ -1,28 +1,18 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { BigNumberish } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { buildExecuteFunc, ExecuteFunc } from '../helpers/metatx';
import { TLD } from '../helpers/constants';
-import {
- CNSRegistry__factory,
- Resolver__factory,
-} from '../../types/factories/dot-crypto/contracts';
+import { CNSRegistry__factory, Resolver__factory } from '../../types/factories/dot-crypto/contracts';
import {
MintingController__factory,
SignatureController__factory,
} from '../../types/factories/dot-crypto/contracts/controllers';
import { CNSRegistryForwarder__factory } from '../../types/factories/contracts/metatx';
import { CNSRegistryForwarder } from '../../types/contracts/metatx';
-import {
- CNSRegistry,
- Resolver,
-} from '../../types/dot-crypto/contracts';
-import {
- MintingController,
- SignatureController,
-} from '../../types/dot-crypto/contracts/controllers';
+import { CNSRegistry, Resolver } from '../../types/dot-crypto/contracts';
+import { MintingController, SignatureController } from '../../types/dot-crypto/contracts/controllers';
describe('CNSRegistryForwarder', () => {
let forwarder: CNSRegistryForwarder,
@@ -31,9 +21,7 @@ describe('CNSRegistryForwarder', () => {
signatureController: SignatureController,
resolver: Resolver;
- let signers: SignerWithAddress[],
- owner: SignerWithAddress,
- receiver: SignerWithAddress;
+ let signers: SignerWithAddress[], owner: SignerWithAddress, receiver: SignerWithAddress;
let buildExecuteParams: ExecuteFunc;
const mintDomain = async (label: string, owner: string) => {
@@ -41,11 +29,7 @@ describe('CNSRegistryForwarder', () => {
return await registry.childIdOf(TLD.CRYPTO, label);
};
- const buildTransfer = async (
- from: SignerWithAddress,
- toAddress: string,
- tokenId: BigNumberish,
- ) => {
+ const buildTransfer = async (from: SignerWithAddress, toAddress: string, tokenId: BigNumberish) => {
return await buildExecuteParams(
'transferFrom(address,address,uint256)',
[from.address, toAddress, tokenId],
@@ -59,29 +43,19 @@ describe('CNSRegistryForwarder', () => {
[owner, receiver] = signers;
registry = await new CNSRegistry__factory(owner).deploy();
- mintingController = await new MintingController__factory(owner).deploy(
- registry.address,
- );
- signatureController = await new SignatureController__factory(owner).deploy(
- registry.address,
- );
+ mintingController = await new MintingController__factory(owner).deploy(await registry.getAddress());
+ signatureController = await new SignatureController__factory(owner).deploy(await registry.getAddress());
resolver = await new Resolver__factory(owner).deploy(
- registry.address,
- mintingController.address,
+ await registry.getAddress(),
+ await mintingController.getAddress(),
);
- await registry.addController(mintingController.address);
- await registry.addController(signatureController.address);
+ await registry.addController(await mintingController.getAddress());
+ await registry.addController(await signatureController.getAddress());
- forwarder = await new CNSRegistryForwarder__factory(owner).deploy(
- signatureController.address,
- );
+ forwarder = await new CNSRegistryForwarder__factory(owner).deploy(await signatureController.getAddress());
- buildExecuteParams = buildExecuteFunc(
- registry.interface,
- signatureController.address,
- forwarder,
- );
+ buildExecuteParams = buildExecuteFunc(registry.interface, await signatureController.getAddress(), forwarder);
});
describe('nonceOf', () => {
@@ -93,11 +67,7 @@ describe('CNSRegistryForwarder', () => {
expect(nonceF).to.be.equal(0);
expect(nonceF).to.be.equal(nonceS);
- const { req, signature } = await buildTransfer(
- owner,
- receiver.address,
- tokenId,
- );
+ const { req, signature } = await buildTransfer(owner, receiver.address, tokenId);
await forwarder.execute(req, signature);
nonceF = await forwarder.nonceOf(tokenId);
@@ -110,11 +80,7 @@ describe('CNSRegistryForwarder', () => {
describe('verify', () => {
it('should verify successfully', async () => {
const tokenId = await mintDomain('test_foo_10', owner.address);
- const { req, signature } = await buildTransfer(
- owner,
- receiver.address,
- tokenId,
- );
+ const { req, signature } = await buildTransfer(owner, receiver.address, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(true);
});
@@ -133,24 +99,14 @@ describe('CNSRegistryForwarder', () => {
it('should fail verification when nonce is incorrect', async () => {
const tokenId = await mintDomain('test_foo_14', owner.address);
- const { req, signature } = await buildTransfer(
- owner,
- receiver.address,
- tokenId,
- );
+ const { req, signature } = await buildTransfer(owner, receiver.address, tokenId);
- expect(
- await forwarder.verify({ ...req, nonce: 100 }, signature),
- ).to.be.equal(false);
+ expect(await forwarder.verify({ ...req, nonce: 100 }, signature)).to.be.equal(false);
});
it('should fail verification when signature used', async () => {
const tokenId = await mintDomain('test_foo_15', owner.address);
- const { req, signature } = await buildTransfer(
- owner,
- receiver.address,
- tokenId,
- );
+ const { req, signature } = await buildTransfer(owner, receiver.address, tokenId);
await forwarder.execute(req, signature);
expect(await forwarder.verify(req, signature)).to.be.equal(false);
@@ -160,11 +116,7 @@ describe('CNSRegistryForwarder', () => {
describe('execute', () => {
it('should execute `transferFrom` for token', async () => {
const tokenId = await mintDomain('test_goo__1', owner.address);
- const { req, signature } = await buildTransfer(
- owner,
- receiver.address,
- tokenId,
- );
+ const { req, signature } = await buildTransfer(owner, receiver.address, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(true);
await forwarder.execute(req, signature);
@@ -204,19 +156,12 @@ describe('CNSRegistryForwarder', () => {
it('should execute `burn` for token', async () => {
const tokenId = await mintDomain('test_goo__4', owner.address);
- const { req, signature } = await buildExecuteParams(
- 'burn(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('burn(uint256)', [tokenId], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(true);
await forwarder.execute(req, signature);
- await expect(registry.ownerOf(tokenId)).to.be.revertedWith(
- 'ERC721: owner query for nonexistent token',
- );
+ await expect(registry.ownerOf(tokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
});
it('should execute `mintChild` for token', async () => {
@@ -232,9 +177,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
const childTokenId = await registry.childIdOf(tokenId, 'test');
- expect(await registry.ownerOf(childTokenId)).to.be.equal(
- receiver.address,
- );
+ expect(await registry.ownerOf(childTokenId)).to.be.equal(receiver.address);
});
it('should execute `safeMintChild` for token', async () => {
@@ -250,9 +193,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
const childTokenId = await registry.childIdOf(tokenId, 'test');
- expect(await registry.ownerOf(childTokenId)).to.be.equal(
- receiver.address,
- );
+ expect(await registry.ownerOf(childTokenId)).to.be.equal(receiver.address);
});
it('should execute `safeMintChild(bytes)` for token', async () => {
@@ -268,9 +209,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
const childTokenId = await registry.childIdOf(tokenId, 'test');
- expect(await registry.ownerOf(childTokenId)).to.be.equal(
- receiver.address,
- );
+ expect(await registry.ownerOf(childTokenId)).to.be.equal(receiver.address);
});
it('should execute `transferFromChild` for token', async () => {
@@ -290,9 +229,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
- expect(await registry.ownerOf(childTokenId)).to.be.equal(
- receiver.address,
- );
+ expect(await registry.ownerOf(childTokenId)).to.be.equal(receiver.address);
});
it('should execute `safeTransferFromChild` for token', async () => {
@@ -312,9 +249,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
- expect(await registry.ownerOf(childTokenId)).to.be.equal(
- receiver.address,
- );
+ expect(await registry.ownerOf(childTokenId)).to.be.equal(receiver.address);
});
it('should execute `safeTransferFromChild(bytes)` for token', async () => {
@@ -334,9 +269,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
- expect(await registry.ownerOf(childTokenId)).to.be.equal(
- receiver.address,
- );
+ expect(await registry.ownerOf(childTokenId)).to.be.equal(receiver.address);
});
it('should execute `burnChild` for token', async () => {
@@ -356,19 +289,17 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
- await expect(registry.ownerOf(childTokenId)).to.be.revertedWith(
- 'ERC721: owner query for nonexistent token',
- );
+ await expect(registry.ownerOf(childTokenId)).to.be.revertedWith('ERC721: owner query for nonexistent token');
expect(await registry.ownerOf(tokenId)).to.be.equal(owner.address);
});
it('should execute `resolveTo` for token', async () => {
const tokenId = await mintDomain('test_goo__12', owner.address);
- await expect(registry.resolverOf(tokenId)).to.be.revertedWith('');
+ await expect(registry.resolverOf(tokenId)).to.be.revertedWithoutReason();
const { req, signature } = await buildExecuteParams(
'resolveTo(address,uint256)',
- [resolver.address, tokenId],
+ [await resolver.getAddress(), tokenId],
owner,
tokenId,
);
@@ -376,7 +307,7 @@ describe('CNSRegistryForwarder', () => {
await forwarder.execute(req, signature);
- expect(await registry.resolverOf(tokenId)).to.be.equal(resolver.address);
+ expect(await registry.resolverOf(tokenId)).to.be.equal(await resolver.getAddress());
});
});
});
diff --git a/test/metatx/ERC2771Context.test.ts b/test/metatx/ERC2771Context.test.ts
index a2340f44..142dd77f 100644
--- a/test/metatx/ERC2771Context.test.ts
+++ b/test/metatx/ERC2771Context.test.ts
@@ -1,8 +1,7 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-
-import { utils, BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { AbiCoder } from 'ethers';
import { buildExecuteFunc, ExecuteFunc } from '../helpers/metatx';
import { ERC2771ContextMock } from '../../types/contracts/mocks';
import { MintingManagerForwarder } from '../../types/contracts/metatx';
@@ -19,21 +18,21 @@ describe('ERC2771Context', () => {
[coinbase, account] = signers;
context = await new ERC2771ContextMock__factory(coinbase).deploy();
- forwarder = await new MintingManagerForwarder__factory(coinbase).deploy(context.address);
+ forwarder = await new MintingManagerForwarder__factory(coinbase).deploy(await context.getAddress());
- await context.initialize(forwarder.address);
+ await context.initialize(await forwarder.getAddress());
- buildExecuteParams = buildExecuteFunc(context.interface, context.address, forwarder);
+ buildExecuteParams = buildExecuteFunc(context.interface, await context.getAddress(), forwarder);
});
it('should verify', async () => {
- const tokenId = BigNumber.from(1);
+ const tokenId = BigInt(1);
const { req, signature } = await buildExecuteParams('run()', [], coinbase, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(true);
- const abiCoder = new utils.AbiCoder();
- const data = abiCoder.decode(['string'], await forwarder.callStatic.execute(req, signature))[0];
+ const abiCoder = new AbiCoder();
+ const data = abiCoder.decode(['string'], await forwarder.execute.staticCall(req, signature))[0];
expect(data).to.be.equal('ERC2771ContextMock: run');
});
@@ -43,53 +42,59 @@ describe('ERC2771Context', () => {
});
it('should return true trusted forwarder', async () => {
- expect(await context.isTrustedForwarder(forwarder.address)).to.be.eq(true);
+ expect(await context.isTrustedForwarder(await forwarder.getAddress())).to.be.eq(true);
});
});
describe('validate forwarded token', () => {
it('should forwarded tokenId when trusted forwarder', async () => {
- const tokenId = BigNumber.from(10);
+ const tokenId = BigInt(10);
const { req, signature } = await buildExecuteParams('msgToken()', [], coinbase, tokenId);
- const result = await forwarder.callStatic.execute(req, signature);
+ const result = await forwarder.execute.staticCall(req, signature);
expect(result).to.be.equal(tokenId);
});
it('should return zero tokenId when untrusted forwarder', async () => {
- expect(await context.callStatic.msgToken()).to.be.equal(0);
+ expect(await context.msgToken.staticCall()).to.be.equal(0);
});
});
describe('validate forwarded sender', () => {
it('should forwarded sender when trusted forwarder', async () => {
- const tokenId = BigNumber.from(121);
+ const tokenId = BigInt(121);
const { req, signature } = await buildExecuteParams('msgSender()', [], account, tokenId);
- const result = await forwarder.callStatic.execute(req, signature);
- const [msgSender] = utils.defaultAbiCoder.decode(['address'], result);
+ const result = await forwarder.execute.staticCall(req, signature);
+
+ const abiCoder = new AbiCoder();
+ const [msgSender] = abiCoder.decode(['address'], result);
+
expect(msgSender).to.be.equal(account.address);
});
it('should return direct sender when direct call', async () => {
- expect(await context.callStatic.msgSender()).to.be.equal(coinbase.address);
+ expect(await context.msgSender.staticCall()).to.be.equal(coinbase.address);
});
});
describe('validate forwarded data', () => {
it('should forwarded data when trusted forwarder', async () => {
- const tokenId = BigNumber.from(125);
+ const tokenId = BigInt(125);
const { req, signature } = await buildExecuteParams('msgData()', [], account, tokenId);
const data = context.interface.encodeFunctionData('msgData');
- const result = await forwarder.callStatic.execute(req, signature);
- const [msgSender] = utils.defaultAbiCoder.decode(['bytes'], result);
+ const result = await forwarder.execute.staticCall(req, signature);
+
+ const abiCoder = new AbiCoder();
+
+ const [msgSender] = abiCoder.decode(['bytes'], result);
expect(msgSender).to.be.equal(data);
});
it('should return zero data when untrusted forwarder', async () => {
const data = context.interface.encodeFunctionData('msgData');
- expect(await context.callStatic.msgData()).to.be.equal(data);
+ expect(await context.msgData.staticCall()).to.be.equal(data);
});
});
});
diff --git a/test/metatx/ERC2771RegistryContext.test.ts b/test/metatx/ERC2771RegistryContext.test.ts
index 7f77d9de..05ec6d4e 100644
--- a/test/metatx/ERC2771RegistryContext.test.ts
+++ b/test/metatx/ERC2771RegistryContext.test.ts
@@ -1,7 +1,7 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { utils, BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
+import { AbiCoder } from 'ethers';
import { ERC2771RegistryContextMock__factory } from '../../types/factories/contracts/mocks';
import { ERC2771RegistryContextMock } from '../../types/contracts/mocks';
@@ -12,7 +12,7 @@ describe('ERC2771RegistryContext', () => {
before(async () => {
signers = await ethers.getSigners();
[coinbase] = signers;
- [, ...accounts] = signers.map(s => s.address);
+ [, ...accounts] = signers.map((s) => s.address);
context = await new ERC2771RegistryContextMock__factory(coinbase).deploy();
await context.initialize();
@@ -25,25 +25,25 @@ describe('ERC2771RegistryContext', () => {
});
it('should return true trusted forwarder (self-address)', async () => {
- expect(await context.isTrustedForwarder(context.address)).to.be.eq(true);
+ expect(await context.isTrustedForwarder(await context.getAddress())).to.be.eq(true);
});
});
describe('validate forwarded token(last 32bytes in calldata)', () => {
it('should forwarded tokenId when trusted forwarder', async () => {
- const tokenId = BigNumber.from(102);
+ const tokenId = BigInt(102);
const calldata = context.interface.encodeFunctionData('msgToken');
- const encodedTokenId = utils.defaultAbiCoder.encode([ 'uint256' ], [ tokenId ]);
- const [success, returnData] = await context.callStatic.execute(calldata + encodedTokenId.slice(2));
+ const encodedTokenId = new AbiCoder().encode(['uint256'], [tokenId]);
+ const [success, returnData] = await context.execute.staticCall(calldata + encodedTokenId.slice(2));
expect(success).to.be.eq(true);
- const [msgToken] = utils.defaultAbiCoder.decode(['uint256'], returnData);
+ const [msgToken] = new AbiCoder().decode(['uint256'], returnData);
expect(msgToken).to.be.equal(tokenId);
});
it('should return zero tokenId when untrusted forwarder', async () => {
- expect(await context.callStatic.msgToken()).to.be.equal(0);
+ expect(await context.msgToken.staticCall()).to.be.equal(0);
});
});
@@ -51,21 +51,21 @@ describe('ERC2771RegistryContext', () => {
it('should return sender address when trusted forwarder', async () => {
const calldata = context.interface.encodeFunctionData('msgSender');
- const encodedTokenId = utils.defaultAbiCoder.encode([ 'uint256' ], [ 0 ]);
- const encodedAddress = utils.defaultAbiCoder.encode([ 'address' ], [ signers[0].address ]);
+ const encodedTokenId = new AbiCoder().encode(['uint256'], [0]);
+ const encodedAddress = new AbiCoder().encode(['address'], [signers[0].address]);
const encodedData = calldata + encodedAddress.slice(2) + encodedTokenId.slice(2);
- const [success, returnData] = await context.callStatic.execute(encodedData);
+ const [success, returnData] = await context.execute.staticCall(encodedData);
expect(success).to.be.eq(true);
- const [address] = utils.defaultAbiCoder.decode(['address'], returnData);
+ const [address] = new AbiCoder().decode(['address'], returnData);
expect(address).to.be.eql(signers[0].address);
});
it('should return sender address when untrusted forwarder', async () => {
- const sender = await context.callStatic.msgSender();
+ const sender = await context.msgSender.staticCall();
expect(sender).to.be.eql(signers[0].address);
- const sender2 = await context.connect(signers[2]).callStatic.msgSender();
+ const sender2 = await context.connect(signers[2]).msgSender.staticCall();
expect(sender2).to.be.eql(signers[2].address);
});
});
@@ -74,18 +74,18 @@ describe('ERC2771RegistryContext', () => {
it('should return data when trusted forwarder', async () => {
const calldata = context.interface.encodeFunctionData('msgData');
- const encodedTokenId = utils.defaultAbiCoder.encode([ 'uint256' ], [ 0 ]);
- const encodedAddress = utils.defaultAbiCoder.encode([ 'address' ], [ signers[0].address ]);
+ const encodedTokenId = new AbiCoder().encode(['uint256'], [0]);
+ const encodedAddress = new AbiCoder().encode(['address'], [signers[0].address]);
const encodedData = calldata + encodedAddress.slice(2) + encodedTokenId.slice(2);
- const [success, returnData] = await context.callStatic.execute(encodedData);
+ const [success, returnData] = await context.execute.staticCall(encodedData);
expect(success).to.be.eq(true);
- const [,, selector] = utils.defaultAbiCoder.decode(['bytes32', 'bytes32', 'bytes4'], returnData);
+ const [, , selector] = new AbiCoder().decode(['bytes32', 'bytes32', 'bytes4'], returnData);
expect(selector).to.be.eql(calldata);
});
it('should return data when untrusted forwarder', async () => {
- const data = await context.callStatic.msgData();
+ const data = await context.msgData.staticCall();
expect(data).to.be.eql('0xc4c2bfdc');
});
});
diff --git a/test/metatx/ResolverForwarder.test.ts b/test/metatx/ResolverForwarder.test.ts
index 9d5cc3d0..4a189607 100644
--- a/test/metatx/ResolverForwarder.test.ts
+++ b/test/metatx/ResolverForwarder.test.ts
@@ -1,22 +1,12 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
-import { BigNumber } from 'ethers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { buildExecuteFunc, ExecuteFunc } from '../helpers/metatx';
import { TLD } from '../helpers/constants';
import { ResolverForwarder } from '../../types/contracts/metatx';
-import {
- CNSRegistry,
- Resolver,
-} from '../../types/dot-crypto/contracts';
-import {
- MintingController,
- SignatureController,
-} from '../../types/dot-crypto/contracts/controllers';
-import {
- CNSRegistry__factory,
- Resolver__factory,
-} from '../../types/factories/dot-crypto/contracts';
+import { CNSRegistry, Resolver } from '../../types/dot-crypto/contracts';
+import { MintingController, SignatureController } from '../../types/dot-crypto/contracts/controllers';
+import { CNSRegistry__factory, Resolver__factory } from '../../types/factories/dot-crypto/contracts';
import {
MintingController__factory,
SignatureController__factory,
@@ -33,19 +23,13 @@ describe('ResolverForwarder', () => {
let signers: SignerWithAddress[], owner: SignerWithAddress;
let buildExecuteParams: ExecuteFunc;
- const mintDomain = async (
- label: string,
- owner: string,
- resolverAddress: string = resolver.address,
- ): Promise => {
- await mintingController.mintSLDWithResolver(owner, label, resolverAddress);
+ const mintDomain = async (label: string, owner: string, resolverAddress?: string): Promise => {
+ await mintingController.mintSLDWithResolver(owner, label, resolverAddress ?? (await resolver.getAddress()));
+
return await registry.childIdOf(TLD.CRYPTO, label);
};
- const mintDomainWithoutResolver = async (
- label: string,
- owner: string,
- ): Promise => {
+ const mintDomainWithoutResolver = async (label: string, owner: string): Promise => {
await mintingController.mintSLD(owner, label);
return await registry.childIdOf(TLD.CRYPTO, label);
};
@@ -55,30 +39,22 @@ describe('ResolverForwarder', () => {
[owner] = signers;
registry = await new CNSRegistry__factory(owner).deploy();
- mintingController = await new MintingController__factory(owner).deploy(
- registry.address,
- );
- signatureController = await new SignatureController__factory(owner).deploy(
- registry.address,
- );
+ mintingController = await new MintingController__factory(owner).deploy(await registry.getAddress());
+ signatureController = await new SignatureController__factory(owner).deploy(await registry.getAddress());
resolver = await new Resolver__factory(owner).deploy(
- registry.address,
- mintingController.address,
+ await registry.getAddress(),
+ await mintingController.getAddress(),
);
- await registry.addController(mintingController.address);
- await registry.addController(signatureController.address);
+ await registry.addController(await mintingController.getAddress());
+ await registry.addController(await signatureController.getAddress());
forwarder = await new ResolverForwarder__factory(owner).deploy(
- registry.address,
- resolver.address,
+ await registry.getAddress(),
+ await resolver.getAddress(),
);
- buildExecuteParams = buildExecuteFunc(
- resolver.interface,
- resolver.address,
- forwarder,
- );
+ buildExecuteParams = buildExecuteFunc(resolver.interface, await resolver.getAddress(), forwarder);
});
describe('nonceOf', () => {
@@ -90,12 +66,7 @@ describe('ResolverForwarder', () => {
expect(nonceF).to.be.equal(0);
expect(nonceF).to.be.equal(nonceR);
- const { req, signature } = await buildExecuteParams(
- 'reset(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('reset(uint256)', [tokenId], owner, tokenId);
await forwarder.execute(req, signature);
nonceF = await forwarder.nonceOf(tokenId);
@@ -105,47 +76,31 @@ describe('ResolverForwarder', () => {
});
it('should return nonce from default resolver when domain doesn\'t have own', async () => {
- const tokenId = await mintDomainWithoutResolver(
- 'test_foo_no_res',
- owner.address,
- );
+ const tokenId = await mintDomainWithoutResolver('test_foo_no_res', owner.address);
const nonceF = await forwarder.nonceOf(tokenId);
const nonceR = await resolver.nonceOf(tokenId);
expect(nonceF).to.be.equal(nonceR);
// should be reverted when domain resolver is not set
- await expect(registry.resolverOf(tokenId)).to.be.revertedWith('');
+ await expect(registry.resolverOf(tokenId)).to.be.revertedWithoutReason();
});
it('should return nonce from default resolver when resolver is non-contract', async () => {
- const tokenId = await mintDomain(
- 'test_foo_noc',
- owner.address,
- owner.address,
- );
+ const tokenId = await mintDomain('test_foo_noc', owner.address, owner.address);
expect(await forwarder.nonceOf(tokenId)).to.be.equal(0);
});
it('should return nonce from default resolver when resolver is wrong', async () => {
- const tokenId = await mintDomain(
- 'test_foo_nof',
- owner.address,
- forwarder.address,
- );
+ const tokenId = await mintDomain('test_foo_nof', owner.address, await forwarder.getAddress());
expect(await forwarder.nonceOf(tokenId)).to.be.equal(0);
});
it('should return nonce from default resolver when resolver is wrong 2', async () => {
const tokenId = await mintDomain('test_foo_nof2', owner.address);
- const { req, signature } = await buildExecuteParams(
- 'reset(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('reset(uint256)', [tokenId], owner, tokenId);
await forwarder.execute(req, signature);
- await registry.resolveTo(forwarder.address, tokenId);
+ await registry.resolveTo(await forwarder.getAddress(), tokenId);
expect(await forwarder.nonceOf(tokenId)).to.be.equal(1);
});
@@ -154,50 +109,28 @@ describe('ResolverForwarder', () => {
describe('verify', () => {
it('should verify successfully', async () => {
const tokenId = await mintDomain('test_foo_10', owner.address);
- const { req, signature } = await buildExecuteParams(
- 'reset(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('reset(uint256)', [tokenId], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(true);
});
it('should fail verification when unknown function call', async () => {
const tokenId = await mintDomain('test_foo_13', owner.address);
- const { req, signature } = await buildExecuteParams(
- 'get(string,uint256)',
- ['k', tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('get(string,uint256)', ['k', tokenId], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(false);
});
it('should fail verification when nonce is incorrect', async () => {
const tokenId = await mintDomain('test_foo_14', owner.address);
- const { req, signature } = await buildExecuteParams(
- 'reset(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('reset(uint256)', [tokenId], owner, tokenId);
- expect(
- await forwarder.verify({ ...req, nonce: 100 }, signature),
- ).to.be.equal(false);
+ expect(await forwarder.verify({ ...req, nonce: 100 }, signature)).to.be.equal(false);
});
it('should fail verification when signature used', async () => {
const tokenId = await mintDomain('test_foo_15', owner.address);
- const { req, signature } = await buildExecuteParams(
- 'reset(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('reset(uint256)', [tokenId], owner, tokenId);
await forwarder.execute(req, signature);
expect(await forwarder.verify(req, signature)).to.be.equal(false);
@@ -210,12 +143,7 @@ describe('ResolverForwarder', () => {
await resolver.set('k', 'v', tokenId);
expect(await resolver.get('k', tokenId)).to.be.equal('v');
- const { req, signature } = await buildExecuteParams(
- 'reset(uint256)',
- [tokenId],
- owner,
- tokenId,
- );
+ const { req, signature } = await buildExecuteParams('reset(uint256)', [tokenId], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.be.equal(true);
await forwarder.execute(req, signature);
diff --git a/test/metatx/UNSRegistryForwarder.test.ts b/test/metatx/UNSRegistryForwarder.test.ts
index c36cf625..c07c7774 100644
--- a/test/metatx/UNSRegistryForwarder.test.ts
+++ b/test/metatx/UNSRegistryForwarder.test.ts
@@ -1,7 +1,6 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { buildExecuteFunc, ExecuteFunc } from '../helpers/metatx';
import { UNSRegistryForwarderMock } from '../../types/contracts/mocks';
import { UNSRegistryForwarderMock__factory } from '../../types/factories/contracts/mocks';
@@ -20,26 +19,26 @@ describe('UNSRegistryForwarder', () => {
await forwarder.initialize();
- buildExecuteParams = buildExecuteFunc(forwarder.interface, forwarder.address, forwarder);
+ buildExecuteParams = buildExecuteFunc(forwarder.interface, await forwarder.getAddress(), forwarder);
});
describe('Verify', () => {
it('should verify signature', async () => {
- const tokenId = BigNumber.from(132);
+ const tokenId = BigInt(132);
const { req, signature } = await buildExecuteParams('nonceOf(uint256)', [tokenId], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.be.eq(true);
});
it('should verify signature when tokenId is empty', async () => {
- const tokenId = BigNumber.from(132);
+ const tokenId = BigInt(132);
const { req, signature } = await buildExecuteParams('nonceOf(uint256)', [tokenId], owner, tokenId);
expect(await forwarder.verify(req, signature)).to.be.eq(true);
});
it('should fail verification when signature is tampered', async () => {
- const tokenId = BigNumber.from(132);
+ const tokenId = BigInt(132);
const { req, signature } = await buildExecuteParams('nonceOf(uint256)', [tokenId], owner, tokenId);
const tamperedReq = { ...req, nonce: 100 };
@@ -49,13 +48,13 @@ describe('UNSRegistryForwarder', () => {
describe('Execute', () => {
it('should execute when signature is valid', async () => {
- const tokenId = BigNumber.from(132);
+ const tokenId = BigInt(132);
const nonce = await forwarder.nonceOf(tokenId);
const { req, signature } = await buildExecuteParams('nonceOf(uint256)', [tokenId], owner, tokenId);
await forwarder.execute(req, signature);
- expect(await forwarder.nonceOf(tokenId)).to.be.equal(nonce.add(1));
+ expect(await forwarder.nonceOf(tokenId)).to.be.equal(nonce + BigInt(1));
});
// NOTE: When tokenId is empty, req.from is used for nonce verification
@@ -65,7 +64,7 @@ describe('UNSRegistryForwarder', () => {
const { req, signature } = await buildExecuteParams('nonceOf(uint256)', [tokenId], owner, tokenId);
await forwarder.execute(req, signature);
- expect(await forwarder.nonceOf(tokenId)).to.be.equal(nonce.add(1));
+ expect(await forwarder.nonceOf(tokenId)).to.be.equal(nonce + BigInt(1));
});
it('should fail execution when signature is tampered', async () => {
@@ -73,9 +72,9 @@ describe('UNSRegistryForwarder', () => {
const nonce = await forwarder.nonceOf(tokenId);
const { req, signature } = await buildExecuteParams('nonceOf(uint256)', [tokenId], owner, tokenId);
- await expect(
- forwarder.execute({ ...req, nonce: nonce.add(1) }, signature),
- ).to.be.revertedWith('UNSRegistryForwarder: SIGNATURE_INVALID');
+ await expect(forwarder.execute({ ...req, nonce: nonce + BigInt(1) }, signature)).to.be.revertedWith(
+ 'UNSRegistryForwarder: SIGNATURE_INVALID',
+ );
});
});
});
diff --git a/test/roles/MinterRole.test.ts b/test/roles/MinterRole.test.ts
index e80da3bc..ffce666c 100644
--- a/test/roles/MinterRole.test.ts
+++ b/test/roles/MinterRole.test.ts
@@ -1,7 +1,6 @@
import { ethers } from 'hardhat';
import { expect } from 'chai';
-import { BigNumber } from 'ethers';
-import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
+import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { MinterRoleMock__factory } from '../../types/factories/contracts/mocks';
import { MinterRoleMock } from '../../types/contracts/mocks';
import { ZERO_ADDRESS } from './../helpers/constants';
@@ -35,9 +34,9 @@ describe('MinterRole', () => {
});
it('revert adding minter account by non-owner account', async () => {
- await expect(
- minterRole.connect(minter).addMinter(minter2.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).addMinter(minter2.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
it('should add multiple minter accounts', async () => {
@@ -48,9 +47,9 @@ describe('MinterRole', () => {
});
it('revert adding multiple minter accounts by non-owner account', async () => {
- await expect(
- minterRole.connect(minter).addMinters([minter2.address, minter3.address]),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).addMinters([minter2.address, minter3.address])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
it('should remove minter account', async () => {
@@ -60,9 +59,9 @@ describe('MinterRole', () => {
});
it('revert remove minter account by non-owner account', async () => {
- await expect(
- minterRole.connect(minter).removeMinter(minter.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).removeMinter(minter.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
it('should remove multiple minter accounts', async () => {
@@ -72,9 +71,9 @@ describe('MinterRole', () => {
});
it('revert removing multiple minter accounts by non-owner account', async () => {
- await expect(
- minterRole.connect(minter).removeMinters([minter.address]),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).removeMinters([minter.address])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
});
@@ -96,41 +95,41 @@ describe('MinterRole', () => {
it('revert managing minters when ownership transferred', async () => {
await minterRole.connect(coinbase).transferOwnership(receiver.address);
- await expect(
- minterRole.connect(minter).addMinter(minter2.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).addMinter(minter2.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
- await expect(
- minterRole.connect(minter).addMinters([minter2.address]),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).addMinters([minter2.address])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
- await expect(
- minterRole.connect(minter).removeMinter(minter.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).removeMinter(minter.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
- await expect(
- minterRole.connect(minter).removeMinters([minter.address]),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).removeMinters([minter.address])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
it('revert adding minter when ownership renounced', async () => {
await minterRole.connect(coinbase).renounceOwnership();
- await expect(
- minterRole.connect(minter).addMinter(minter2.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).addMinter(minter2.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
- await expect(
- minterRole.connect(minter).addMinters([minter2.address]),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).addMinters([minter2.address])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
- await expect(
- minterRole.connect(minter).removeMinter(minter.address),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).removeMinter(minter.address)).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
- await expect(
- minterRole.connect(minter).removeMinters([minter.address]),
- ).to.be.revertedWith('Ownable: caller is not the owner');
+ await expect(minterRole.connect(minter).removeMinters([minter.address])).to.be.revertedWith(
+ 'Ownable: caller is not the owner',
+ );
});
});
@@ -140,9 +139,7 @@ describe('MinterRole', () => {
expect(await minterRole.isMinter(minter.address)).to.be.equal(false);
- await expect(
- minterRole.connect(minter).olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.connect(minter).olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
});
it('should renounce minter account 2', async () => {
@@ -152,9 +149,9 @@ describe('MinterRole', () => {
expect(await minterRole.isMinter(coinbase.address)).to.be.equal(false);
- await expect(
- minterRole.connect(coinbase).olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.connect(coinbase).olnyMinterFunc()).to.be.revertedWith(
+ 'MinterRole: CALLER_IS_NOT_MINTER',
+ );
});
it('should renounce minter account 3', async () => {
@@ -164,98 +161,86 @@ describe('MinterRole', () => {
expect(await minterRole.isMinter(faucet.address)).to.be.equal(false);
- await expect(
- minterRole.connect(faucet).olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.connect(faucet).olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
});
});
describe('close minter account', () => {
it('revert when closing by non-minter account', async () => {
- await expect(
- minterRole.connect(receiver).closeMinter(receiver.address),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.connect(receiver).closeMinter(receiver.address)).to.be.revertedWith(
+ 'MinterRole: CALLER_IS_NOT_MINTER',
+ );
});
it('revert when zero account', async () => {
- await expect(
- minterRole.connect(minter).closeMinter(ZERO_ADDRESS),
- ).to.be.revertedWith('MinterRole: RECEIVER_IS_EMPTY');
+ await expect(minterRole.connect(minter).closeMinter(ZERO_ADDRESS)).to.be.revertedWith(
+ 'MinterRole: RECEIVER_IS_EMPTY',
+ );
});
it('close minter without forwarding funds', async () => {
- const initBalance = await faucet.getBalance();
+ const initBalance = await ethers.provider.getBalance(faucet.address);
await minterRole.connect(minter).closeMinter(faucet.address, { value: 0 });
- await expect(
- minterRole.olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
- expect(await faucet.getBalance()).to.be.equal(initBalance);
+ expect(await ethers.provider.getBalance(faucet.address)).to.be.equal(initBalance);
});
it('close minter with forwarding funds', async () => {
- const value = 1;
- const initBalance = await faucet.getBalance();
+ const value = BigInt(1);
+ const initBalance = await ethers.provider.getBalance(faucet.address);
await minterRole.connect(minter).closeMinter(faucet.address, { value });
- await expect(
- minterRole.olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
- expect(await faucet.getBalance()).to.be.equal(BigNumber.from(initBalance).add(value));
+ expect(await ethers.provider.getBalance(faucet.address)).to.be.equal(initBalance + value);
});
});
describe('rotate minter account', () => {
it('revert when rotateing by non-minter account', async () => {
- await expect(
- minterRole.connect(receiver).rotateMinter(receiver.address),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.connect(receiver).rotateMinter(receiver.address)).to.be.revertedWith(
+ 'MinterRole: CALLER_IS_NOT_MINTER',
+ );
});
it('revert when zero account', async () => {
- await expect(
- minterRole.connect(minter).rotateMinter(ZERO_ADDRESS),
- ).to.be.revertedWith('MinterRole: RECEIVER_IS_EMPTY');
+ await expect(minterRole.connect(minter).rotateMinter(ZERO_ADDRESS)).to.be.revertedWith(
+ 'MinterRole: RECEIVER_IS_EMPTY',
+ );
});
it('rotate minter without defining value', async () => {
- const initBalance = await receiver.getBalance();
+ const initBalance = await ethers.provider.getBalance(receiver.address);
await minterRole.connect(minter).rotateMinter(receiver.address);
- await expect(
- minterRole.olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
- expect(await receiver.getBalance()).to.be.equal(initBalance);
+ expect(await ethers.provider.getBalance(receiver.address)).to.be.equal(initBalance);
});
it('rotate minter without forwarding funds', async () => {
- const initBalance = await receiver.getBalance();
+ const initBalance = await ethers.provider.getBalance(receiver.address);
await minterRole.connect(minter).rotateMinter(receiver.address, { value: 0 });
- await expect(
- minterRole.olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
- expect(await receiver.getBalance()).to.be.equal(initBalance);
+ expect(await ethers.provider.getBalance(receiver.address)).to.be.equal(initBalance);
});
it('rotate minter with forwarding funds', async () => {
- const value = 3;
- const initBalance = await receiver.getBalance();
+ const value = BigInt(3);
+ const initBalance = await ethers.provider.getBalance(receiver.address);
await minterRole.connect(minter).rotateMinter(receiver.address, { value });
- await expect(
- minterRole.olnyMinterFunc(),
- ).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
+ await expect(minterRole.olnyMinterFunc()).to.be.revertedWith('MinterRole: CALLER_IS_NOT_MINTER');
- expect(await receiver.getBalance()).to.be.equal(BigNumber.from(initBalance).add(value));
+ expect(await ethers.provider.getBalance(receiver.address)).to.be.equal(initBalance + value);
});
});
});
diff --git a/tsconfig.json b/tsconfig.json
index 1987cb48..ce78068b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -25,9 +25,10 @@
"./uns-config.json"
],
"include": [
+ "./types/**/*.ts",
"./sandbox/**/*.ts",
"./src/*.ts",
- "./types/**/*.ts",
+ "./scripts/*.ts",
"./test/**/*.ts"
]
}
diff --git a/yarn.lock b/yarn.lock
index 1144892c..fbeff975 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,6 +5,61 @@ __metadata:
version: 6
cacheKey: 8
+"@adraffy/ens-normalize@npm:1.10.0":
+ version: 1.10.0
+ resolution: "@adraffy/ens-normalize@npm:1.10.0"
+ checksum: af0540f963a2632da2bbc37e36ea6593dcfc607b937857133791781e246d47f870d5e3d21fa70d5cfe94e772c284588c81ea3f5b7f4ea8fbb824369444e4dbcb
+ languageName: node
+ linkType: hard
+
+"@adraffy/ens-normalize@npm:1.10.1":
+ version: 1.10.1
+ resolution: "@adraffy/ens-normalize@npm:1.10.1"
+ checksum: 0836f394ea256972ec19a0b5e78cb7f5bcdfd48d8a32c7478afc94dd53ae44c04d1aa2303d7f3077b4f3ac2323b1f557ab9188e8059978748fdcd83e04a80dcc
+ languageName: node
+ linkType: hard
+
+"@aws-crypto/sha256-js@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@aws-crypto/sha256-js@npm:1.2.2"
+ dependencies:
+ "@aws-crypto/util": ^1.2.2
+ "@aws-sdk/types": ^3.1.0
+ tslib: ^1.11.1
+ checksum: b6aeb71f88ecc219c5473803345bb15150ecd056a337582638dd60fb2344e0ff63908c684ef55268b249290fe0776e8e6fc830605f0aad850ff325b9cfe0dc6a
+ languageName: node
+ linkType: hard
+
+"@aws-crypto/util@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "@aws-crypto/util@npm:1.2.2"
+ dependencies:
+ "@aws-sdk/types": ^3.1.0
+ "@aws-sdk/util-utf8-browser": ^3.0.0
+ tslib: ^1.11.1
+ checksum: 54d72ce4945b52f3fcbcb62574a55bc038cc3ff165742f340cabca1bdc979faf69c97709cf56daf434e4ad69e33582a04a64da33b4e4e13b25c6ff67f8abe5ae
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/types@npm:^3.1.0":
+ version: 3.535.0
+ resolution: "@aws-sdk/types@npm:3.535.0"
+ dependencies:
+ "@smithy/types": ^2.12.0
+ tslib: ^2.6.2
+ checksum: 3f735c78ea3a6f37d05387286f6d18b0e5deb41442095bd2f7c27b000659962872d1c801fa8484a6ac4b7d2725b2e176dc628c3fa2a903a3141d4be76488d48f
+ languageName: node
+ linkType: hard
+
+"@aws-sdk/util-utf8-browser@npm:^3.0.0":
+ version: 3.259.0
+ resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0"
+ dependencies:
+ tslib: ^2.3.1
+ checksum: b6a1e580da1c9b62c749814182a7649a748ca4253edb4063aa521df97d25b76eae3359eb1680b86f71aac668e05cc05c514379bca39ebf4ba998ae4348412da8
+ languageName: node
+ linkType: hard
+
"@babel/code-frame@npm:^7.0.0":
version: 7.12.13
resolution: "@babel/code-frame@npm:7.12.13"
@@ -32,6 +87,13 @@ __metadata:
languageName: node
linkType: hard
+"@colors/colors@npm:1.5.0":
+ version: 1.5.0
+ resolution: "@colors/colors@npm:1.5.0"
+ checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425
+ languageName: node
+ linkType: hard
+
"@cspotcode/source-map-support@npm:^0.8.0":
version: 0.8.1
resolution: "@cspotcode/source-map-support@npm:0.8.1"
@@ -79,26 +141,6 @@ __metadata:
languageName: node
linkType: hard
-"@ensdomains/ens@npm:^0.4.4":
- version: 0.4.5
- resolution: "@ensdomains/ens@npm:0.4.5"
- dependencies:
- bluebird: ^3.5.2
- eth-ens-namehash: ^2.0.8
- solc: ^0.4.20
- testrpc: 0.0.1
- web3-utils: ^1.0.0-beta.31
- checksum: 3b4f6e34f3376f1b3cc60927d53d5951c4da0a9ff0f8856aaedba5a73bceccb7c08632bf6709b3bb9e43d6e83223d23928f574fc62dec12b2b1a692bcd3d45c6
- languageName: node
- linkType: hard
-
-"@ensdomains/resolver@npm:^0.2.4":
- version: 0.2.4
- resolution: "@ensdomains/resolver@npm:0.2.4"
- checksum: 3827a3430cc8935a0839dac9dafcfa6011c6f71af229ff91cbc6cdcbaa35d20c6dbb1a8a901cdb00e66428578ce1675bd6fe6901778b5d0d828321fbec9e0f7f
- languageName: node
- linkType: hard
-
"@ensdomains/solsha1@npm:0.0.3":
version: 0.0.3
resolution: "@ensdomains/solsha1@npm:0.0.3"
@@ -125,69 +167,6 @@ __metadata:
languageName: node
linkType: hard
-"@ethereum-waffle/chai@npm:^3.4.4":
- version: 3.4.4
- resolution: "@ethereum-waffle/chai@npm:3.4.4"
- dependencies:
- "@ethereum-waffle/provider": ^3.4.4
- ethers: ^5.5.2
- checksum: b2b9b6b839c3f6b4abf8489fe50549e6fda07bd81ae8e4250b20d9a76ce4a729ef47c741364387b1d2dbc7fac14b46a5d6dcc4d404344b9cce5f9698ff012251
- languageName: node
- linkType: hard
-
-"@ethereum-waffle/compiler@npm:^3.4.4":
- version: 3.4.4
- resolution: "@ethereum-waffle/compiler@npm:3.4.4"
- dependencies:
- "@resolver-engine/imports": ^0.3.3
- "@resolver-engine/imports-fs": ^0.3.3
- "@typechain/ethers-v5": ^2.0.0
- "@types/mkdirp": ^0.5.2
- "@types/node-fetch": ^2.5.5
- ethers: ^5.0.1
- mkdirp: ^0.5.1
- node-fetch: ^2.6.1
- solc: ^0.6.3
- ts-generator: ^0.1.1
- typechain: ^3.0.0
- checksum: ebffca732969253934c1e8cca6cc1f12d6294f848d44e6595af81460bc3230bc69096d0965b9deb2c7eecd472a1d536d8cbe993f95bfc76fbbe2114ddbabff70
- languageName: node
- linkType: hard
-
-"@ethereum-waffle/ens@npm:^3.4.4":
- version: 3.4.4
- resolution: "@ethereum-waffle/ens@npm:3.4.4"
- dependencies:
- "@ensdomains/ens": ^0.4.4
- "@ensdomains/resolver": ^0.2.4
- ethers: ^5.5.2
- checksum: 71d93c09ef3ab89a46f05b9e2a06e129e2109d160c3a819e4bf3b4414fc4707e7fc646c87c1d82f9ba769dc1ac3c6f4934fd72499654fcfc9db4abf46c21d118
- languageName: node
- linkType: hard
-
-"@ethereum-waffle/mock-contract@npm:^3.4.4":
- version: 3.4.4
- resolution: "@ethereum-waffle/mock-contract@npm:3.4.4"
- dependencies:
- "@ethersproject/abi": ^5.5.0
- ethers: ^5.5.2
- checksum: 6e5c62b342e424cd1937f2f7eb424056ad143b238320880f378c0db61c6d694617f968687321a2f030d546aa5b4dde42681cbb419589d7f87452c82844a4488b
- languageName: node
- linkType: hard
-
-"@ethereum-waffle/provider@npm:^3.4.4":
- version: 3.4.4
- resolution: "@ethereum-waffle/provider@npm:3.4.4"
- dependencies:
- "@ethereum-waffle/ens": ^3.4.4
- ethers: ^5.5.2
- ganache-core: ^2.13.2
- patch-package: ^6.2.2
- postinstall-postinstall: ^2.1.0
- checksum: 9e251d7b0198c22e337b18368e3893de766a821e818702dbef0e0d603bad550c6e3a29676cff11272bc82762833586ee9659593d957ec8759a8cc93c2b0f3d00
- languageName: node
- linkType: hard
-
"@ethereumjs/common@npm:2.5.0":
version: 2.5.0
resolution: "@ethereumjs/common@npm:2.5.0"
@@ -281,7 +260,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.0-beta.146, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.5.0, @ethersproject/abi@npm:^5.6.3, @ethersproject/abi@npm:^5.7.0":
+"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.6.3, @ethersproject/abi@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/abi@npm:5.7.0"
dependencies:
@@ -606,7 +585,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/transactions@npm:5.7.0, @ethersproject/transactions@npm:^5.0.0-beta.135, @ethersproject/transactions@npm:^5.6.2, @ethersproject/transactions@npm:^5.7.0":
+"@ethersproject/transactions@npm:5.7.0, @ethersproject/transactions@npm:^5.6.2, @ethersproject/transactions@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/transactions@npm:5.7.0"
dependencies:
@@ -623,7 +602,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/units@npm:5.7.0":
+"@ethersproject/units@npm:5.7.0, @ethersproject/units@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/units@npm:5.7.0"
dependencies:
@@ -683,6 +662,13 @@ __metadata:
languageName: node
linkType: hard
+"@fastify/busboy@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "@fastify/busboy@npm:2.1.1"
+ checksum: 42c32ef75e906c9a4809c1e1930a5ca6d4ddc8d138e1a8c8ba5ea07f997db32210617d23b2e4a85fe376316a41a1a0439fc6ff2dedf5126d96f45a9d80754fb2
+ languageName: node
+ linkType: hard
+
"@gar/promisify@npm:^1.1.3":
version: 1.1.3
resolution: "@gar/promisify@npm:1.1.3"
@@ -715,6 +701,20 @@ __metadata:
languageName: node
linkType: hard
+"@isaacs/cliui@npm:^8.0.2":
+ version: 8.0.2
+ resolution: "@isaacs/cliui@npm:8.0.2"
+ dependencies:
+ string-width: ^5.1.2
+ string-width-cjs: "npm:string-width@^4.2.0"
+ strip-ansi: ^7.0.1
+ strip-ansi-cjs: "npm:strip-ansi@^6.0.1"
+ wrap-ansi: ^8.1.0
+ wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0"
+ checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb
+ languageName: node
+ linkType: hard
+
"@jridgewell/resolve-uri@npm:^3.0.3":
version: 3.1.0
resolution: "@jridgewell/resolve-uri@npm:3.1.0"
@@ -768,6 +768,24 @@ __metadata:
languageName: node
linkType: hard
+"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0":
+ version: 1.2.0
+ resolution: "@noble/curves@npm:1.2.0"
+ dependencies:
+ "@noble/hashes": 1.3.2
+ checksum: bb798d7a66d8e43789e93bc3c2ddff91a1e19fdb79a99b86cd98f1e5eff0ee2024a2672902c2576ef3577b6f282f3b5c778bebd55761ddbb30e36bf275e83dd0
+ languageName: node
+ linkType: hard
+
+"@noble/curves@npm:1.3.0, @noble/curves@npm:~1.3.0":
+ version: 1.3.0
+ resolution: "@noble/curves@npm:1.3.0"
+ dependencies:
+ "@noble/hashes": 1.3.3
+ checksum: b65342ee66c4a440eee2978524412eabba9a9efdd16d6370e15218c6a7d80bddf35e66bb57ed52c0dfd32cb9a717b439ab3a72db618f1a0066dfebe3fd12a421
+ languageName: node
+ linkType: hard
+
"@noble/hashes@npm:1.1.2, @noble/hashes@npm:~1.1.1":
version: 1.1.2
resolution: "@noble/hashes@npm:1.1.2"
@@ -782,13 +800,20 @@ __metadata:
languageName: node
linkType: hard
-"@noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.1":
+"@noble/hashes@npm:1.3.2, @noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.1":
version: 1.3.2
resolution: "@noble/hashes@npm:1.3.2"
checksum: fe23536b436539d13f90e4b9be843cc63b1b17666a07634a2b1259dded6f490be3d050249e6af98076ea8f2ea0d56f578773c2197f2aa0eeaa5fba5bc18ba474
languageName: node
linkType: hard
+"@noble/hashes@npm:1.3.3, @noble/hashes@npm:~1.3.2":
+ version: 1.3.3
+ resolution: "@noble/hashes@npm:1.3.3"
+ checksum: 8a6496d1c0c64797339bc694ad06cdfaa0f9e56cd0c3f68ae3666cfb153a791a55deb0af9c653c7ed2db64d537aa3e3054629740d2f2338bb1dcb7ab60cd205b
+ languageName: node
+ linkType: hard
+
"@noble/secp256k1@npm:1.6.3, @noble/secp256k1@npm:~1.6.0":
version: 1.6.3
resolution: "@noble/secp256k1@npm:1.6.3"
@@ -823,246 +848,316 @@ __metadata:
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-block@npm:^4.0.0":
- version: 4.0.0
- resolution: "@nomicfoundation/ethereumjs-block@npm:4.0.0"
+"@nomicfoundation/ethereumjs-block@npm:5.0.4":
+ version: 5.0.4
+ resolution: "@nomicfoundation/ethereumjs-block@npm:5.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-trie": ^5.0.0
- "@nomicfoundation/ethereumjs-tx": ^4.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-trie": 6.0.4
+ "@nomicfoundation/ethereumjs-tx": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
ethereum-cryptography: 0.1.3
- checksum: a57a33dda7724f0a46ef2e0ca0dbb1b427268f4135e8c23eee9ab5730a79369d52122faba7a010d71bca3046f7ce644ed95e4a34d5f2221ecaa5d94886d84b11
+ checksum: fe60b3dc31e0991eb6659f838485384e52992b72dd97a42c7bec320ea9902d1200352b5690a222442f77c5447cee4dd834fc25c53247aed5aa3130b0ab7e3c53
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-blockchain@npm:^6.0.0":
- version: 6.0.0
- resolution: "@nomicfoundation/ethereumjs-blockchain@npm:6.0.0"
- dependencies:
- "@nomicfoundation/ethereumjs-block": ^4.0.0
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-ethash": ^2.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-trie": ^5.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
- abstract-level: ^1.0.3
+"@nomicfoundation/ethereumjs-blockchain@npm:7.0.4":
+ version: 7.0.4
+ resolution: "@nomicfoundation/ethereumjs-blockchain@npm:7.0.4"
+ dependencies:
+ "@nomicfoundation/ethereumjs-block": 5.0.4
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-ethash": 3.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-trie": 6.0.4
+ "@nomicfoundation/ethereumjs-tx": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
debug: ^4.3.3
ethereum-cryptography: 0.1.3
- level: ^8.0.0
- lru-cache: ^5.1.1
- memory-level: ^1.0.0
- checksum: 5605c1d249924321de98c1728b5b832ee6488b690a42c829db21afa96f5c152c73afdec6aa4758cb9b24ec7ac19ec9f3146b63cf837e1b91d364e4c37b497881
+ lru-cache: ^10.0.0
+ checksum: 0d35f28ed5ef356557b974b91898b6f61292a3e0fd3d1b1c8924250a59c7f583939453184f5b54f7cd2a2d8c055cdc6f3b8588c7b22f839beaa4ba69638ba2c8
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-common@npm:^3.0.0":
- version: 3.0.0
- resolution: "@nomicfoundation/ethereumjs-common@npm:3.0.0"
+"@nomicfoundation/ethereumjs-common@npm:4.0.4":
+ version: 4.0.4
+ resolution: "@nomicfoundation/ethereumjs-common@npm:4.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-util": ^8.0.0
- crc-32: ^1.2.0
- checksum: 6a62908e5ccd8a4f56b841bd6ba9eef21dffafdd505f18b6b886d86ba4287cd12a2c632d521c5fddf2c6fca5a840f580d7601d89820098f6c1f8311db41e496b
+ "@nomicfoundation/ethereumjs-util": 9.0.4
+ checksum: ce3f6e4ae15b976efdb7ccda27e19aadb62b5ffee209f9503e68b4fd8633715d4d697c0cc10ccd35f5e4e977edd05100d0f214e28880ec64fff77341dc34fcdf
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-ethash@npm:^2.0.0":
- version: 2.0.0
- resolution: "@nomicfoundation/ethereumjs-ethash@npm:2.0.0"
+"@nomicfoundation/ethereumjs-ethash@npm:3.0.4":
+ version: 3.0.4
+ resolution: "@nomicfoundation/ethereumjs-ethash@npm:3.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-block": ^4.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
- abstract-level: ^1.0.3
- bigint-crypto-utils: ^3.0.23
+ "@nomicfoundation/ethereumjs-block": 5.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
+ bigint-crypto-utils: ^3.2.2
ethereum-cryptography: 0.1.3
- checksum: 60133df2d450179f2ab26e8784b1bd79b37411bb047a7dace655499749893750f0f8d6d573f182ebcf4dba35f2da6301b0ad1b80dbe7637bb0d5155ccb189fda
+ checksum: 52c2b003078be233929ae8355e8d2e0949ac66f75312a47725790b87111293de4303750a446f10eec22f5ffd9a2accb3f17fff8e6a85c36b47786e25242dad66
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-evm@npm:^1.0.0":
- version: 1.0.0
- resolution: "@nomicfoundation/ethereumjs-evm@npm:1.0.0"
+"@nomicfoundation/ethereumjs-evm@npm:2.0.4":
+ version: 2.0.4
+ resolution: "@nomicfoundation/ethereumjs-evm@npm:2.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
- "@types/async-eventemitter": ^0.2.1
- async-eventemitter: ^0.2.4
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-statemanager": 2.0.4
+ "@nomicfoundation/ethereumjs-tx": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
+ "@types/debug": ^4.1.9
debug: ^4.3.3
ethereum-cryptography: 0.1.3
- mcl-wasm: ^0.7.1
- rustbn.js: ~0.2.0
- checksum: d1ffaa1a02c1f78099a5cfe802f2738c498063e383a51ede4b7194c809d7bdb8d322edfea4d83090c8c1b83b42fa9febbd571c35f5cf27f18d47fb664f3ab61e
+ rustbn-wasm: ^0.2.0
+ checksum: db25327f7bda067cd0726a1bc7937c1c0405602fbe692abaa804f44e4fe9d2dcce103d50a767c0f3dc3067b38c35f468e997789234d2a4aef0ad31a36ad6d916
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-rlp@npm:^4.0.0, @nomicfoundation/ethereumjs-rlp@npm:^4.0.0-beta.2":
- version: 4.0.0
- resolution: "@nomicfoundation/ethereumjs-rlp@npm:4.0.0"
+"@nomicfoundation/ethereumjs-rlp@npm:5.0.4":
+ version: 5.0.4
+ resolution: "@nomicfoundation/ethereumjs-rlp@npm:5.0.4"
bin:
- rlp: bin/rlp
- checksum: b358d239e5a24884f0446d52159c8115b0eb1d6907179dc968df5054dccea7eff72f2d12522c911b6e08bb4b5d3f5f8e1d86a45cb1a24a4831cbb109743d4407
+ rlp: bin/rlp.cjs
+ checksum: ee2c2e5776c73801dc5ed636f4988b599b4563c2d0037da542ea57eb237c69dd1ac555f6bcb5e06f70515b6459779ba0d68252a6e105132b4659ab4bf62919b0
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-statemanager@npm:^1.0.0":
- version: 1.0.0
- resolution: "@nomicfoundation/ethereumjs-statemanager@npm:1.0.0"
+"@nomicfoundation/ethereumjs-statemanager@npm:2.0.4":
+ version: 2.0.4
+ resolution: "@nomicfoundation/ethereumjs-statemanager@npm:2.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-trie": ^5.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-trie": 6.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
debug: ^4.3.3
ethereum-cryptography: 0.1.3
- functional-red-black-tree: ^1.0.1
- checksum: fad02ea922fbe25328186ea2eb43bdba63def57822f373ce213be26125ee8d3c90cf3b6f626e6876637cdb842e3c2b788fb8891fcf1aca3fd655e1c0d9a7e936
+ js-sdsl: ^4.1.4
+ lru-cache: ^10.0.0
+ peerDependencies:
+ "@nomicfoundation/ethereumjs-verkle": 0.0.2
+ peerDependenciesMeta:
+ "@nomicfoundation/ethereumjs-verkle":
+ optional: true
+ checksum: 585dc67872d37f39310d85fc5c1b3179691412b9450411422ad6468017d8723e5192d22447c927d8403f7b6e95c1ecf7b48467edc440e50f15b5ac81e1fecd1d
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-trie@npm:^5.0.0":
- version: 5.0.0
- resolution: "@nomicfoundation/ethereumjs-trie@npm:5.0.0"
+"@nomicfoundation/ethereumjs-trie@npm:6.0.4":
+ version: 6.0.4
+ resolution: "@nomicfoundation/ethereumjs-trie@npm:6.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
+ "@types/readable-stream": ^2.3.13
ethereum-cryptography: 0.1.3
+ lru-cache: ^10.0.0
readable-stream: ^3.6.0
- checksum: 468de7ffe05473f0f05940e74bba01652dd9a4ff155a13e0a5395551e53557afde47d98f496f6323824bccfaeee8de4e22fef9b7f88d3bbd4e97cadc54e2e4f9
+ checksum: 93a6be32657e67e74714fe557dbaf606d92c5cd1571c60f249295c27b0ab24b64e2e59cf211c214f8ba403d6475d23ed8c557be9077b92b2317e44384de8a6bf
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-tx@npm:^4.0.0":
- version: 4.0.0
- resolution: "@nomicfoundation/ethereumjs-tx@npm:4.0.0"
+"@nomicfoundation/ethereumjs-tx@npm:5.0.4":
+ version: 5.0.4
+ resolution: "@nomicfoundation/ethereumjs-tx@npm:5.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
ethereum-cryptography: 0.1.3
- checksum: d2c0e3384aaa9f3b58232c531a4efd524be257e7257f23c3beed6ec9cf5fba6345cb632b3a464ae0a2aa99fd9e4a2d3e2d5c501593c5466e6ab629f05255791e
+ peerDependencies:
+ c-kzg: ^2.1.2
+ peerDependenciesMeta:
+ c-kzg:
+ optional: true
+ checksum: 0f1c87716682ccbcf4d92ffc6cf8ab557e658b90319d82be3219a091a736859f8803c73c98e4863682e3e86d264751c472d33ff6d3c3daf4e75b5f01d0af8fa3
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-util@npm:^8.0.0":
- version: 8.0.0
- resolution: "@nomicfoundation/ethereumjs-util@npm:8.0.0"
+"@nomicfoundation/ethereumjs-util@npm:9.0.4":
+ version: 9.0.4
+ resolution: "@nomicfoundation/ethereumjs-util@npm:9.0.4"
dependencies:
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0-beta.2
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
ethereum-cryptography: 0.1.3
- checksum: a39be4c8d3dea4fae1e969b47138d718cac31bf248bb517766a42c97ca5850ca3ddf16c66d8e404fa0a0363fd6898ae2e716d75da2ed4113e610d26026e4cefb
+ peerDependencies:
+ c-kzg: ^2.1.2
+ peerDependenciesMeta:
+ c-kzg:
+ optional: true
+ checksum: 754439f72b11cad2d8986707ad020077dcc763c4055f73e2668a0b4cadb22aa4407faa9b3c587d9eb5b97ac337afbe037eb642bc1d5a16197284f83db3462cbe
languageName: node
linkType: hard
-"@nomicfoundation/ethereumjs-vm@npm:^6.0.0":
- version: 6.0.0
- resolution: "@nomicfoundation/ethereumjs-vm@npm:6.0.0"
- dependencies:
- "@nomicfoundation/ethereumjs-block": ^4.0.0
- "@nomicfoundation/ethereumjs-blockchain": ^6.0.0
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-evm": ^1.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-statemanager": ^1.0.0
- "@nomicfoundation/ethereumjs-trie": ^5.0.0
- "@nomicfoundation/ethereumjs-tx": ^4.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
- "@types/async-eventemitter": ^0.2.1
- async-eventemitter: ^0.2.4
+"@nomicfoundation/ethereumjs-verkle@npm:0.0.2":
+ version: 0.0.2
+ resolution: "@nomicfoundation/ethereumjs-verkle@npm:0.0.2"
+ dependencies:
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
+ lru-cache: ^10.0.0
+ rust-verkle-wasm: ^0.0.1
+ checksum: e075d7a2475670bb7039e715f0edce849ef3947aae2c7d0b658f058686ac9df3863499a5324717beff5d8f20a751f85ba1449942af818ec6772d775dcbb011d6
+ languageName: node
+ linkType: hard
+
+"@nomicfoundation/ethereumjs-vm@npm:7.0.4":
+ version: 7.0.4
+ resolution: "@nomicfoundation/ethereumjs-vm@npm:7.0.4"
+ dependencies:
+ "@nomicfoundation/ethereumjs-block": 5.0.4
+ "@nomicfoundation/ethereumjs-blockchain": 7.0.4
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-evm": 2.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-statemanager": 2.0.4
+ "@nomicfoundation/ethereumjs-trie": 6.0.4
+ "@nomicfoundation/ethereumjs-tx": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
debug: ^4.3.3
ethereum-cryptography: 0.1.3
- functional-red-black-tree: ^1.0.1
- mcl-wasm: ^0.7.1
- rustbn.js: ~0.2.0
- checksum: 3c0e10b377579d74bfdcfd056d5545b605f767982e41038d036c8219a50fe3564c7f146fdd04385d64f48f94b9d95c378d7a37955c5100c46c568a29f54ea737
+ checksum: 6f3b2507189b236e65dd3eaf3f072385a0252b826a348fe6ea5532a810bc2b6aab11d8ccec2cdfed629995e61e4c82c6e8765ac5794154772064ba3f18397407
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.0.3"
+"@nomicfoundation/hardhat-chai-matchers@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.0.6"
+ dependencies:
+ "@types/chai-as-promised": ^7.1.3
+ chai-as-promised: ^7.1.1
+ deep-eql: ^4.0.1
+ ordinal: ^1.0.3
+ peerDependencies:
+ "@nomicfoundation/hardhat-ethers": ^3.0.0
+ chai: ^4.2.0
+ ethers: ^6.1.0
+ hardhat: ^2.9.4
+ checksum: 050bf0cf2f33b480bc93912330929649b0e08a0f9405bbadda66239bfeedaee7f2cfc7e34ed03540cb381b41925fc9dd4ec9a36088ccfa8d7461259d8c78003d
+ languageName: node
+ linkType: hard
+
+"@nomicfoundation/hardhat-ethers@npm:^3.0.0":
+ version: 3.0.5
+ resolution: "@nomicfoundation/hardhat-ethers@npm:3.0.5"
+ dependencies:
+ debug: ^4.1.1
+ lodash.isequal: ^4.5.0
+ peerDependencies:
+ ethers: ^6.1.0
+ hardhat: ^2.0.0
+ checksum: 34b092dfec68f8d8673c96af717660327edc814bc5c9cdb5bc1f82d5bde2b18bc9b9d3499a632784a3d4f2505ac174217e55d31b546b7eaa77a5bb30b3c80bb4
+ languageName: node
+ linkType: hard
+
+"@nomicfoundation/hardhat-verify@npm:^1.1.0":
+ version: 1.1.1
+ resolution: "@nomicfoundation/hardhat-verify@npm:1.1.1"
+ dependencies:
+ "@ethersproject/abi": ^5.1.2
+ "@ethersproject/address": ^5.0.2
+ cbor: ^8.1.0
+ chalk: ^2.4.2
+ debug: ^4.1.1
+ lodash.clonedeep: ^4.5.0
+ semver: ^6.3.0
+ table: ^6.8.0
+ undici: ^5.14.0
+ peerDependencies:
+ hardhat: ^2.0.4
+ checksum: 2d83d32d6833f23fb62c30c68c9a2ab3956098030edcf459e69639960f059c72572d203bcf92f191c69c9cb0fbbf011a1113bacde1e3cbb28d5e812334f04f32
+ languageName: node
+ linkType: hard
+
+"@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.1"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.1"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-freebsd-x64@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-freebsd-x64@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-freebsd-x64@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-freebsd-x64@npm:0.1.1"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.1"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.1"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.1"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.1"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-win32-arm64-msvc@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-win32-arm64-msvc@npm:0.1.1"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-win32-ia32-msvc@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-win32-ia32-msvc@npm:0.1.1"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.0.3"
+"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.1":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.1"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer@npm:^0.0.3":
- version: 0.0.3
- resolution: "@nomicfoundation/solidity-analyzer@npm:0.0.3"
- dependencies:
- "@nomicfoundation/solidity-analyzer-darwin-arm64": 0.0.3
- "@nomicfoundation/solidity-analyzer-darwin-x64": 0.0.3
- "@nomicfoundation/solidity-analyzer-freebsd-x64": 0.0.3
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": 0.0.3
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl": 0.0.3
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu": 0.0.3
- "@nomicfoundation/solidity-analyzer-linux-x64-musl": 0.0.3
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": 0.0.3
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": 0.0.3
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc": 0.0.3
+"@nomicfoundation/solidity-analyzer@npm:^0.1.0":
+ version: 0.1.1
+ resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.1"
+ dependencies:
+ "@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
dependenciesMeta:
"@nomicfoundation/solidity-analyzer-darwin-arm64":
optional: true
@@ -1084,63 +1179,18 @@ __metadata:
optional: true
"@nomicfoundation/solidity-analyzer-win32-x64-msvc":
optional: true
- checksum: dd3e1e6aa75716eb22f256be06d6a4d808ef732f77c26b4489ae8f9508271799d555dff547cf037373b0974d892b4cc7f78bc4ea5027eee8561e4dd394fe61ac
- languageName: node
- linkType: hard
-
-"@nomiclabs/hardhat-ethers@npm:^2.2.1":
- version: 2.2.1
- resolution: "@nomiclabs/hardhat-ethers@npm:2.2.1"
- peerDependencies:
- ethers: ^5.0.0
- hardhat: ^2.0.0
- checksum: 8cdbf7068f15ee993142ab600074938d05b42af73392a5b12c8eb607a5bca2fac977a6a85955e0b0285541415ad520626e7fb3d33ca7cc112d61ee928358e2f6
- languageName: node
- linkType: hard
-
-"@nomiclabs/hardhat-etherscan@npm:^3.1.0":
- version: 3.1.2
- resolution: "@nomiclabs/hardhat-etherscan@npm:3.1.2"
- dependencies:
- "@ethersproject/abi": ^5.1.2
- "@ethersproject/address": ^5.0.2
- cbor: ^5.0.2
- chalk: ^2.4.2
- debug: ^4.1.1
- fs-extra: ^7.0.1
- lodash: ^4.17.11
- semver: ^6.3.0
- table: ^6.8.0
- undici: ^5.4.0
- peerDependencies:
- hardhat: ^2.0.4
- checksum: 7f225d05fe4d8549472bed2a5c8b8d02e1be652c6c1e00ac83416c048919a2a665d3ad7833c8d6f4513bb6f444e2a165d32a99051b179da7d35aaa1247c32947
- languageName: node
- linkType: hard
-
-"@nomiclabs/hardhat-solhint@npm:^2.0.1":
- version: 2.0.1
- resolution: "@nomiclabs/hardhat-solhint@npm:2.0.1"
- dependencies:
- solhint: ^2.0.0
- peerDependencies:
- hardhat: ^2.0.0
- checksum: b38db32444857875832275de5cbbc99fd72221aa97473e5cebe59f064c731a089fc9791c30fb05b615e9b9b907a0bd0a5da4f163ffaa1c1c6e7cc389e0578db1
+ checksum: 038cffafd5769e25256b5b8bef88d95cc1c021274a65c020cf84aceb3237752a3b51645fdb0687f5516a2bdfebf166fcf50b08ab64857925100213e0654b266b
languageName: node
linkType: hard
-"@nomiclabs/hardhat-waffle@npm:^2.0.1":
- version: 2.0.1
- resolution: "@nomiclabs/hardhat-waffle@npm:2.0.1"
+"@nomiclabs/hardhat-solhint@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "@nomiclabs/hardhat-solhint@npm:3.0.1"
dependencies:
- "@types/sinon-chai": ^3.2.3
- "@types/web3": 1.0.19
+ solhint: ^3.4.0
peerDependencies:
- "@nomiclabs/hardhat-ethers": ^2.0.0
- ethereum-waffle: ^3.2.0
- ethers: ^5.0.0
hardhat: ^2.0.0
- checksum: 5ccd6614e355f2377c07461126bd8ec7607d7fc0fca166641467992af13fab08628de87c0f6044df6f069850e7497973b3a545bb89d203b4d436c177e29b4efa
+ checksum: 661a3e514cc2aa0d00f058262a9b6a07f0380ec4f973030f16a21d53b46f8748b42bfb4aa925e9740f3e2839192d89b0e558e3af17001ab2d3490c924362571c
languageName: node
linkType: hard
@@ -1185,97 +1235,110 @@ __metadata:
languageName: node
linkType: hard
-"@openzeppelin/hardhat-defender@npm:^1.8.1":
- version: 1.8.1
- resolution: "@openzeppelin/hardhat-defender@npm:1.8.1"
+"@openzeppelin/defender-admin-client@npm:^1.52.0":
+ version: 1.54.1
+ resolution: "@openzeppelin/defender-admin-client@npm:1.54.1"
dependencies:
- "@openzeppelin/hardhat-upgrades": ^1.20.0
- defender-admin-client: ^1.29.0-rc.1
- defender-base-client: ^1.3.1
- ethereumjs-util: ^7.1.5
- checksum: 1d871943c69f23969ad28cfd424dba0293452aeaa14a60325d1afa01a66d0b433891e440fb2bf01000d6d3468cab59cb5a8c5ae1867ed3d4751137bd4bbd3fc7
+ "@openzeppelin/defender-base-client": 1.54.1
+ axios: ^1.4.0
+ ethers: ^5.7.2
+ lodash: ^4.17.19
+ node-fetch: ^2.6.0
+ checksum: c247b38c9fdedc55d01d59b7db7fbe212b1ff5177950a0626010b8df3e298e3cf52e0d46d06cadc95c418f570547864c3d652e42804f4c845b3790de581e3d19
+ languageName: node
+ linkType: hard
+
+"@openzeppelin/defender-base-client@npm:1.54.1, @openzeppelin/defender-base-client@npm:^1.52.0":
+ version: 1.54.1
+ resolution: "@openzeppelin/defender-base-client@npm:1.54.1"
+ 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
+ checksum: bb44d305b3a7b20ce765bef4c8385c1187f9eca8f2647a99ad55111034da471709e946472ca5f641eb4bd26e1c7ebd19fb9832c29919c36d353a355c009ae98c
+ languageName: node
+ linkType: hard
+
+"@openzeppelin/defender-sdk-base-client@npm:^1.12.0, @openzeppelin/defender-sdk-base-client@npm:^1.8.0":
+ version: 1.12.0
+ resolution: "@openzeppelin/defender-sdk-base-client@npm:1.12.0"
+ dependencies:
+ amazon-cognito-identity-js: ^6.3.6
+ async-retry: ^1.3.3
+ checksum: bd0501fad9fa7830ad65a0b27c1fa2ce2b84b30fd218c3dda7347dfac76d7500ecba75defa100a2d77d775db8606dac56cecccf898593784f8868e69edd9d121
+ languageName: node
+ linkType: hard
+
+"@openzeppelin/defender-sdk-deploy-client@npm:^1.8.0":
+ version: 1.12.0
+ resolution: "@openzeppelin/defender-sdk-deploy-client@npm:1.12.0"
+ dependencies:
+ "@openzeppelin/defender-sdk-base-client": ^1.12.0
+ axios: ^1.6.7
+ lodash: ^4.17.21
+ checksum: 2032c0967bb255a6ada456a84fdc1f90a8199fc57061f4a43df63830ab08ef08981674fb5e897afff20ad2c3f60051dda29d8939e79eba2a54c8302c5fc76869
languageName: node
linkType: hard
-"@openzeppelin/hardhat-upgrades@npm:^1.20.0":
- version: 1.20.0
- resolution: "@openzeppelin/hardhat-upgrades@npm:1.20.0"
+"@openzeppelin/hardhat-upgrades@npm:^2.0.0":
+ version: 2.5.1
+ resolution: "@openzeppelin/hardhat-upgrades@npm:2.5.1"
dependencies:
- "@openzeppelin/upgrades-core": ^1.18.0
+ "@openzeppelin/defender-admin-client": ^1.52.0
+ "@openzeppelin/defender-base-client": ^1.52.0
+ "@openzeppelin/defender-sdk-base-client": ^1.8.0
+ "@openzeppelin/defender-sdk-deploy-client": ^1.8.0
+ "@openzeppelin/upgrades-core": ^1.31.2
chalk: ^4.1.0
debug: ^4.1.1
+ ethereumjs-util: ^7.1.5
proper-lockfile: ^4.1.1
+ undici: ^5.14.0
peerDependencies:
- "@nomiclabs/hardhat-ethers": ^2.0.0
- "@nomiclabs/hardhat-etherscan": ^3.1.0
- ethers: ^5.0.5
+ "@nomicfoundation/hardhat-ethers": ^3.0.0
+ "@nomicfoundation/hardhat-verify": ^1.1.0
+ ethers: ^6.6.0
hardhat: ^2.0.2
peerDependenciesMeta:
- "@nomiclabs/harhdat-etherscan":
+ "@nomicfoundation/hardhat-verify":
optional: true
bin:
migrate-oz-cli-project: dist/scripts/migrate-oz-cli-project.js
- checksum: 7957c1380f296cd6ce1e7d78968bf1954ba2a252a8cb707a7469e8a6ce3a7d173f61974f51aa4bc14a556fbc9f26a899ad5a69523b840b386c66d49dab734ec2
+ checksum: d79b63a8abe0a0eb9ab54f1227e26ac4cb8fbb153f11ed7f6cfd8d2a1617166022f1f8a8749005f96b0e86d4e6b3f99994cac6bc985b3d2522bcbfc897ae1704
languageName: node
linkType: hard
-"@openzeppelin/upgrades-core@npm:^1.18.0, @openzeppelin/upgrades-core@npm:^1.19.1":
- version: 1.19.1
- resolution: "@openzeppelin/upgrades-core@npm:1.19.1"
+"@openzeppelin/upgrades-core@npm:^1.31.2, @openzeppelin/upgrades-core@npm:^1.32.5":
+ version: 1.32.6
+ resolution: "@openzeppelin/upgrades-core@npm:1.32.6"
dependencies:
- cbor: ^8.0.0
+ cbor: ^9.0.0
chalk: ^4.1.0
- compare-versions: ^5.0.0
+ compare-versions: ^6.0.0
debug: ^4.1.1
ethereumjs-util: ^7.0.3
+ minimist: ^1.2.7
proper-lockfile: ^4.1.1
- solidity-ast: ^0.4.15
- checksum: 23ce6866c92c2afc39e8765a0e12935c4fbe1582a83ec00e1fa4488dc8d65c0e7db76e97dfd766b3e23639d4b2eafb8baf2444d18fd4a7807602899c930c3b56
- languageName: node
- linkType: hard
-
-"@resolver-engine/core@npm:^0.3.3":
- version: 0.3.3
- resolution: "@resolver-engine/core@npm:0.3.3"
- dependencies:
- debug: ^3.1.0
- is-url: ^1.2.4
- request: ^2.85.0
- checksum: e5ac586da2aeb7e384f6841821e528771fca533bf5cf38d7fd0851733bd9b70939e960459f2b841534ecdca6507c9aff71bd317f7481137d7b1d2e87ba15978a
- languageName: node
- linkType: hard
-
-"@resolver-engine/fs@npm:^0.3.3":
- version: 0.3.3
- resolution: "@resolver-engine/fs@npm:0.3.3"
- dependencies:
- "@resolver-engine/core": ^0.3.3
- debug: ^3.1.0
- checksum: 734577b7864c3aceaaa80b4b74c252d92fb14a6f3c46dfc0a2d4658288dce1b38797578dd6a4ecbde88cbc4a366e8bdbc46451e282cb25dde8479548453c37a3
+ solidity-ast: ^0.4.51
+ bin:
+ openzeppelin-upgrades-core: dist/cli/cli.js
+ checksum: 9e7d71ae7960d9bfc81a8c08299acb3a002c0641e112072a7a13a95e928ad467b93c4092af9f37f2fa6d0d6894b98bd5c86f2e305351edf6b301adcc677aae1f
languageName: node
linkType: hard
-"@resolver-engine/imports-fs@npm:^0.3.3":
- version: 0.3.3
- resolution: "@resolver-engine/imports-fs@npm:0.3.3"
- dependencies:
- "@resolver-engine/fs": ^0.3.3
- "@resolver-engine/imports": ^0.3.3
- debug: ^3.1.0
- checksum: d24778788959f8a201bda0a91527cd1703dfbbf3675fd16bd3891046e3f12378be73233bb9d4da19c7247488be38daeab2bdf800317f70553a16fb62208ba2c7
+"@pkgjs/parseargs@npm:^0.11.0":
+ version: 0.11.0
+ resolution: "@pkgjs/parseargs@npm:0.11.0"
+ checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f
languageName: node
linkType: hard
-"@resolver-engine/imports@npm:^0.3.3":
- version: 0.3.3
- resolution: "@resolver-engine/imports@npm:0.3.3"
- dependencies:
- "@resolver-engine/core": ^0.3.3
- debug: ^3.1.0
- hosted-git-info: ^2.6.0
- path-browserify: ^1.0.0
- url: ^0.11.0
- checksum: 690cf550fd0608e849fcb9c20a08479ce405173f8d0b09141a5bd140c4ae7c887ebcb0532c4ca64b5c1d3039fe77cc94172b7afb51c1a8fe7722475c429e6944
+"@scure/base@npm:^1.1.1, @scure/base@npm:~1.1.2, @scure/base@npm:~1.1.4":
+ version: 1.1.6
+ resolution: "@scure/base@npm:1.1.6"
+ checksum: d6deaae91deba99e87939af9e55d80edba302674983f32bba57f942e22b1726a83c62dc50d8f4370a5d5d35a212dda167fb169f4b0d0c297488d8604608fc3d3
languageName: node
linkType: hard
@@ -1308,6 +1371,28 @@ __metadata:
languageName: node
linkType: hard
+"@scure/bip32@npm:1.3.2":
+ version: 1.3.2
+ resolution: "@scure/bip32@npm:1.3.2"
+ dependencies:
+ "@noble/curves": ~1.2.0
+ "@noble/hashes": ~1.3.2
+ "@scure/base": ~1.1.2
+ checksum: c5ae84fae43490853693b481531132b89e056d45c945fc8b92b9d032577f753dfd79c5a7bbcbf0a7f035951006ff0311b6cf7a389e26c9ec6335e42b20c53157
+ languageName: node
+ linkType: hard
+
+"@scure/bip32@npm:1.3.3":
+ version: 1.3.3
+ resolution: "@scure/bip32@npm:1.3.3"
+ dependencies:
+ "@noble/curves": ~1.3.0
+ "@noble/hashes": ~1.3.2
+ "@scure/base": ~1.1.4
+ checksum: f939ca733972622fcc1e61d4fdf170a0ad294b24ddb7ed7cdd4c467e1ef283b970154cb101cf5f1a7b64cf5337e917ad31135911dfc36b1d76625320167df2fa
+ languageName: node
+ linkType: hard
+
"@scure/bip39@npm:1.1.0":
version: 1.1.0
resolution: "@scure/bip39@npm:1.1.0"
@@ -1328,8 +1413,18 @@ __metadata:
languageName: node
linkType: hard
-"@sentry/core@npm:5.30.0":
- version: 5.30.0
+"@scure/bip39@npm:1.2.2":
+ version: 1.2.2
+ resolution: "@scure/bip39@npm:1.2.2"
+ dependencies:
+ "@noble/hashes": ~1.3.2
+ "@scure/base": ~1.1.4
+ checksum: cb99505e6d2deef8e55e81df8c563ce8dbfdf1595596dc912bceadcf366c91b05a98130e928ecb090df74efdb20150b64acc4be55bc42768cab4d39a2833d234
+ languageName: node
+ linkType: hard
+
+"@sentry/core@npm:5.30.0":
+ version: 5.30.0
resolution: "@sentry/core@npm:5.30.0"
dependencies:
"@sentry/hub": 5.30.0
@@ -1410,13 +1505,6 @@ __metadata:
languageName: node
linkType: hard
-"@sindresorhus/is@npm:^0.14.0":
- version: 0.14.0
- resolution: "@sindresorhus/is@npm:0.14.0"
- checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a
- languageName: node
- linkType: hard
-
"@sindresorhus/is@npm:^4.6.0":
version: 4.6.0
resolution: "@sindresorhus/is@npm:4.6.0"
@@ -1424,25 +1512,16 @@ __metadata:
languageName: node
linkType: hard
-"@sinonjs/commons@npm:^1.7.0":
- version: 1.8.3
- resolution: "@sinonjs/commons@npm:1.8.3"
- dependencies:
- type-detect: 4.0.8
- checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5
- languageName: node
- linkType: hard
-
-"@sinonjs/fake-timers@npm:^7.0.4":
- version: 7.0.5
- resolution: "@sinonjs/fake-timers@npm:7.0.5"
+"@smithy/types@npm:^2.12.0":
+ version: 2.12.0
+ resolution: "@smithy/types@npm:2.12.0"
dependencies:
- "@sinonjs/commons": ^1.7.0
- checksum: fcd13fdd3e4f4ddb14df03efc50f4b6845e1a31f76ac986502995a99e116106cb0ccc8d6ca5c696f823d5762f38fe4adcd7008251cfd2dfbbf2d3d819a89fc06
+ tslib: ^2.6.2
+ checksum: 2dd93746624d87afbf51c22116fc69f82e95004b78cf681c4a283d908155c22a2b7a3afbd64a3aff7deefb6619276f186e212422ad200df3b42c32ef5330374e
languageName: node
linkType: hard
-"@solidity-parser/parser@npm:^0.14.0, @solidity-parser/parser@npm:^0.14.1, @solidity-parser/parser@npm:^0.14.3":
+"@solidity-parser/parser@npm:^0.14.1":
version: 0.14.3
resolution: "@solidity-parser/parser@npm:0.14.3"
dependencies:
@@ -1460,12 +1539,17 @@ __metadata:
languageName: node
linkType: hard
-"@szmarczak/http-timer@npm:^1.1.2":
- version: 1.1.2
- resolution: "@szmarczak/http-timer@npm:1.1.2"
- dependencies:
- defer-to-connect: ^1.0.1
- checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe
+"@solidity-parser/parser@npm:^0.17.0":
+ version: 0.17.0
+ resolution: "@solidity-parser/parser@npm:0.17.0"
+ checksum: 2f47732c9a4f6b264ce6c8a0544bd5a0805f824d3c40a8a253e59d5dbe9a98163f55c06460232f57a6b389bb5235c18d0563f94425202ec2f859d88f2378e0ac
+ languageName: node
+ linkType: hard
+
+"@solidity-parser/parser@npm:^0.18.0":
+ version: 0.18.0
+ resolution: "@solidity-parser/parser@npm:0.18.0"
+ checksum: 970d991529d632862fa88e107531339d84df35bf0374e31e8215ce301b19a01ede33fccf4d374402649814263f8bc278a8e6d62a0129bb877539fbdd16a604cc
languageName: node
linkType: hard
@@ -1495,6 +1579,22 @@ __metadata:
languageName: node
linkType: hard
+"@trufflesuite/uws-js-unofficial@npm:20.30.0-unofficial.0":
+ version: 20.30.0-unofficial.0
+ resolution: "@trufflesuite/uws-js-unofficial@npm:20.30.0-unofficial.0"
+ dependencies:
+ bufferutil: 4.0.7
+ utf-8-validate: 6.0.3
+ ws: 8.13.0
+ dependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 67e67140877f89b31c504a057d26853d5780b09c733d92c32480d2f0dfe4e98fb822860f3efeb06f379daecee70d67185f88a7b6f3406d18526e501b36c40fd3
+ languageName: node
+ linkType: hard
+
"@tsconfig/node10@npm:^1.0.7":
version: 1.0.9
resolution: "@tsconfig/node10@npm:1.0.9"
@@ -1523,49 +1623,31 @@ __metadata:
languageName: node
linkType: hard
-"@typechain/ethers-v5@npm:^10.1.0":
- version: 10.1.0
- resolution: "@typechain/ethers-v5@npm:10.1.0"
+"@typechain/ethers-v6@npm:^0.5.0":
+ version: 0.5.1
+ resolution: "@typechain/ethers-v6@npm:0.5.1"
dependencies:
lodash: ^4.17.15
ts-essentials: ^7.0.1
peerDependencies:
- "@ethersproject/abi": ^5.0.0
- "@ethersproject/bytes": ^5.0.0
- "@ethersproject/providers": ^5.0.0
- ethers: ^5.1.3
- typechain: ^8.1.0
- typescript: ">=4.3.0"
- checksum: 452ad685ce792ddefebdcb8ae72f4343ed1411f91701250e273c1a0dd79753d0d40f311cff19ec0c4fd6a9b9cf23e55eb9ae1b94cb388fbc54c122ae4d0e6f47
- languageName: node
- linkType: hard
-
-"@typechain/ethers-v5@npm:^2.0.0":
- version: 2.0.0
- resolution: "@typechain/ethers-v5@npm:2.0.0"
- dependencies:
- ethers: ^5.0.2
- peerDependencies:
- ethers: ^5.0.0
- typechain: ^3.0.0
- checksum: 785430547f11de358c4018338f6f72aac113ece70d743aad410fff4eacbc3b4876d2e0d3389e1a56123afcf156f5c044ee72275342e45218448c23fe93d23915
+ ethers: 6.x
+ typechain: ^8.3.2
+ typescript: ">=4.7.0"
+ checksum: 44e7970ce95eeb1a02019f8a53bbe30dcb87664e1df15fe436ae48eea1bf91ca72b5b230eac1bdf9cbe9b55bc488b54c6273e6f77155eaeff885fb34cfcd1108
languageName: node
linkType: hard
-"@typechain/hardhat@npm:^6.1.2":
- version: 6.1.2
- resolution: "@typechain/hardhat@npm:6.1.2"
+"@typechain/hardhat@npm:^9.1.0":
+ version: 9.1.0
+ resolution: "@typechain/hardhat@npm:9.1.0"
dependencies:
fs-extra: ^9.1.0
- lodash: ^4.17.15
peerDependencies:
- "@ethersproject/abi": ^5.4.7
- "@ethersproject/providers": ^5.4.7
- "@typechain/ethers-v5": ^10.1.0
- ethers: ^5.4.7
+ "@typechain/ethers-v6": ^0.5.1
+ ethers: ^6.1.0
hardhat: ^2.9.9
- typechain: ^8.1.0
- checksum: 875753de831825c95c30e6792949f38f69fcee888c1936042414c8d030ecc181817cc0f5cbf6f1764f30779b5f840201eb29addda45713fd0b58a71693102a2c
+ typechain: ^8.3.2
+ checksum: a05998ce89bb4a297f233f4489e4af2a3ad0abcedd75392096745a378d7c5bab9650fcd5dd778c9deaf790bf16e3a849b3ed91a6ae916173df6dfc9e574efcbc
languageName: node
linkType: hard
@@ -1576,13 +1658,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/async-eventemitter@npm:^0.2.1":
- version: 0.2.1
- resolution: "@types/async-eventemitter@npm:0.2.1"
- checksum: 36ba0a6f52082f76b19b9123a2fa0497f94fe15218fa54040cc45f0edff483ec3be93a38c177cd4dab79f5e32333fbdf3682d4dc94197438e86694b1fddd6896
- languageName: node
- linkType: hard
-
"@types/bip39@npm:^3.0.0":
version: 3.0.0
resolution: "@types/bip39@npm:3.0.0"
@@ -1592,21 +1667,21 @@ __metadata:
languageName: node
linkType: hard
-"@types/bn.js@npm:*, @types/bn.js@npm:^5.1.0":
- version: 5.1.0
- resolution: "@types/bn.js@npm:5.1.0"
+"@types/bn.js@npm:^4.11.3":
+ version: 4.11.6
+ resolution: "@types/bn.js@npm:4.11.6"
dependencies:
"@types/node": "*"
- checksum: 1dc1cbbd7a1e8bf3614752e9602f558762a901031f499f3055828b5e3e2bba16e5b88c27b3c4152ad795248fbe4086c731a5c4b0f29bb243f1875beeeabee59c
+ checksum: 7f66f2c7b7b9303b3205a57184261974b114495736b77853af5b18d857c0b33e82ce7146911e86e87a87837de8acae28986716fd381ac7c301fd6e8d8b6c811f
languageName: node
linkType: hard
-"@types/bn.js@npm:^4.11.3, @types/bn.js@npm:^4.11.5":
- version: 4.11.6
- resolution: "@types/bn.js@npm:4.11.6"
+"@types/bn.js@npm:^5.1.0":
+ version: 5.1.0
+ resolution: "@types/bn.js@npm:5.1.0"
dependencies:
"@types/node": "*"
- checksum: 7f66f2c7b7b9303b3205a57184261974b114495736b77853af5b18d857c0b33e82ce7146911e86e87a87837de8acae28986716fd381ac7c301fd6e8d8b6c811f
+ checksum: 1dc1cbbd7a1e8bf3614752e9602f558762a901031f499f3055828b5e3e2bba16e5b88c27b3c4152ad795248fbe4086c731a5c4b0f29bb243f1875beeeabee59c
languageName: node
linkType: hard
@@ -1622,19 +1697,26 @@ __metadata:
languageName: node
linkType: hard
-"@types/chai@npm:*, @types/chai@npm:^4.3.3":
+"@types/chai-as-promised@npm:^7.1.3":
+ version: 7.1.8
+ resolution: "@types/chai-as-promised@npm:7.1.8"
+ dependencies:
+ "@types/chai": "*"
+ checksum: f0e5eab451b91bc1e289ed89519faf6591932e8a28d2ec9bbe95826eb73d28fe43713633e0c18706f3baa560a7d97e7c7c20dc53ce639e5d75bac46b2a50bf21
+ languageName: node
+ linkType: hard
+
+"@types/chai@npm:*":
version: 4.3.3
resolution: "@types/chai@npm:4.3.3"
checksum: 20cd094753e137cfc35939cae7f0ed78ecda7861e5c94704efab6979b9121a63807e9b631bdcf3a2792d6c6dba44050b13387262f9e63ebb040741c01c345f0a
languageName: node
linkType: hard
-"@types/concat-stream@npm:^1.6.0":
- version: 1.6.1
- resolution: "@types/concat-stream@npm:1.6.1"
- dependencies:
- "@types/node": "*"
- checksum: 7d211e74331affd3578b5469244f5cef84a93775f38332adb3ef12413559a23862bc682c6873d0a404b01c9d5d5f7d3ae091fe835b435b633eb420e3055b3e56
+"@types/chai@npm:^4.3.3":
+ version: 4.3.14
+ resolution: "@types/chai@npm:4.3.14"
+ checksum: 962c67d1295005886ced8f87c73614616f6d65ed1ec71818021c9206decbaab1234da878295ba52450883c78a8ee5e1359e5deeadee3b7d058538b0ae8c67b08
languageName: node
linkType: hard
@@ -1647,12 +1729,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/form-data@npm:0.0.33":
- version: 0.0.33
- resolution: "@types/form-data@npm:0.0.33"
+"@types/debug@npm:^4.1.9":
+ version: 4.1.12
+ resolution: "@types/debug@npm:4.1.12"
dependencies:
- "@types/node": "*"
- checksum: f0c283fdef2dd7191168a37b9cb2625af3cfbd7f72b5a514f938bea0a135669f79d736186d434b9e81150b47ef1bf20d97b188014a00583556fad6ce59fb9bbf
+ "@types/ms": "*"
+ checksum: 47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053
languageName: node
linkType: hard
@@ -1771,15 +1853,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/mkdirp@npm:^0.5.2":
- version: 0.5.2
- resolution: "@types/mkdirp@npm:0.5.2"
- dependencies:
- "@types/node": "*"
- checksum: 21e6681ee18cee6314dbe0f57ada48981912b76de8266f438ba2573770d60aaa8dd376baad3f20e2346696a7cca84b0aadd1737222341553a0091831a46e6ad1
- languageName: node
- linkType: hard
-
"@types/mocha@npm:^9.1.1":
version: 9.1.1
resolution: "@types/mocha@npm:9.1.1"
@@ -1794,16 +1867,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/node-fetch@npm:^2.5.5":
- version: 2.5.10
- resolution: "@types/node-fetch@npm:2.5.10"
- dependencies:
- "@types/node": "*"
- form-data: ^3.0.0
- checksum: 504d3834083fcbb90dc488618a60d078ff3b018c3c77e649b4990aff6dfafe9e41c82699ed474e01d9df40448240b6b455653d25afeecbc0eacb4154a217c253
- languageName: node
- linkType: hard
-
"@types/node@npm:*, @types/node@npm:^18.7.6":
version: 18.7.6
resolution: "@types/node@npm:18.7.6"
@@ -1818,10 +1881,10 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:^10.0.3":
- version: 10.17.60
- resolution: "@types/node@npm:10.17.60"
- checksum: 2cdb3a77d071ba8513e5e8306fa64bf50e3c3302390feeaeff1fd325dd25c8441369715dfc8e3701011a72fed5958c7dfa94eb9239a81b3c286caa4d97db6eef
+"@types/node@npm:18.15.13":
+ version: 18.15.13
+ resolution: "@types/node@npm:18.15.13"
+ checksum: 79cc5a2b5f98e8973061a4260a781425efd39161a0e117a69cd089603964816c1a14025e1387b4590c8e82d05133b7b4154fa53a7dffb3877890a66145e76515
languageName: node
linkType: hard
@@ -1832,13 +1895,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:^8.0.0":
- version: 8.10.66
- resolution: "@types/node@npm:8.10.66"
- checksum: c52039de862654a139abdc6a51de532a69dd80516ac35a959c3b3a2831ecbaaf065b0df5f9db943f5e28b544ebb9a891730d52b52f7a169b86a82bc060210000
- languageName: node
- linkType: hard
-
"@types/pbkdf2@npm:^3.0.0":
version: 3.1.0
resolution: "@types/pbkdf2@npm:3.1.0"
@@ -1855,19 +1911,13 @@ __metadata:
languageName: node
linkType: hard
-"@types/qs@npm:^6.2.31":
- version: 6.9.7
- resolution: "@types/qs@npm:6.9.7"
- checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba
- languageName: node
- linkType: hard
-
-"@types/resolve@npm:^0.0.8":
- version: 0.0.8
- resolution: "@types/resolve@npm:0.0.8"
+"@types/readable-stream@npm:^2.3.13":
+ version: 2.3.15
+ resolution: "@types/readable-stream@npm:2.3.15"
dependencies:
"@types/node": "*"
- checksum: f241bb773ab14b14500623ac3b57c52006ce32b20426b6d8bf2fe5fdc0344f42c77ac0f94ff57b443ae1d320a1a86c62b4e47239f0321699404402fbeb24bad6
+ safe-buffer: ~5.1.1
+ checksum: ec36f525cad09b6c65a1dafcb5ad99b9e2ed824ec49b7aa23180ac427e5d35b8a0706193ecd79ab4253a283ad485ba03d5917a98daaaa144f0ea34f4823e9d82
languageName: node
linkType: hard
@@ -1903,25 +1953,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/sinon-chai@npm:^3.2.3":
- version: 3.2.5
- resolution: "@types/sinon-chai@npm:3.2.5"
- dependencies:
- "@types/chai": "*"
- "@types/sinon": "*"
- checksum: ac332b8f2c9e13f081773a1c01fa12225768879ed310b36ba954982fccdf464fca4c3b852a60b2ca8e232026dd0a386b04f638bc903761c0d33375d9b3e9240f
- languageName: node
- linkType: hard
-
-"@types/sinon@npm:*":
- version: 10.0.0
- resolution: "@types/sinon@npm:10.0.0"
- dependencies:
- "@sinonjs/fake-timers": ^7.0.4
- checksum: 7de3199da97ab45a5f85cb553e384a39bc3a867fcf7521ba22a0fe1a9305891715f11964483af0481e837875a883434597a0097923e6e7fbefe1407af6f5bd76
- languageName: node
- linkType: hard
-
"@types/sodium-native@npm:2.3.5":
version: 2.3.5
resolution: "@types/sodium-native@npm:2.3.5"
@@ -1941,23 +1972,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/underscore@npm:*":
- version: 1.11.2
- resolution: "@types/underscore@npm:1.11.2"
- checksum: 7f3fac982f790450e8f22018350fdd099358c3f0056c7ae33f8da99d5c6c97d3e73a49e9396bbb47f2aacd25ed9b5b13dab991734586cbec7658295688c6a9e4
- languageName: node
- linkType: hard
-
-"@types/web3@npm:1.0.19":
- version: 1.0.19
- resolution: "@types/web3@npm:1.0.19"
- dependencies:
- "@types/bn.js": "*"
- "@types/underscore": "*"
- checksum: 25a78e80052cca8abe5edf15c0ae92854d00d1bec15283486a2535ab673345b0be090e39cc9a86822be17ddd812fa76cbfd869be21bb944d2faaf2922e2a836a
- languageName: node
- linkType: hard
-
"@types/yargs-parser@npm:*":
version: 21.0.0
resolution: "@types/yargs-parser@npm:21.0.0"
@@ -2101,13 +2115,6 @@ __metadata:
languageName: node
linkType: hard
-"@yarnpkg/lockfile@npm:^1.1.0":
- version: 1.1.0
- resolution: "@yarnpkg/lockfile@npm:1.1.0"
- checksum: 05b881b4866a3546861fee756e6d3812776ea47fa6eb7098f983d6d0eefa02e12b66c3fff931574120f196286a7ad4879ce02743c8bb2be36c6a576c7852083a
- languageName: node
- linkType: hard
-
"@zilliqa-js/crypto@npm:^3.4.4":
version: 3.4.4
resolution: "@zilliqa-js/crypto@npm:3.4.4"
@@ -2154,12 +2161,18 @@ __metadata:
languageName: node
linkType: hard
-"abort-controller@npm:^3.0.0":
- version: 3.0.0
- resolution: "abort-controller@npm:3.0.0"
- dependencies:
- event-target-shim: ^5.0.0
- checksum: 170bdba9b47b7e65906a28c8ce4f38a7a369d78e2271706f020849c1bfe0ee2067d4261df8bbb66eb84f79208fd5b710df759d64191db58cfba7ce8ef9c54b75
+"abitype@npm:1.0.0":
+ version: 1.0.0
+ resolution: "abitype@npm:1.0.0"
+ peerDependencies:
+ typescript: ">=5.0.4"
+ zod: ^3 >=3.22.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+ checksum: ea2c0548c3ba58c37a6de7483d63389074da498e63d803b742bbe94eb4eaa1f51a35d000c424058b2583aef56698cf07c696eb3bc4dd0303bc20c6f0826a241a
languageName: node
linkType: hard
@@ -2170,7 +2183,7 @@ __metadata:
languageName: node
linkType: hard
-"abstract-level@npm:^1.0.0, abstract-level@npm:^1.0.2, abstract-level@npm:^1.0.3":
+"abstract-level@npm:1.0.3":
version: 1.0.3
resolution: "abstract-level@npm:1.0.3"
dependencies:
@@ -2185,30 +2198,17 @@ __metadata:
languageName: node
linkType: hard
-"abstract-leveldown@npm:3.0.0":
- version: 3.0.0
- resolution: "abstract-leveldown@npm:3.0.0"
- dependencies:
- xtend: ~4.0.0
- checksum: 1d3e65fc2288fd17955df3b0887fdd3d4fa7fcd816062014f872ea12a1e86e886151cbdc36abd2f243a810b7999252eaa30adf636ffe1be3103493ab37277e49
- languageName: node
- linkType: hard
-
-"abstract-leveldown@npm:^2.4.1, abstract-leveldown@npm:~2.7.1":
- version: 2.7.2
- resolution: "abstract-leveldown@npm:2.7.2"
- dependencies:
- xtend: ~4.0.0
- checksum: 97c45a05d8b5d24edf3855c1f9a19f919c4a189e387929745289a53116c80638339a7d4e50ad76d0ad2900166adaeaf2e0350dcdcd453e783cd8f04fd9bea17a
- languageName: node
- linkType: hard
-
-"abstract-leveldown@npm:^5.0.0, abstract-leveldown@npm:~5.0.0":
- version: 5.0.0
- resolution: "abstract-leveldown@npm:5.0.0"
+"abstract-leveldown@npm:7.2.0, abstract-leveldown@npm:^7.2.0":
+ version: 7.2.0
+ resolution: "abstract-leveldown@npm:7.2.0"
dependencies:
- xtend: ~4.0.0
- checksum: d55d03cc7fad011d5fea30d26504b1a76123ec8edd3623d21f80ce0561c610b7ed1e00eb037c14746ec2b7ad8638586024f11d4a1476beee2c470c8cf27e3586
+ buffer: ^6.0.3
+ catering: ^2.0.0
+ is-buffer: ^2.0.5
+ level-concat-iterator: ^3.0.0
+ level-supports: ^2.0.1
+ queue-microtask: ^1.2.3
+ checksum: d558111f2d123da95ac80b8ba3b9b0a5bc8cd87296e64b05dca693f5f4839aa0e2fc97bad56a101766f499824e2962611750f8a76bbac4a5db35801968fbbe02
languageName: node
linkType: hard
@@ -2225,20 +2225,6 @@ __metadata:
languageName: node
linkType: hard
-"abstract-leveldown@npm:^7.2.0":
- version: 7.2.0
- resolution: "abstract-leveldown@npm:7.2.0"
- dependencies:
- buffer: ^6.0.3
- catering: ^2.0.0
- is-buffer: ^2.0.5
- level-concat-iterator: ^3.0.0
- level-supports: ^2.0.1
- queue-microtask: ^1.2.3
- checksum: d558111f2d123da95ac80b8ba3b9b0a5bc8cd87296e64b05dca693f5f4839aa0e2fc97bad56a101766f499824e2962611750f8a76bbac4a5db35801968fbbe02
- languageName: node
- linkType: hard
-
"abstract-leveldown@npm:~2.6.0":
version: 2.6.3
resolution: "abstract-leveldown@npm:2.6.3"
@@ -2248,6 +2234,15 @@ __metadata:
languageName: node
linkType: hard
+"abstract-leveldown@npm:~2.7.1":
+ version: 2.7.2
+ resolution: "abstract-leveldown@npm:2.7.2"
+ dependencies:
+ xtend: ~4.0.0
+ checksum: 97c45a05d8b5d24edf3855c1f9a19f919c4a189e387929745289a53116c80638339a7d4e50ad76d0ad2900166adaeaf2e0350dcdcd453e783cd8f04fd9bea17a
+ languageName: node
+ linkType: hard
+
"abstract-leveldown@npm:~6.2.1":
version: 6.2.3
resolution: "abstract-leveldown@npm:6.2.3"
@@ -2326,6 +2321,13 @@ __metadata:
languageName: node
linkType: hard
+"aes-js@npm:4.0.0-beta.5":
+ version: 4.0.0-beta.5
+ resolution: "aes-js@npm:4.0.0-beta.5"
+ checksum: cc2ea969d77df939c32057f7e361b6530aa6cb93cb10617a17a45cd164e6d761002f031ff6330af3e67e58b1f0a3a8fd0b63a720afd591a653b02f649470e15b
+ languageName: node
+ linkType: hard
+
"aes-js@npm:^3.1.1":
version: 3.1.2
resolution: "aes-js@npm:3.1.2"
@@ -2363,7 +2365,7 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.6.1, ajv@npm:^6.9.1":
+"ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.6, ajv@npm:^6.6.1, ajv@npm:^6.9.1":
version: 6.12.6
resolution: "ajv@npm:6.12.6"
dependencies:
@@ -2387,16 +2389,16 @@ __metadata:
languageName: node
linkType: hard
-"amazon-cognito-identity-js@npm:^4.3.3":
- version: 4.6.3
- resolution: "amazon-cognito-identity-js@npm:4.6.3"
+"amazon-cognito-identity-js@npm:^6.0.1, amazon-cognito-identity-js@npm:^6.3.6":
+ version: 6.3.13
+ resolution: "amazon-cognito-identity-js@npm:6.3.13"
dependencies:
+ "@aws-crypto/sha256-js": 1.2.2
buffer: 4.9.2
- crypto-js: ^4.0.0
fast-base64-decode: ^1.0.0
isomorphic-unfetch: ^3.0.0
js-cookie: ^2.2.1
- checksum: 78d34a60e1a3e650b696b8b7b6153faee4b73f9828777b01326316c66377e3ba4175a4b5c29fb084f0fd35222e9133b29fc20930232f8cebbd77a01720ad9f3e
+ checksum: 8a608ef1b99fca57d87103ceb2706d38e499a548d7724f194d50a709fa564ec63dbc703ded6a106e112d5443d06859f40e242815c25c465fdee4806bbce79459
languageName: node
linkType: hard
@@ -2407,6 +2409,15 @@ __metadata:
languageName: node
linkType: hard
+"ansi-align@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "ansi-align@npm:3.0.1"
+ dependencies:
+ string-width: ^4.1.0
+ checksum: 6abfa08f2141d231c257162b15292467081fa49a208593e055c866aa0455b57f3a86b5a678c190c618faa79b4c59e254493099cb700dd9cf2293c6be2c8f5d8d
+ languageName: node
+ linkType: hard
+
"ansi-colors@npm:3.2.3":
version: 3.2.3
resolution: "ansi-colors@npm:3.2.3"
@@ -2437,13 +2448,6 @@ __metadata:
languageName: node
linkType: hard
-"ansi-regex@npm:^2.0.0":
- version: 2.1.1
- resolution: "ansi-regex@npm:2.1.1"
- checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1
- languageName: node
- linkType: hard
-
"ansi-regex@npm:^3.0.0":
version: 3.0.0
resolution: "ansi-regex@npm:3.0.0"
@@ -2465,10 +2469,10 @@ __metadata:
languageName: node
linkType: hard
-"ansi-styles@npm:^2.2.1":
- version: 2.2.1
- resolution: "ansi-styles@npm:2.2.1"
- checksum: ebc0e00381f2a29000d1dac8466a640ce11943cef3bda3cd0020dc042e31e1058ab59bf6169cd794a54c3a7338a61ebc404b7c91e004092dd20e028c432c9c2c
+"ansi-regex@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "ansi-regex@npm:6.0.1"
+ checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169
languageName: node
linkType: hard
@@ -2490,6 +2494,13 @@ __metadata:
languageName: node
linkType: hard
+"ansi-styles@npm:^6.1.0":
+ version: 6.2.1
+ resolution: "ansi-styles@npm:6.2.1"
+ checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9
+ languageName: node
+ linkType: hard
+
"antlr4@npm:4.7.1":
version: 4.7.1
resolution: "antlr4@npm:4.7.1"
@@ -2497,6 +2508,13 @@ __metadata:
languageName: node
linkType: hard
+"antlr4@npm:^4.11.0":
+ version: 4.13.1
+ resolution: "antlr4@npm:4.13.1"
+ checksum: 76dcb0c8ed2d0b83a16641579668088919f51d1288551604e3cdff46c67955b3eef25892aead9de1eca203b3968536fa952e6931f35ba877780af37971c055f1
+ languageName: node
+ linkType: hard
+
"antlr4ts@npm:^0.5.0-alpha.4":
version: 0.5.0-alpha.4
resolution: "antlr4ts@npm:0.5.0-alpha.4"
@@ -2554,45 +2572,6 @@ __metadata:
languageName: node
linkType: hard
-"arr-diff@npm:^4.0.0":
- version: 4.0.0
- resolution: "arr-diff@npm:4.0.0"
- checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0
- languageName: node
- linkType: hard
-
-"arr-flatten@npm:^1.1.0":
- version: 1.1.0
- resolution: "arr-flatten@npm:1.1.0"
- checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22
- languageName: node
- linkType: hard
-
-"arr-union@npm:^3.1.0":
- version: 3.1.0
- resolution: "arr-union@npm:3.1.0"
- checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9
- languageName: node
- linkType: hard
-
-"array-back@npm:^1.0.3, array-back@npm:^1.0.4":
- version: 1.0.4
- resolution: "array-back@npm:1.0.4"
- dependencies:
- typical: ^2.6.0
- checksum: 37a8be4cd4920b3d07bdbef40dae83bb37948f5d49601da98a6e48ba5496e9a0008e7f3f2184bcf4d3501bd371a048c9bdca7dc3cc5c3d5b1eb189bbba7b55db
- languageName: node
- linkType: hard
-
-"array-back@npm:^2.0.0":
- version: 2.0.0
- resolution: "array-back@npm:2.0.0"
- dependencies:
- typical: ^2.6.1
- checksum: ab36ab3504b25116b47541fb0ac78ff13d1e991f33d98c361edd3aada3ed818a900b619bd67b195dd4e41b9256c27e8cdd6a69ece507e482f1207d07670ed6bd
- languageName: node
- linkType: hard
-
"array-back@npm:^3.0.1, array-back@npm:^3.1.0":
version: 3.1.0
resolution: "array-back@npm:3.1.0"
@@ -2607,6 +2586,16 @@ __metadata:
languageName: node
linkType: hard
+"array-buffer-byte-length@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "array-buffer-byte-length@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.5
+ is-array-buffer: ^3.0.4
+ checksum: 53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e
+ languageName: node
+ linkType: hard
+
"array-flatten@npm:1.1.1":
version: 1.1.1
resolution: "array-flatten@npm:1.1.1"
@@ -2634,17 +2623,17 @@ __metadata:
languageName: node
linkType: hard
-"array-uniq@npm:1.0.3":
- version: 1.0.3
- resolution: "array-uniq@npm:1.0.3"
- checksum: 1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e
- languageName: node
- linkType: hard
-
-"array-unique@npm:^0.3.2":
- version: 0.3.2
- resolution: "array-unique@npm:0.3.2"
- checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888
+"array.prototype.findlast@npm:^1.2.2":
+ version: 1.2.5
+ resolution: "array.prototype.findlast@npm:1.2.5"
+ dependencies:
+ 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
+ checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446
languageName: node
linkType: hard
@@ -2660,6 +2649,22 @@ __metadata:
languageName: node
linkType: hard
+"arraybuffer.prototype.slice@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "arraybuffer.prototype.slice@npm:1.0.3"
+ dependencies:
+ 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
+ checksum: 352259cba534dcdd969c92ab002efd2ba5025b2e3b9bead3973150edbdf0696c629d7f4b3f061c5931511e8207bdc2306da614703c820b45dabce39e3daf7e3e
+ languageName: node
+ linkType: hard
+
"arrify@npm:^1.0.0":
version: 1.0.1
resolution: "arrify@npm:1.0.1"
@@ -2667,13 +2672,6 @@ __metadata:
languageName: node
linkType: hard
-"asap@npm:~2.0.6":
- version: 2.0.6
- resolution: "asap@npm:2.0.6"
- checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d
- languageName: node
- linkType: hard
-
"asn1.js@npm:^5.2.0":
version: 5.4.1
resolution: "asn1.js@npm:5.4.1"
@@ -2709,14 +2707,7 @@ __metadata:
languageName: node
linkType: hard
-"assign-symbols@npm:^1.0.0":
- version: 1.0.0
- resolution: "assign-symbols@npm:1.0.0"
- checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c
- languageName: node
- linkType: hard
-
-"ast-parents@npm:0.0.1":
+"ast-parents@npm:0.0.1, ast-parents@npm:^0.0.1":
version: 0.0.1
resolution: "ast-parents@npm:0.0.1"
checksum: 51360afb9f7b939eb0330fdd0d5d855d0242f273f63478d30d9053069120492173719fb3c03ba372bccf1a7c1a9041c3c6bf2ab700de8c0f8c14792b045c3b23
@@ -2737,7 +2728,7 @@ __metadata:
languageName: node
linkType: hard
-"async-eventemitter@npm:^0.2.2, async-eventemitter@npm:^0.2.4":
+"async-eventemitter@npm:0.2.4":
version: 0.2.4
resolution: "async-eventemitter@npm:0.2.4"
dependencies:
@@ -2769,16 +2760,16 @@ __metadata:
languageName: node
linkType: hard
-"async@npm:2.6.2":
- version: 2.6.2
- resolution: "async@npm:2.6.2"
+"async@npm:^2.0.1":
+ version: 2.6.4
+ resolution: "async@npm:2.6.4"
dependencies:
- lodash: ^4.17.11
- checksum: e5e90a3bcc4d9bf964bfc6b77d63b8f5bee8c14e9a51c3317dbcace44d5b6b1fe01cd4fd347449704a107da7fcd25e1382ee8545957b2702782ae720605cf7a4
+ lodash: ^4.17.14
+ checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19
languageName: node
linkType: hard
-"async@npm:^2.0.1, async@npm:^2.1.2, async@npm:^2.4.0, async@npm:^2.5.0, async@npm:^2.6.1":
+"async@npm:^2.4.0":
version: 2.6.3
resolution: "async@npm:2.6.3"
dependencies:
@@ -2808,15 +2799,6 @@ __metadata:
languageName: node
linkType: hard
-"atob@npm:^2.1.2":
- version: 2.1.2
- resolution: "atob@npm:2.1.2"
- bin:
- atob: bin/atob.js
- checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a
- languageName: node
- linkType: hard
-
"available-typed-arrays@npm:^1.0.5":
version: 1.0.5
resolution: "available-typed-arrays@npm:1.0.5"
@@ -2824,6 +2806,15 @@ __metadata:
languageName: node
linkType: hard
+"available-typed-arrays@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "available-typed-arrays@npm:1.0.7"
+ dependencies:
+ possible-typed-array-names: ^1.0.0
+ checksum: 1aa3ffbfe6578276996de660848b6e95669d9a95ad149e3dd0c0cda77db6ee1dbd9d1dd723b65b6d277b882dd0c4b91a654ae9d3cf9e1254b7e93e4908d78fd3
+ languageName: node
+ linkType: hard
+
"aws-sign2@npm:~0.7.0":
version: 0.7.0
resolution: "aws-sign2@npm:0.7.0"
@@ -2838,666 +2829,30 @@ __metadata:
languageName: node
linkType: hard
-"axios@npm:^0.21.2":
- version: 0.21.4
- resolution: "axios@npm:0.21.4"
+"axios@npm:^1.4.0, axios@npm:^1.6.7":
+ version: 1.6.8
+ resolution: "axios@npm:1.6.8"
dependencies:
- follow-redirects: ^1.14.0
- checksum: 44245f24ac971e7458f3120c92f9d66d1fc695e8b97019139de5b0cc65d9b8104647db01e5f46917728edfc0cfd88eb30fc4c55e6053eef4ace76768ce95ff3c
+ follow-redirects: ^1.15.6
+ form-data: ^4.0.0
+ proxy-from-env: ^1.1.0
+ checksum: bf007fa4b207d102459300698620b3b0873503c6d47bf5a8f6e43c0c64c90035a4f698b55027ca1958f61ab43723df2781c38a99711848d232cad7accbcdfcdd
languageName: node
linkType: hard
-"babel-code-frame@npm:^6.26.0":
- version: 6.26.0
- resolution: "babel-code-frame@npm:6.26.0"
- dependencies:
- chalk: ^1.1.3
- esutils: ^2.0.2
- js-tokens: ^3.0.2
- checksum: 9410c3d5a921eb02fa409675d1a758e493323a49e7b9dddb7a2a24d47e61d39ab1129dd29f9175836eac9ce8b1d4c0a0718fcdc57ce0b865b529fd250dbab313
- languageName: node
- linkType: hard
-
-"babel-core@npm:^6.0.14, babel-core@npm:^6.26.0":
- version: 6.26.3
- resolution: "babel-core@npm:6.26.3"
- dependencies:
- babel-code-frame: ^6.26.0
- babel-generator: ^6.26.0
- babel-helpers: ^6.24.1
- babel-messages: ^6.23.0
- babel-register: ^6.26.0
- babel-runtime: ^6.26.0
- babel-template: ^6.26.0
- babel-traverse: ^6.26.0
- babel-types: ^6.26.0
- babylon: ^6.18.0
- convert-source-map: ^1.5.1
- debug: ^2.6.9
- json5: ^0.5.1
- lodash: ^4.17.4
- minimatch: ^3.0.4
- path-is-absolute: ^1.0.1
- private: ^0.1.8
- slash: ^1.0.0
- source-map: ^0.5.7
- checksum: 3d6a37e5c69ea7f7d66c2a261cbd7219197f2f938700e6ebbabb6d84a03f2bf86691ffa066866dcb49ba6c4bd702d347c9e0e147660847d709705cf43c964752
+"balanced-match@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "balanced-match@npm:1.0.2"
+ checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65
languageName: node
linkType: hard
-"babel-generator@npm:^6.26.0":
- version: 6.26.1
- resolution: "babel-generator@npm:6.26.1"
+"base-x@npm:^3.0.2, base-x@npm:^3.0.8":
+ version: 3.0.8
+ resolution: "base-x@npm:3.0.8"
dependencies:
- babel-messages: ^6.23.0
- babel-runtime: ^6.26.0
- babel-types: ^6.26.0
- detect-indent: ^4.0.0
- jsesc: ^1.3.0
- lodash: ^4.17.4
- source-map: ^0.5.7
- trim-right: ^1.0.1
- checksum: 5397f4d4d1243e7157e3336be96c10fcb1f29f73bf2d9842229c71764d9a6431397d249483a38c4d8b1581459e67be4df6f32d26b1666f02d0f5bfc2c2f25193
- languageName: node
- linkType: hard
-
-"babel-helper-builder-binary-assignment-operator-visitor@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-builder-binary-assignment-operator-visitor@npm:6.24.1"
- dependencies:
- babel-helper-explode-assignable-expression: ^6.24.1
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 6ef49597837d042980e78284df014972daac7f1f1f2635d978bb2d13990304322f5135f27b8f2d6eb8c4c2459b496ec76e21544e26afbb5dec88f53089e17476
- languageName: node
- linkType: hard
-
-"babel-helper-call-delegate@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-call-delegate@npm:6.24.1"
- dependencies:
- babel-helper-hoist-variables: ^6.24.1
- babel-runtime: ^6.22.0
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: b6277d6e48c10cf416632f6dfbac77bdf6ba8ec4ac2f6359a77d6b731dae941c2a3ec7f35e1eba78aad2a7e0838197731d1ef75af529055096c4cb7d96432c88
- languageName: node
- linkType: hard
-
-"babel-helper-define-map@npm:^6.24.1":
- version: 6.26.0
- resolution: "babel-helper-define-map@npm:6.26.0"
- dependencies:
- babel-helper-function-name: ^6.24.1
- babel-runtime: ^6.26.0
- babel-types: ^6.26.0
- lodash: ^4.17.4
- checksum: 08e201eb009a7dbd020232fb7468ac772ebb8cfd33ec9a41113a54f4c90fd1e3474497783d635b8f87d797706323ca0c1758c516a630b0c95277112fc2fe4f13
- languageName: node
- linkType: hard
-
-"babel-helper-explode-assignable-expression@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-explode-assignable-expression@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: 1bafdb51ce3dd95cf25d712d24a0c3c2ae02ff58118c77462f14ede4d8161aaee42c5c759c3d3a3344a5851b8b0f8d16b395713413b8194e1c3264fc5b12b754
- languageName: node
- linkType: hard
-
-"babel-helper-function-name@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-function-name@npm:6.24.1"
- dependencies:
- babel-helper-get-function-arity: ^6.24.1
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: d651db9e0b29e135877e90e7858405750a684220d22a6f7c78bb163305a1b322cc1c8bea1bc617625c34d92d0927fdbaa49ee46822e2f86b524eced4c88c7ff0
- languageName: node
- linkType: hard
-
-"babel-helper-get-function-arity@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-get-function-arity@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 37e344d6c5c00b67a3b378490a5d7ba924bab1c2ccd6ecf1b7da96ca679be12d75fbec6279366ae9772e482fb06a7b48293954dd79cbeba9b947e2db67252fbd
- languageName: node
- linkType: hard
-
-"babel-helper-hoist-variables@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-hoist-variables@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 6af1c165d5f0ad192df07daa194d13de77572bd914d2fc9a270d56b93b2705d98eebabf412b1211505535af131fbe95886fcfad8b3a07b4d501c24b9cb8e57fe
- languageName: node
- linkType: hard
-
-"babel-helper-optimise-call-expression@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-optimise-call-expression@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 16e6aba819b473dbf013391f759497df9f57bc7060bc4e5f7f6b60fb03670eb1dec65dd2227601d58f151e9d647e1f676a12466f5e6674379978820fa02c0fbb
- languageName: node
- linkType: hard
-
-"babel-helper-regex@npm:^6.24.1":
- version: 6.26.0
- resolution: "babel-helper-regex@npm:6.26.0"
- dependencies:
- babel-runtime: ^6.26.0
- babel-types: ^6.26.0
- lodash: ^4.17.4
- checksum: ab949a4c90ab255abaafd9ec11a4a6dc77dba360875af2bb0822b699c058858773792c1e969c425c396837f61009f30c9ee5ba4b9a8ca87b0779ae1622f89fb3
- languageName: node
- linkType: hard
-
-"babel-helper-remap-async-to-generator@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-remap-async-to-generator@npm:6.24.1"
- dependencies:
- babel-helper-function-name: ^6.24.1
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: f330943104b61e7f9248d222bd5fe5d3238904ee20643b76197571e14a724723d64a8096b292a60f64788f0efe30176882c376eeebde00657925678e304324f0
- languageName: node
- linkType: hard
-
-"babel-helper-replace-supers@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helper-replace-supers@npm:6.24.1"
- dependencies:
- babel-helper-optimise-call-expression: ^6.24.1
- babel-messages: ^6.23.0
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: ca1d216c5c6afc6af2ef55ea16777ba99e108780ea25da61d93edb09fd85f5e96c756306e2a21e737c3b0c7a16c99762b62a0e5f529d3865b14029fef7351cba
- languageName: node
- linkType: hard
-
-"babel-helpers@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-helpers@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- checksum: 751c6010e18648eebae422adfea5f3b5eff70d592d693bfe0f53346227d74b38e6cd2553c4c18de1e64faac585de490eccbd3ab86ba0885bdac42ed4478bc6b0
- languageName: node
- linkType: hard
-
-"babel-messages@npm:^6.23.0":
- version: 6.23.0
- resolution: "babel-messages@npm:6.23.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: c8075c17587a33869e1a5bd0a5b73bbe395b68188362dacd5418debbc7c8fd784bcd3295e81ee7e410dc2c2655755add6af03698c522209f6a68334c15e6d6ca
- languageName: node
- linkType: hard
-
-"babel-plugin-check-es2015-constants@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-check-es2015-constants@npm:6.22.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 39168cb4ff078911726bfaf9d111d1e18f3e99d8b6f6101d343249b28346c3869e415c97fe7e857e7f34b913f8a052634b2b9dcfb4c0272e5f64ed22df69c735
- languageName: node
- linkType: hard
-
-"babel-plugin-syntax-async-functions@npm:^6.8.0":
- version: 6.13.0
- resolution: "babel-plugin-syntax-async-functions@npm:6.13.0"
- checksum: e982d9756869fa83eb6a4502490a90b0d31e8a41e2ee582045934f022ac8ff5fa6a3386366976fab3a391d5a7ab8ea5f9da623f35ed8ab328b8ab6d9b2feb1d3
- languageName: node
- linkType: hard
-
-"babel-plugin-syntax-exponentiation-operator@npm:^6.8.0":
- version: 6.13.0
- resolution: "babel-plugin-syntax-exponentiation-operator@npm:6.13.0"
- checksum: cbcb3aeae7005240325f72d55c3c90575033123e8a1ddfa6bf9eac4ee7e246c2a23f5b5ab1144879590d947a3ed1d88838169d125e5d7c4f53678526482b020e
- languageName: node
- linkType: hard
-
-"babel-plugin-syntax-trailing-function-commas@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-syntax-trailing-function-commas@npm:6.22.0"
- checksum: d8b9039ded835bb128e8e14eeeb6e0ac2a876b85250924bdc3a8dc2a6984d3bfade4de04d40fb15ea04a86d561ac280ae0d7306d7d4ef7a8c52c43b6a23909c6
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-async-to-generator@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-async-to-generator@npm:6.24.1"
- dependencies:
- babel-helper-remap-async-to-generator: ^6.24.1
- babel-plugin-syntax-async-functions: ^6.8.0
- babel-runtime: ^6.22.0
- checksum: ffe8b4b2ed6db1f413ede385bd1a36f39e02a64ed79ce02779440049af75215c98f8debdc70eb01430bfd889f792682b0136576fe966f7f9e1b30e2a54695a8d
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-arrow-functions@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-transform-es2015-arrow-functions@npm:6.22.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 746e2be0fed20771c07f0984ba79ef0bab37d6e98434267ec96cef57272014fe53a180bfb9047bf69ed149d367a2c97baad54d6057531cd037684f371aab2333
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-block-scoped-functions@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-transform-es2015-block-scoped-functions@npm:6.22.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: f251611f723d94b4068d2a873a2783e019bd81bd7144cfdbcfc31ef166f4d82fa2f1efba64342ba2630dab93a2b12284067725c0aa08315712419a2bc3b92a75
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-block-scoping@npm:^6.23.0":
- version: 6.26.0
- resolution: "babel-plugin-transform-es2015-block-scoping@npm:6.26.0"
- dependencies:
- babel-runtime: ^6.26.0
- babel-template: ^6.26.0
- babel-traverse: ^6.26.0
- babel-types: ^6.26.0
- lodash: ^4.17.4
- checksum: 5e4dee33bf4aab0ce7751a9ae845c25d3bf03944ffdfc8d784e1de2123a3eec19657dd59274c9969461757f5e2ab75c517e978bafe5309a821a41e278ad38a63
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-classes@npm:^6.23.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-classes@npm:6.24.1"
- dependencies:
- babel-helper-define-map: ^6.24.1
- babel-helper-function-name: ^6.24.1
- babel-helper-optimise-call-expression: ^6.24.1
- babel-helper-replace-supers: ^6.24.1
- babel-messages: ^6.23.0
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: 999392b47a83cf9297e49fbde00bc9b15fb6d71bc041f7b3d621ac45361486ec4b66f55c47f98dca6c398ceaa8bfc9f3c21257854822c4523e7475a92e6c000a
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-computed-properties@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-computed-properties@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- checksum: 34e466bfd4b021aa3861db66cf10a9093fa6a4fcedbc8c82a55f6ca1fcbd212a9967f2df6c5f9e9a20046fa43c8967633a476f2bbc15cb8d3769cbba948a5c16
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-destructuring@npm:^6.23.0":
- version: 6.23.0
- resolution: "babel-plugin-transform-es2015-destructuring@npm:6.23.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 1343d27f09846e6e1e48da7b83d0d4f2d5571559c468ad8ad4c3715b8ff3e21b2d553e90ad420dc6840de260b7f3b9f9c057606d527e3d838a52a3a7c5fffdbe
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-duplicate-keys@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-duplicate-keys@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 756a7a13517c3e80c8312137b9872b9bc32fbfbb905e9f1e45bf321e2b464d0e6a6e6deca22c61b62377225bd8136b73580897cccb394995d6e00bc8ce882ba4
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-for-of@npm:^6.23.0":
- version: 6.23.0
- resolution: "babel-plugin-transform-es2015-for-of@npm:6.23.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 0124e320c32b25de84ddaba951a6f0ad031fa5019de54de32bd317d2a97b3f967026008f32e8c88728330c1cce7c4f1d0ecb15007020d50bd5ca1438a882e205
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-function-name@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-function-name@npm:6.24.1"
- dependencies:
- babel-helper-function-name: ^6.24.1
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 629ecd824d53ec973a3ef85e74d9fd8c710203084ca2f7ac833879ddfa3b83a28f0270fe2ee5f3b8c078bb4b3e4b843173a646a7cd4abc49e8c1c563d31fb711
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-literals@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-transform-es2015-literals@npm:6.22.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 40e270580a0236990f2555f5dc7ae24b4db9f4709ca455ed1a6724b0078592482274be7448579b14122bd06481641a38e7b2e48d0b49b8c81c88e154a26865b4
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-modules-amd@npm:^6.22.0, babel-plugin-transform-es2015-modules-amd@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-modules-amd@npm:6.24.1"
- dependencies:
- babel-plugin-transform-es2015-modules-commonjs: ^6.24.1
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- checksum: 084c7a1ef3bd0b2b9f4851b27cfb65f8ea1408349af05b4d88f994c23844a0754abfa4799bbc5f3f0ec94232b3a54a2e46d7f1dff1bdd40fa66a46f645197dfa
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-modules-commonjs@npm:^6.23.0, babel-plugin-transform-es2015-modules-commonjs@npm:^6.24.1":
- version: 6.26.2
- resolution: "babel-plugin-transform-es2015-modules-commonjs@npm:6.26.2"
- dependencies:
- babel-plugin-transform-strict-mode: ^6.24.1
- babel-runtime: ^6.26.0
- babel-template: ^6.26.0
- babel-types: ^6.26.0
- checksum: 9cd93a84037855c1879bcc100229bee25b44c4805a9a9f040e8927f772c4732fa17a0706c81ea0db77b357dd9baf84388eec03ceb36597932c48fe32fb3d4171
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-modules-systemjs@npm:^6.23.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-modules-systemjs@npm:6.24.1"
- dependencies:
- babel-helper-hoist-variables: ^6.24.1
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- checksum: b34877e201d7b4d293d87c04962a3575fe7727a9593e99ce3a7f8deea3da8883a08bd87a6a12927083ac26f47f6944a31cdbfe3d6eb4d18dd884cb2d304ee943
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-modules-umd@npm:^6.23.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-modules-umd@npm:6.24.1"
- dependencies:
- babel-plugin-transform-es2015-modules-amd: ^6.24.1
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- checksum: 735857b9f2ad0c41ceda31a1594fe2a063025f4428f9e243885a437b5bd415aca445a5e8495ff34b7120617735b1c3a2158033f0be23f1f5a90e655fff742a01
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-object-super@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-object-super@npm:6.24.1"
- dependencies:
- babel-helper-replace-supers: ^6.24.1
- babel-runtime: ^6.22.0
- checksum: 97b2968f699ac94cb55f4f1e7ea53dc9e4264ec99cab826f40f181da9f6db5980cd8b4985f05c7b6f1e19fbc31681e6e63894dfc5ecf4b3a673d736c4ef0f9db
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-parameters@npm:^6.23.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-parameters@npm:6.24.1"
- dependencies:
- babel-helper-call-delegate: ^6.24.1
- babel-helper-get-function-arity: ^6.24.1
- babel-runtime: ^6.22.0
- babel-template: ^6.24.1
- babel-traverse: ^6.24.1
- babel-types: ^6.24.1
- checksum: bb6c047dc10499be8ccebdffac22c77f14aee5d3106da8f2e96c801d2746403c809d8c6922e8ebd2eb31d8827b4bb2321ba43378fcdc9dca206417bb345c4f93
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-shorthand-properties@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-shorthand-properties@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 9302c5de158a28432e932501a783560094c624c3659f4e0a472b6b2e9d6e8ab2634f82ef74d3e75363d46ccff6aad119267dbc34f67464c70625e24a651ad9e5
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-spread@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-transform-es2015-spread@npm:6.22.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 8694a8a7802d905503194ab81c155354b36d39fc819ad2148f83146518dd37d2c6926c8568712f5aa890169afc9353fd4bcc49397959c6dc9da3480b449c0ae9
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-sticky-regex@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-sticky-regex@npm:6.24.1"
- dependencies:
- babel-helper-regex: ^6.24.1
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: d9c45401caf0d74779a1170e886976d4c865b7de2e90dfffc7557481b9e73b6e37e9f1028aa07b813896c4df88f4d7e89968249a74547c7875e6c499c90c801d
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-template-literals@npm:^6.22.0":
- version: 6.22.0
- resolution: "babel-plugin-transform-es2015-template-literals@npm:6.22.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 4fad2b7b383a2e784858ee7bf837419ee8ff9602afe218e1472f8c33a0c008f01d06f23ff2f2322fb23e1ed17e37237a818575fe88ecc5417d85331973b0ea4d
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-typeof-symbol@npm:^6.23.0":
- version: 6.23.0
- resolution: "babel-plugin-transform-es2015-typeof-symbol@npm:6.23.0"
- dependencies:
- babel-runtime: ^6.22.0
- checksum: 68a1609c6abcddf5f138c56bafcd9fad7c6b3b404fe40910148ab70eb21d6c7807a343a64eb81ce45daf4b70c384c528c55fad45e0d581e4b09efa4d574a6a1b
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-es2015-unicode-regex@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-es2015-unicode-regex@npm:6.24.1"
- dependencies:
- babel-helper-regex: ^6.24.1
- babel-runtime: ^6.22.0
- regexpu-core: ^2.0.0
- checksum: 739ddb02e5f77904f83ea45323c9a636e3aed34b2a49c7c68208b5f2834eecb6b655e772f870f16a7aaf09ac8219f754ad69d61741d088f5b681d13cda69265d
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-exponentiation-operator@npm:^6.22.0":
- version: 6.24.1
- resolution: "babel-plugin-transform-exponentiation-operator@npm:6.24.1"
- dependencies:
- babel-helper-builder-binary-assignment-operator-visitor: ^6.24.1
- babel-plugin-syntax-exponentiation-operator: ^6.8.0
- babel-runtime: ^6.22.0
- checksum: 533ad53ba2cd6ff3c0f751563e1beea429c620038dc2efeeb8348ab4752ebcc95d1521857abfd08047400f1921b2d4df5e0cd266e65ddbe4c3edc58b9ad6fd3c
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-regenerator@npm:^6.22.0":
- version: 6.26.0
- resolution: "babel-plugin-transform-regenerator@npm:6.26.0"
- dependencies:
- regenerator-transform: ^0.10.0
- checksum: 41a51d8f692bf4a5cbd705fa70f3cb6abebae66d9ba3dccfb5921da262f8c30f630e1fe9f7b132e29b96fe0d99385a801f6aa204278c5bd0af4284f7f93a665a
- languageName: node
- linkType: hard
-
-"babel-plugin-transform-strict-mode@npm:^6.24.1":
- version: 6.24.1
- resolution: "babel-plugin-transform-strict-mode@npm:6.24.1"
- dependencies:
- babel-runtime: ^6.22.0
- babel-types: ^6.24.1
- checksum: 32d70ce9d8c8918a6a840e46df03dfe1e265eb9b25df5a800fedb5065ef1b4b5f24d7c62d92fca0e374db8b0b9b6f84e68edd02ad21883d48f608583ec29f638
- languageName: node
- linkType: hard
-
-"babel-preset-env@npm:^1.7.0":
- version: 1.7.0
- resolution: "babel-preset-env@npm:1.7.0"
- dependencies:
- babel-plugin-check-es2015-constants: ^6.22.0
- babel-plugin-syntax-trailing-function-commas: ^6.22.0
- babel-plugin-transform-async-to-generator: ^6.22.0
- babel-plugin-transform-es2015-arrow-functions: ^6.22.0
- babel-plugin-transform-es2015-block-scoped-functions: ^6.22.0
- babel-plugin-transform-es2015-block-scoping: ^6.23.0
- babel-plugin-transform-es2015-classes: ^6.23.0
- babel-plugin-transform-es2015-computed-properties: ^6.22.0
- babel-plugin-transform-es2015-destructuring: ^6.23.0
- babel-plugin-transform-es2015-duplicate-keys: ^6.22.0
- babel-plugin-transform-es2015-for-of: ^6.23.0
- babel-plugin-transform-es2015-function-name: ^6.22.0
- babel-plugin-transform-es2015-literals: ^6.22.0
- babel-plugin-transform-es2015-modules-amd: ^6.22.0
- babel-plugin-transform-es2015-modules-commonjs: ^6.23.0
- babel-plugin-transform-es2015-modules-systemjs: ^6.23.0
- babel-plugin-transform-es2015-modules-umd: ^6.23.0
- babel-plugin-transform-es2015-object-super: ^6.22.0
- babel-plugin-transform-es2015-parameters: ^6.23.0
- babel-plugin-transform-es2015-shorthand-properties: ^6.22.0
- babel-plugin-transform-es2015-spread: ^6.22.0
- babel-plugin-transform-es2015-sticky-regex: ^6.22.0
- babel-plugin-transform-es2015-template-literals: ^6.22.0
- babel-plugin-transform-es2015-typeof-symbol: ^6.23.0
- babel-plugin-transform-es2015-unicode-regex: ^6.22.0
- babel-plugin-transform-exponentiation-operator: ^6.22.0
- babel-plugin-transform-regenerator: ^6.22.0
- browserslist: ^3.2.6
- invariant: ^2.2.2
- semver: ^5.3.0
- checksum: 6e459a6c76086a2a377707680148b94c3d0aba425b039b427ca01171ebada7f5db5d336b309548462f6ba015e13176a4724f912875c15084d4aa88d77020d185
- languageName: node
- linkType: hard
-
-"babel-register@npm:^6.26.0":
- version: 6.26.0
- resolution: "babel-register@npm:6.26.0"
- dependencies:
- babel-core: ^6.26.0
- babel-runtime: ^6.26.0
- core-js: ^2.5.0
- home-or-tmp: ^2.0.0
- lodash: ^4.17.4
- mkdirp: ^0.5.1
- source-map-support: ^0.4.15
- checksum: 75d5fe060e4850dbdbd5f56db2928cd0b6b6c93a65ba5f2a991465af4dc3f4adf46d575138f228b2169b1e25e3b4a7cdd16515a355fea41b873321bf56467583
- languageName: node
- linkType: hard
-
-"babel-runtime@npm:^6.18.0, babel-runtime@npm:^6.22.0, babel-runtime@npm:^6.26.0":
- version: 6.26.0
- resolution: "babel-runtime@npm:6.26.0"
- dependencies:
- core-js: ^2.4.0
- regenerator-runtime: ^0.11.0
- checksum: 8aeade94665e67a73c1ccc10f6fd42ba0c689b980032b70929de7a6d9a12eb87ef51902733f8fefede35afea7a5c3ef7e916a64d503446c1eedc9e3284bd3d50
- languageName: node
- linkType: hard
-
-"babel-template@npm:^6.24.1, babel-template@npm:^6.26.0":
- version: 6.26.0
- resolution: "babel-template@npm:6.26.0"
- dependencies:
- babel-runtime: ^6.26.0
- babel-traverse: ^6.26.0
- babel-types: ^6.26.0
- babylon: ^6.18.0
- lodash: ^4.17.4
- checksum: 028dd57380f09b5641b74874a19073c53c4fb3f1696e849575aae18f8c80eaf21db75209057db862f3b893ce2cd9b795d539efa591b58f4a0fb011df0a56fbed
- languageName: node
- linkType: hard
-
-"babel-traverse@npm:^6.24.1, babel-traverse@npm:^6.26.0":
- version: 6.26.0
- resolution: "babel-traverse@npm:6.26.0"
- dependencies:
- babel-code-frame: ^6.26.0
- babel-messages: ^6.23.0
- babel-runtime: ^6.26.0
- babel-types: ^6.26.0
- babylon: ^6.18.0
- debug: ^2.6.8
- globals: ^9.18.0
- invariant: ^2.2.2
- lodash: ^4.17.4
- checksum: fca037588d2791ae0409f1b7aa56075b798699cccc53ea04d82dd1c0f97b9e7ab17065f7dd3ecd69101d7874c9c8fd5e0f88fa53abbae1fe94e37e6b81ebcb8d
- languageName: node
- linkType: hard
-
-"babel-types@npm:^6.19.0, babel-types@npm:^6.24.1, babel-types@npm:^6.26.0":
- version: 6.26.0
- resolution: "babel-types@npm:6.26.0"
- dependencies:
- babel-runtime: ^6.26.0
- esutils: ^2.0.2
- lodash: ^4.17.4
- to-fast-properties: ^1.0.3
- checksum: d16b0fa86e9b0e4c2623be81d0a35679faff24dd2e43cde4ca58baf49f3e39415a011a889e6c2259ff09e1228e4c3a3db6449a62de59e80152fe1ce7398fde76
- languageName: node
- linkType: hard
-
-"babelify@npm:^7.3.0":
- version: 7.3.0
- resolution: "babelify@npm:7.3.0"
- dependencies:
- babel-core: ^6.0.14
- object-assign: ^4.0.0
- checksum: 4e169606ed0f2ff6f886d2367c72243d36b3b354490ccc916b913f6b4afd14102c91f771d71d485857feb134581dd48702f25431e19b5c7035f474f9898c3c2e
- languageName: node
- linkType: hard
-
-"babylon@npm:^6.18.0":
- version: 6.18.0
- resolution: "babylon@npm:6.18.0"
- bin:
- babylon: ./bin/babylon.js
- checksum: 0777ae0c735ce1cbfc856d627589ed9aae212b84fb0c03c368b55e6c5d3507841780052808d0ad46e18a2ba516e93d55eeed8cd967f3b2938822dfeccfb2a16d
- languageName: node
- linkType: hard
-
-"backoff@npm:^2.5.0":
- version: 2.5.0
- resolution: "backoff@npm:2.5.0"
- dependencies:
- precond: 0.2
- checksum: ccdcf2a26acd9379d0d4f09e3fb3b7ee34dee94f07ab74d1e38b38f89a3675d9f3cbebb142d9c61c655f4c9eb63f1d6ec28cebeb3dc9215efd8fe7cef92725b9
- languageName: node
- linkType: hard
-
-"balanced-match@npm:^1.0.0":
- version: 1.0.2
- resolution: "balanced-match@npm:1.0.2"
- checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65
- languageName: node
- linkType: hard
-
-"base-x@npm:^3.0.2, base-x@npm:^3.0.8":
- version: 3.0.8
- resolution: "base-x@npm:3.0.8"
- dependencies:
- safe-buffer: ^5.0.1
- checksum: 92b95493e636999d6505d9c5abfa049fce1bdde9327f733c5984e712cdb98482d2d45410e4ac1d04e5a004545e46898674f405db04c9555ba3e35fc00b150bf4
+ safe-buffer: ^5.0.1
+ checksum: 92b95493e636999d6505d9c5abfa049fce1bdde9327f733c5984e712cdb98482d2d45410e4ac1d04e5a004545e46898674f405db04c9555ba3e35fc00b150bf4
languageName: node
linkType: hard
@@ -3508,21 +2863,6 @@ __metadata:
languageName: node
linkType: hard
-"base@npm:^0.11.1":
- version: 0.11.2
- resolution: "base@npm:0.11.2"
- dependencies:
- cache-base: ^1.0.1
- class-utils: ^0.3.5
- component-emitter: ^1.2.1
- define-property: ^1.0.0
- isobject: ^3.0.1
- mixin-deep: ^1.2.0
- pascalcase: ^0.1.1
- checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd
- languageName: node
- linkType: hard
-
"bcrypt-pbkdf@npm:^1.0.0":
version: 1.0.2
resolution: "bcrypt-pbkdf@npm:1.0.2"
@@ -3553,23 +2893,14 @@ __metadata:
languageName: node
linkType: hard
-"bigint-crypto-utils@npm:^3.0.23":
- version: 3.1.4
- resolution: "bigint-crypto-utils@npm:3.1.4"
- dependencies:
- bigint-mod-arith: ^3.1.0
- checksum: 302511e6743c03936ab32dce086c182efe8f2a2b256d4fec74a783026b11c45f748f247013b9c4eff8671f6519411710bddbe0a007a3564e63f183a8a39de638
- languageName: node
- linkType: hard
-
-"bigint-mod-arith@npm:^3.1.0":
- version: 3.1.0
- resolution: "bigint-mod-arith@npm:3.1.0"
- checksum: 2dc79460b9eb286d0b007ff8bd0fc1884904b6a13f8119c126efa7a2a6326dc0d668e13c7eb67dc2f81d9f6ad6d5eff8714d8b86ff2c35dbb6156bd02570bb5c
+"bigint-crypto-utils@npm:^3.2.2":
+ version: 3.3.0
+ resolution: "bigint-crypto-utils@npm:3.3.0"
+ checksum: 9598ce57b23f776c8936d44114c9f051e62b5fa654915b664784cbcbacc5aa0485f4479571c51ff58008abb1210c0d6a234853742f07cf84bda890f2a1e01000
languageName: node
linkType: hard
-"bignumber.js@npm:^9.0.0, bignumber.js@npm:^9.0.1":
+"bignumber.js@npm:^9.0.0":
version: 9.0.1
resolution: "bignumber.js@npm:9.0.1"
checksum: 6e72f6069d9db32fc8d27561164de9f811b15f9144be61f323d8b36150a239eea50c92e20ba38af2ba5e717af10b8ef12db8f9948fe2ff02bf17ede5239d15d3
@@ -3595,19 +2926,6 @@ __metadata:
languageName: node
linkType: hard
-"bip39@npm:2.5.0":
- version: 2.5.0
- resolution: "bip39@npm:2.5.0"
- dependencies:
- create-hash: ^1.1.0
- pbkdf2: ^3.0.9
- randombytes: ^2.0.1
- safe-buffer: ^5.0.1
- unorm: ^1.3.3
- checksum: 26e83583c43a8430afea1c385328b447005c74ddaf997cd8d3e416057f4968360b08ebf7de32374d605295c3abdd7ddd448d8078a2aa3d951735f4499c23875b
- languageName: node
- linkType: hard
-
"bip44-constants@npm:^243.0.0":
version: 243.0.0
resolution: "bip44-constants@npm:243.0.0"
@@ -3622,7 +2940,7 @@ __metadata:
languageName: node
linkType: hard
-"bluebird@npm:^3.5.0, bluebird@npm:^3.5.2":
+"bluebird@npm:^3.5.0":
version: 3.7.2
resolution: "bluebird@npm:3.7.2"
checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef
@@ -3636,14 +2954,14 @@ __metadata:
languageName: node
linkType: hard
-"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.10.0, bn.js@npm:^4.11.0, bn.js@npm:^4.11.1, bn.js@npm:^4.11.6, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9, bn.js@npm:^4.8.0":
+"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.0, bn.js@npm:^4.11.1, bn.js@npm:^4.11.6, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9":
version: 4.12.0
resolution: "bn.js@npm:4.12.0"
checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12
languageName: node
linkType: hard
-"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1, bn.js@npm:^5.1.2, bn.js@npm:^5.2.1":
+"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1, bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1":
version: 5.2.1
resolution: "bn.js@npm:5.2.1"
checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3
@@ -3670,6 +2988,22 @@ __metadata:
languageName: node
linkType: hard
+"boxen@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "boxen@npm:5.1.2"
+ 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
+ checksum: 82d03e42a72576ff235123f17b7c505372fe05c83f75f61e7d4fa4bcb393897ec95ce766fecb8f26b915f0f7a7227d66e5ec7cef43f5b2bd9d3aeed47ec55877
+ languageName: node
+ linkType: hard
+
"brace-expansion@npm:^1.1.7":
version: 1.1.11
resolution: "brace-expansion@npm:1.1.11"
@@ -3689,24 +3023,6 @@ __metadata:
languageName: node
linkType: hard
-"braces@npm:^2.3.1":
- version: 2.3.2
- resolution: "braces@npm:2.3.2"
- dependencies:
- arr-flatten: ^1.1.0
- array-unique: ^0.3.2
- extend-shallow: ^2.0.1
- fill-range: ^4.0.0
- isobject: ^3.0.1
- repeat-element: ^1.1.2
- snapdragon: ^0.8.1
- snapdragon-node: ^2.0.1
- split-string: ^3.0.2
- to-regex: ^3.0.1
- checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0
- languageName: node
- linkType: hard
-
"braces@npm:^3.0.2, braces@npm:~3.0.2":
version: 3.0.2
resolution: "braces@npm:3.0.2"
@@ -3723,15 +3039,10 @@ __metadata:
languageName: node
linkType: hard
-"browser-level@npm:^1.0.1":
- version: 1.0.1
- resolution: "browser-level@npm:1.0.1"
- dependencies:
- abstract-level: ^1.0.2
- catering: ^2.1.1
- module-error: ^1.0.2
- run-parallel-limit: ^1.1.0
- checksum: 67fbc77ce832940bfa25073eccff279f512ad56f545deb996a5b23b02316f5e76f4a79d381acc27eda983f5c9a2566aaf9c97e4fdd0748288c4407307537a29b
+"brotli-wasm@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "brotli-wasm@npm:2.0.1"
+ checksum: 3a0506c66ad3a27512deebee3a9c9a0c59cd1dc7de0c1934c37f0a7b8772de8aa22093fb1fb466c8fdd1cd80f99e5a7c814ff1235350853fb1cd4129d99609f5
languageName: node
linkType: hard
@@ -3800,21 +3111,9 @@ __metadata:
elliptic: ^6.5.3
inherits: ^2.0.4
parse-asn1: ^5.1.5
- readable-stream: ^3.6.0
- safe-buffer: ^5.2.0
- checksum: 0221f190e3f5b2d40183fa51621be7e838d9caa329fe1ba773406b7637855f37b30f5d83e52ff8f244ed12ffe6278dd9983638609ed88c841ce547e603855707
- languageName: node
- linkType: hard
-
-"browserslist@npm:^3.2.6":
- version: 3.2.8
- resolution: "browserslist@npm:3.2.8"
- dependencies:
- caniuse-lite: ^1.0.30000844
- electron-to-chromium: ^1.3.47
- bin:
- browserslist: ./cli.js
- checksum: 74d9ab1089a3813f54a7c4f9f6612faa6256799c8e42c7e00e4aae626c17f199049a01707a525a05b1673cd1493936583e51aad295e25249166e7e8fbd0273ba
+ readable-stream: ^3.6.0
+ safe-buffer: ^5.2.0
+ checksum: 0221f190e3f5b2d40183fa51621be7e838d9caa329fe1ba773406b7637855f37b30f5d83e52ff8f244ed12ffe6278dd9983638609ed88c841ce547e603855707
languageName: node
linkType: hard
@@ -3859,15 +3158,6 @@ __metadata:
languageName: node
linkType: hard
-"buffer-xor@npm:^2.0.1":
- version: 2.0.2
- resolution: "buffer-xor@npm:2.0.2"
- dependencies:
- safe-buffer: ^5.1.1
- checksum: 78226fcae9f4a0b4adec69dffc049f26f6bab240dfdd1b3f6fe07c4eb6b90da202ea5c363f98af676156ee39450a06405fddd9e8965f68a5327edcc89dcbe5d0
- languageName: node
- linkType: hard
-
"buffer@npm:4.9.2":
version: 4.9.2
resolution: "buffer@npm:4.9.2"
@@ -3889,7 +3179,7 @@ __metadata:
languageName: node
linkType: hard
-"buffer@npm:^5.0.5, buffer@npm:^5.2.1, buffer@npm:^5.5.0, buffer@npm:^5.6.0":
+"buffer@npm:^5.0.5, buffer@npm:^5.5.0, buffer@npm:^5.6.0":
version: 5.7.1
resolution: "buffer@npm:5.7.1"
dependencies:
@@ -3909,12 +3199,13 @@ __metadata:
languageName: node
linkType: hard
-"busboy@npm:^1.6.0":
- version: 1.6.0
- resolution: "busboy@npm:1.6.0"
+"bufferutil@npm:4.0.7":
+ version: 4.0.7
+ resolution: "bufferutil@npm:4.0.7"
dependencies:
- streamsearch: ^1.1.0
- checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e
+ node-gyp: latest
+ node-gyp-build: ^4.3.0
+ checksum: f75aa87e3d1b99b87a95f60a855e63f70af07b57fb8443e75a2ddfef2e47788d130fdd46e3a78fd7e0c10176082b26dfbed970c5b8632e1cc299cafa0e93ce45
languageName: node
linkType: hard
@@ -3925,25 +3216,6 @@ __metadata:
languageName: node
linkType: hard
-"bytewise-core@npm:^1.2.2":
- version: 1.2.3
- resolution: "bytewise-core@npm:1.2.3"
- dependencies:
- typewise-core: ^1.2
- checksum: e0d28fb7ff5bb6fd9320eef31c6b37e98da3b9a24d9893e2c17e0ee544457e0c76c2d3fc642c99d82daa0f18dcd49e7dce8dcc338711200e9ced79107cb78e8e
- languageName: node
- linkType: hard
-
-"bytewise@npm:~1.1.0":
- version: 1.1.0
- resolution: "bytewise@npm:1.1.0"
- dependencies:
- bytewise-core: ^1.2.2
- typewise: ^1.0.3
- checksum: 20d7387ecf8c29adc4740e626fb02eaa27f34ae4c5ca881657d403e792730c0625ba4fed824462b3ddb7d3ebe41b7abbfe24f1cd3bf07cecc5a631f154d2d8d2
- languageName: node
- linkType: hard
-
"cacache@npm:^16.1.0":
version: 16.1.3
resolution: "cacache@npm:16.1.3"
@@ -3970,23 +3242,6 @@ __metadata:
languageName: node
linkType: hard
-"cache-base@npm:^1.0.1":
- version: 1.0.1
- resolution: "cache-base@npm:1.0.1"
- dependencies:
- collection-visit: ^1.0.0
- component-emitter: ^1.2.1
- get-value: ^2.0.6
- has-value: ^1.0.0
- isobject: ^3.0.1
- set-value: ^2.0.0
- to-object-path: ^0.3.0
- union-value: ^1.0.0
- unset-value: ^1.0.0
- checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107
- languageName: node
- linkType: hard
-
"cacheable-lookup@npm:^6.0.4":
version: 6.1.0
resolution: "cacheable-lookup@npm:6.1.0"
@@ -3994,21 +3249,6 @@ __metadata:
languageName: node
linkType: hard
-"cacheable-request@npm:^6.0.0":
- version: 6.1.0
- resolution: "cacheable-request@npm:6.1.0"
- dependencies:
- clone-response: ^1.0.2
- get-stream: ^5.1.0
- http-cache-semantics: ^4.0.0
- keyv: ^3.0.0
- lowercase-keys: ^2.0.0
- normalize-url: ^4.1.0
- responselike: ^1.0.2
- checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1
- languageName: node
- linkType: hard
-
"cacheable-request@npm:^7.0.2":
version: 7.0.2
resolution: "cacheable-request@npm:7.0.2"
@@ -4024,16 +3264,6 @@ __metadata:
languageName: node
linkType: hard
-"cachedown@npm:1.0.0":
- version: 1.0.0
- resolution: "cachedown@npm:1.0.0"
- dependencies:
- abstract-leveldown: ^2.4.1
- lru-cache: ^3.2.0
- checksum: ffd229839ca7efbfa14e35321fb8df444421e192bdf7be16048a303d2a24f3ed86cbe6c7a8cca91761423e4c53c3ed1098d337bbb9d3448801d4792172b4ab3e
- languageName: node
- linkType: hard
-
"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2":
version: 1.0.2
resolution: "call-bind@npm:1.0.2"
@@ -4044,6 +3274,19 @@ __metadata:
languageName: node
linkType: hard
+"call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "call-bind@npm:1.0.7"
+ dependencies:
+ es-define-property: ^1.0.0
+ es-errors: ^1.3.0
+ function-bind: ^1.1.2
+ get-intrinsic: ^1.2.4
+ set-function-length: ^1.2.1
+ checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029
+ languageName: node
+ linkType: hard
+
"caller-callsite@npm:^2.0.0":
version: 2.0.0
resolution: "caller-callsite@npm:2.0.0"
@@ -4076,13 +3319,6 @@ __metadata:
languageName: node
linkType: hard
-"camelcase@npm:^3.0.0":
- version: 3.0.0
- resolution: "camelcase@npm:3.0.0"
- checksum: ae4fe1c17c8442a3a345a6b7d2393f028ab7a7601af0c352ad15d1ab97ca75112e19e29c942b2a214898e160194829b68923bce30e018d62149c6d84187f1673
- languageName: node
- linkType: hard
-
"camelcase@npm:^5.0.0":
version: 5.3.1
resolution: "camelcase@npm:5.3.1"
@@ -4090,82 +3326,82 @@ __metadata:
languageName: node
linkType: hard
-"camelcase@npm:^6.0.0":
+"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0":
version: 6.3.0
resolution: "camelcase@npm:6.3.0"
checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d
languageName: node
linkType: hard
-"caniuse-lite@npm:^1.0.30000844":
- version: 1.0.30001222
- resolution: "caniuse-lite@npm:1.0.30001222"
- checksum: 14a725756db4751131b0e8ff83ae7ddccd779e294fefe7a49a2b1065b57be75e7df83b6752127766874229f6e490ac3974932e6bccfd047f9ab6c422e60d13bd
- languageName: node
- linkType: hard
-
-"caseless@npm:^0.12.0, caseless@npm:~0.12.0":
+"caseless@npm:~0.12.0":
version: 0.12.0
resolution: "caseless@npm:0.12.0"
checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751
languageName: node
linkType: hard
-"catering@npm:^2.0.0, catering@npm:^2.1.0, catering@npm:^2.1.1":
+"catering@npm:^2.0.0, catering@npm:^2.1.0":
version: 2.1.1
resolution: "catering@npm:2.1.1"
checksum: 205daefa69c935b0c19f3d8f2e0a520dd69aebe9bda55902958003f7c9cff8f967dfb90071b421bd6eb618576f657a89d2bc0986872c9bc04bbd66655e9d4bd6
languageName: node
linkType: hard
-"cbor@npm:^5.0.2":
- version: 5.2.0
- resolution: "cbor@npm:5.2.0"
+"cbor@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "cbor@npm:8.1.0"
dependencies:
- bignumber.js: ^9.0.1
- nofilter: ^1.0.4
- checksum: b3c39dae64370f361526dbec88f51d0f1b47027224cdd21dbd64c228f0fe7eaa945932d349ec5324068a6c6dcdbb1e3b46242852524fd53c526d14cb60514bdc
+ nofilter: ^3.1.0
+ checksum: a90338435dc7b45cc01461af979e3bb6ddd4f2a08584c437586039cd5f2235014c06e49d664295debbfb3514d87b2f06728092ab6aa6175e2e85e9cd7dc0c1fd
languageName: node
linkType: hard
-"cbor@npm:^8.0.0":
- version: 8.0.0
- resolution: "cbor@npm:8.0.0"
+"cbor@npm:^9.0.0":
+ version: 9.0.2
+ resolution: "cbor@npm:9.0.2"
+ dependencies:
+ nofilter: ^3.1.0
+ checksum: 925edae7bf964be5a26dba1b7ba6311ac12b6a66234dc958958997a0576cdc740632dc19852a5b84d8a75101936bea1fe122dc22539d6e11f4539c731853ba2e
+ languageName: node
+ linkType: hard
+
+"chai-as-promised@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "chai-as-promised@npm:7.1.1"
dependencies:
- nofilter: ^3.0.2
- checksum: a53199261c531311e813926e249101aac11cef8594edb21715a2968782433902b9cba1939f1c837e59f4ef903d82f3eddfaae8d685c1c6789f3b7ed6f3889ee2
+ check-error: ^1.0.2
+ peerDependencies:
+ chai: ">= 2.1.2 < 5"
+ checksum: 7262868a5b51a12af4e432838ddf97a893109266a505808e1868ba63a12de7ee1166e9d43b5c501a190c377c1b11ecb9ff8e093c89f097ad96c397e8ec0f8d6a
languageName: node
linkType: hard
"chai@npm:^4.3.6":
- version: 4.3.6
- resolution: "chai@npm:4.3.6"
+ version: 4.4.1
+ resolution: "chai@npm:4.4.1"
dependencies:
assertion-error: ^1.1.0
- check-error: ^1.0.2
- deep-eql: ^3.0.1
- get-func-name: ^2.0.0
- loupe: ^2.3.1
+ check-error: ^1.0.3
+ deep-eql: ^4.1.3
+ get-func-name: ^2.0.2
+ loupe: ^2.3.6
pathval: ^1.1.1
- type-detect: ^4.0.5
- checksum: acff93fd537f96d4a4d62dd83810285dffcfccb5089e1bf2a1205b28ec82d93dff551368722893cf85004282df10ee68802737c33c90c5493957ed449ed7ce71
+ type-detect: ^4.0.8
+ checksum: 9ab84f36eb8e0b280c56c6c21ca4da5933132cd8a0c89c384f1497f77953640db0bc151edd47f81748240a9fab57b78f7d925edfeedc8e8fc98016d71f40c36e
languageName: node
linkType: hard
-"chalk@npm:^1.1.3":
- version: 1.1.3
- resolution: "chalk@npm:1.1.3"
+"chalk@npm:4.1.2, chalk@npm:^4.1.2":
+ version: 4.1.2
+ resolution: "chalk@npm:4.1.2"
dependencies:
- ansi-styles: ^2.2.1
- escape-string-regexp: ^1.0.2
- has-ansi: ^2.0.0
- strip-ansi: ^3.0.0
- supports-color: ^2.0.0
- checksum: 9d2ea6b98fc2b7878829eec223abcf404622db6c48396a9b9257f6d0ead2acf18231ae368d6a664a83f272b0679158da12e97b5229f794939e555cc574478acd
+ ansi-styles: ^4.1.0
+ supports-color: ^7.1.0
+ checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc
languageName: node
linkType: hard
-"chalk@npm:^2.0.0, chalk@npm:^2.1.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2":
+"chalk@npm:^2.0.0, chalk@npm:^2.1.0, chalk@npm:^2.4.2":
version: 2.4.2
resolution: "chalk@npm:2.4.2"
dependencies:
@@ -4186,16 +3422,6 @@ __metadata:
languageName: node
linkType: hard
-"chalk@npm:^4.1.2":
- version: 4.1.2
- resolution: "chalk@npm:4.1.2"
- dependencies:
- ansi-styles: ^4.1.0
- supports-color: ^7.1.0
- checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc
- languageName: node
- linkType: hard
-
"chardet@npm:^0.7.0":
version: 0.7.0
resolution: "chardet@npm:0.7.0"
@@ -4217,12 +3443,12 @@ __metadata:
languageName: node
linkType: hard
-"checkpoint-store@npm:^1.1.0":
- version: 1.1.0
- resolution: "checkpoint-store@npm:1.1.0"
+"check-error@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "check-error@npm:1.0.3"
dependencies:
- functional-red-black-tree: ^1.0.1
- checksum: 94e921ccb222c7970615e8b2bcd956dbd52f15a1c397af0447dbdef8ecd32ffe342e394d39e55f2912278a460f3736de777b5b57a5baf229c0a6bd04d2465511
+ get-func-name: ^2.0.2
+ checksum: e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399
languageName: node
linkType: hard
@@ -4315,32 +3541,6 @@ __metadata:
languageName: node
linkType: hard
-"class-utils@npm:^0.3.5":
- version: 0.3.6
- resolution: "class-utils@npm:0.3.6"
- dependencies:
- arr-union: ^3.1.0
- define-property: ^0.2.5
- isobject: ^3.0.0
- static-extend: ^0.1.1
- checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078
- languageName: node
- linkType: hard
-
-"classic-level@npm:^1.2.0":
- version: 1.2.0
- resolution: "classic-level@npm:1.2.0"
- dependencies:
- abstract-level: ^1.0.2
- catering: ^2.1.0
- module-error: ^1.0.1
- napi-macros: ~2.0.0
- node-gyp: latest
- node-gyp-build: ^4.3.0
- checksum: 88ddd12f2192c2775107d5e462998ac01095cb0222ca01dc2be77d8dcbbf9883c4c0a0248529cceee40a2f1232c68027b1aca731da9f767ad8e9483cbd61dd37
- languageName: node
- linkType: hard
-
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@@ -4348,6 +3548,13 @@ __metadata:
languageName: node
linkType: hard
+"cli-boxes@npm:^2.2.1":
+ version: 2.2.1
+ resolution: "cli-boxes@npm:2.2.1"
+ checksum: be79f8ec23a558b49e01311b39a1ea01243ecee30539c880cf14bf518a12e223ef40c57ead0cb44f509bffdffc5c129c746cd50d863ab879385370112af4f585
+ languageName: node
+ linkType: hard
+
"cli-cursor@npm:^2.1.0":
version: 2.1.0
resolution: "cli-cursor@npm:2.1.0"
@@ -4357,31 +3564,30 @@ __metadata:
languageName: node
linkType: hard
-"cli-table3@npm:^0.5.0":
- version: 0.5.1
- resolution: "cli-table3@npm:0.5.1"
+"cli-table3@npm:^0.6.0":
+ version: 0.6.0
+ resolution: "cli-table3@npm:0.6.0"
dependencies:
colors: ^1.1.2
object-assign: ^4.1.0
- string-width: ^2.1.1
+ string-width: ^4.2.0
dependenciesMeta:
colors:
optional: true
- checksum: 3ff8c821440a2a0e655a01f04e5b54a0365b3814676cd93cec2b2b0b9952a08311797ad242a181733fcff714fa7d776f8bb45ad812f296390bfa5ef584fb231d
+ checksum: 98682a2d3eef5ad07d34a08f90398d0640004e28ecf8eb59006436f11ed7b4d453db09f46c2ea880618fbd61fee66321b3b3ee1b20276bc708b6baf6f9663d75
languageName: node
linkType: hard
-"cli-table3@npm:^0.6.0":
- version: 0.6.0
- resolution: "cli-table3@npm:0.6.0"
+"cli-table3@npm:^0.6.3":
+ version: 0.6.4
+ resolution: "cli-table3@npm:0.6.4"
dependencies:
- colors: ^1.1.2
- object-assign: ^4.1.0
+ "@colors/colors": 1.5.0
string-width: ^4.2.0
dependenciesMeta:
- colors:
+ "@colors/colors":
optional: true
- checksum: 98682a2d3eef5ad07d34a08f90398d0640004e28ecf8eb59006436f11ed7b4d453db09f46c2ea880618fbd61fee66321b3b3ee1b20276bc708b6baf6f9663d75
+ checksum: 0942d9977c05b31e9c7e0172276246b3ac2124c2929451851c01dbf5fc9b3d40cc4e1c9d468ff26dd3cfd18617963fe227b4cfeeae2881b70f302d69d792b5bb
languageName: node
linkType: hard
@@ -4392,17 +3598,6 @@ __metadata:
languageName: node
linkType: hard
-"cliui@npm:^3.2.0":
- version: 3.2.0
- resolution: "cliui@npm:3.2.0"
- dependencies:
- string-width: ^1.0.1
- strip-ansi: ^3.0.1
- wrap-ansi: ^2.0.0
- checksum: c68d1dbc3e347bfe79ed19cc7f48007d5edd6cd8438342e32073e0b4e311e3c44e1f4f19221462bc6590de56c2df520e427533a9dde95dee25710bec322746ad
- languageName: node
- linkType: hard
-
"cliui@npm:^5.0.0":
version: 5.0.0
resolution: "cliui@npm:5.0.0"
@@ -4445,30 +3640,6 @@ __metadata:
languageName: node
linkType: hard
-"clone@npm:2.1.2, clone@npm:^2.0.0":
- version: 2.1.2
- resolution: "clone@npm:2.1.2"
- checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d
- languageName: node
- linkType: hard
-
-"code-point-at@npm:^1.0.0":
- version: 1.1.0
- resolution: "code-point-at@npm:1.1.0"
- checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681
- languageName: node
- linkType: hard
-
-"collection-visit@npm:^1.0.0":
- version: 1.0.0
- resolution: "collection-visit@npm:1.0.0"
- dependencies:
- map-visit: ^1.0.0
- object-visit: ^1.0.0
- checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9
- languageName: node
- linkType: hard
-
"color-convert@npm:^1.9.0":
version: 1.9.3
resolution: "color-convert@npm:1.9.3"
@@ -4510,7 +3681,7 @@ __metadata:
languageName: node
linkType: hard
-"colors@npm:1.4.0, colors@npm:^1.1.2":
+"colors@npm:^1.1.2":
version: 1.4.0
resolution: "colors@npm:1.4.0"
checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec
@@ -4533,19 +3704,6 @@ __metadata:
languageName: node
linkType: hard
-"command-line-args@npm:^4.0.7":
- version: 4.0.7
- resolution: "command-line-args@npm:4.0.7"
- dependencies:
- array-back: ^2.0.0
- find-replace: ^1.0.3
- typical: ^2.6.1
- bin:
- command-line-args: bin/cli.js
- checksum: 618109143fbca741048d54a5d31a2a5e166fbda318ed1419c1ca66877ce92ed80d6768a52a2e6392eb751f16ca7755d4014ced6f5f858a68d0cbe793bab6e3ee
- languageName: node
- linkType: hard
-
"command-line-args@npm:^5.1.1":
version: 5.2.1
resolution: "command-line-args@npm:5.2.1"
@@ -4584,17 +3742,17 @@ __metadata:
languageName: node
linkType: hard
-"compare-versions@npm:^5.0.0":
- version: 5.0.1
- resolution: "compare-versions@npm:5.0.1"
- checksum: 302a4e46224b47b9280cf894c6c87d8df912671fa391dcdbf0e63438d9b0a69fe20dd747fb439e8d54c43af016ff4eaaf0a4c9d8e7ca358bcd12dadf4ad2935e
+"commander@npm:^10.0.0":
+ version: 10.0.1
+ resolution: "commander@npm:10.0.1"
+ checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948
languageName: node
linkType: hard
-"component-emitter@npm:^1.2.1":
- version: 1.3.0
- resolution: "component-emitter@npm:1.3.0"
- checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b
+"compare-versions@npm:^6.0.0":
+ version: 6.1.0
+ resolution: "compare-versions@npm:6.1.0"
+ checksum: d4e2a45706a023d8d0b6680338b66b79e20bd02d1947f0ac6531dab634cbed89fa373b3f03d503c5e489761194258d6e1bae67a07f88b1efc61648454f2d47e7
languageName: node
linkType: hard
@@ -4605,18 +3763,6 @@ __metadata:
languageName: node
linkType: hard
-"concat-stream@npm:^1.5.1, concat-stream@npm:^1.6.0, concat-stream@npm:^1.6.2":
- version: 1.6.2
- resolution: "concat-stream@npm:1.6.2"
- dependencies:
- buffer-from: ^1.0.0
- inherits: ^2.0.3
- readable-stream: ^2.2.2
- typedarray: ^0.0.6
- checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285
- languageName: node
- linkType: hard
-
"console-control-strings@npm:^1.1.0":
version: 1.1.0
resolution: "console-control-strings@npm:1.1.0"
@@ -4651,15 +3797,6 @@ __metadata:
languageName: node
linkType: hard
-"convert-source-map@npm:^1.5.1":
- version: 1.7.0
- resolution: "convert-source-map@npm:1.7.0"
- dependencies:
- safe-buffer: ~5.1.1
- checksum: bcd2e3ea7d37f96b85a6e362c8a89402ccc73757256e3ee53aa2c22fe915adb854c66b1f81111be815a3a6a6ce3c58e8001858e883c9d5b4fe08a853fa865967
- languageName: node
- linkType: hard
-
"cookie-signature@npm:1.0.6":
version: 1.0.6
resolution: "cookie-signature@npm:1.0.6"
@@ -4681,41 +3818,20 @@ __metadata:
languageName: node
linkType: hard
-"cookiejar@npm:^2.1.1":
- version: 2.1.4
- resolution: "cookiejar@npm:2.1.4"
- checksum: c4442111963077dc0e5672359956d6556a195d31cbb35b528356ce5f184922b99ac48245ac05ed86cf993f7df157c56da10ab3efdadfed79778a0d9b1b092d5b
- languageName: node
- linkType: hard
-
-"copy-descriptor@npm:^0.1.0":
- version: 0.1.1
- resolution: "copy-descriptor@npm:0.1.1"
- checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b
- languageName: node
- linkType: hard
-
-"core-js-pure@npm:^3.0.1":
- version: 3.11.0
- resolution: "core-js-pure@npm:3.11.0"
- checksum: 8f55c393197bbb3fd8a125b0cc9f4949df1864d2d6b27ff17e03c1f4f8a047f422c0dd39bf1ade613004cc6a1ee8cc95290360b6247e245e133fe3d92d52d45a
- languageName: node
- linkType: hard
-
-"core-js@npm:^2.4.0, core-js@npm:^2.5.0":
- version: 2.6.12
- resolution: "core-js@npm:2.6.12"
- checksum: 44fa9934a85f8c78d61e0c8b7b22436330471ffe59ec5076fe7f324d6e8cf7f824b14b1c81ca73608b13bdb0fef035bd820989bf059767ad6fa13123bb8bd016
- languageName: node
- linkType: hard
-
-"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0":
+"core-util-is@npm:1.0.2":
version: 1.0.2
resolution: "core-util-is@npm:1.0.2"
checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab
languageName: node
linkType: hard
+"core-util-is@npm:~1.0.0":
+ version: 1.0.3
+ resolution: "core-util-is@npm:1.0.3"
+ checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99
+ languageName: node
+ linkType: hard
+
"cors@npm:^2.8.1":
version: 2.8.5
resolution: "cors@npm:2.8.5"
@@ -4738,6 +3854,23 @@ __metadata:
languageName: node
linkType: hard
+"cosmiconfig@npm:^8.0.0":
+ version: 8.3.6
+ resolution: "cosmiconfig@npm:8.3.6"
+ dependencies:
+ import-fresh: ^3.3.0
+ js-yaml: ^4.1.0
+ parse-json: ^5.2.0
+ path-type: ^4.0.0
+ peerDependencies:
+ typescript: ">=4.9.5"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0
+ languageName: node
+ linkType: hard
+
"crc-32@npm:^1.2.0":
version: 1.2.0
resolution: "crc-32@npm:1.2.0"
@@ -4794,16 +3927,6 @@ __metadata:
languageName: node
linkType: hard
-"cross-fetch@npm:^2.1.0, cross-fetch@npm:^2.1.1":
- version: 2.2.6
- resolution: "cross-fetch@npm:2.2.6"
- dependencies:
- node-fetch: ^2.6.7
- whatwg-fetch: ^2.0.4
- checksum: df9c6728b314ff96022dca468a3d2a05b4546cd318d82a7e1f1445e7160472d39029bccbe5f20d319b8ba3793930592b0b956244aef6a87a133fbcfed85fc8ca
- languageName: node
- linkType: hard
-
"cross-fetch@npm:^3.1.4":
version: 3.1.5
resolution: "cross-fetch@npm:3.1.5"
@@ -4826,7 +3949,7 @@ __metadata:
languageName: node
linkType: hard
-"cross-spawn@npm:^7.0.2":
+"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
dependencies:
@@ -4878,13 +4001,6 @@ __metadata:
languageName: node
linkType: hard
-"crypto-js@npm:^4.0.0":
- version: 4.1.1
- resolution: "crypto-js@npm:4.1.1"
- checksum: b3747c12ee3a7632fab3b3e171ea50f78b182545f0714f6d3e7e2858385f0f4101a15f2517e033802ce9d12ba50a391575ff4638c9de3dd9b2c4bc47768d5425
- languageName: node
- linkType: hard
-
"csv-parse@npm:^5.4.0":
version: 5.4.0
resolution: "csv-parse@npm:5.4.0"
@@ -4911,6 +4027,39 @@ __metadata:
languageName: node
linkType: hard
+"data-view-buffer@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "data-view-buffer@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.6
+ es-errors: ^1.3.0
+ is-data-view: ^1.0.1
+ checksum: ce24348f3c6231223b216da92e7e6a57a12b4af81a23f27eff8feabdf06acfb16c00639c8b705ca4d167f761cfc756e27e5f065d0a1f840c10b907fdaf8b988c
+ languageName: node
+ linkType: hard
+
+"data-view-byte-length@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "data-view-byte-length@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.7
+ es-errors: ^1.3.0
+ is-data-view: ^1.0.1
+ checksum: dbb3200edcb7c1ef0d68979834f81d64fd8cab2f7691b3a4c6b97e67f22182f3ec2c8602efd7b76997b55af6ff8bce485829c1feda4fa2165a6b71fb7baa4269
+ languageName: node
+ linkType: hard
+
+"data-view-byte-offset@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "data-view-byte-offset@npm:1.0.0"
+ dependencies:
+ call-bind: ^1.0.6
+ es-errors: ^1.3.0
+ is-data-view: ^1.0.1
+ checksum: 7f0bf8720b7414ca719eedf1846aeec392f2054d7af707c5dc9a753cc77eb8625f067fa901e0b5127e831f9da9056138d894b9c2be79c27a21f6db5824f009c2
+ languageName: node
+ linkType: hard
+
"death@npm:^1.1.0":
version: 1.1.0
resolution: "death@npm:1.1.0"
@@ -4918,7 +4067,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.0, debug@npm:^2.6.8, debug@npm:^2.6.9":
+"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.6.0, debug@npm:^2.6.9":
version: 2.6.9
resolution: "debug@npm:2.6.9"
dependencies:
@@ -4948,7 +4097,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:^3.1.0, debug@npm:^3.2.7":
+"debug@npm:^3.2.7":
version: 3.2.7
resolution: "debug@npm:3.2.7"
dependencies:
@@ -4957,7 +4106,7 @@ __metadata:
languageName: node
linkType: hard
-"decamelize@npm:^1.1.1, decamelize@npm:^1.2.0":
+"decamelize@npm:^1.2.0":
version: 1.2.0
resolution: "decamelize@npm:1.2.0"
checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa
@@ -4996,26 +4145,12 @@ __metadata:
languageName: node
linkType: hard
-"deep-eql@npm:^3.0.1":
- version: 3.0.1
- resolution: "deep-eql@npm:3.0.1"
+"deep-eql@npm:^4.0.1, deep-eql@npm:^4.1.3":
+ version: 4.1.3
+ resolution: "deep-eql@npm:4.1.3"
dependencies:
type-detect: ^4.0.0
- checksum: 4f4c9fb79eb994fb6e81d4aa8b063adc40c00f831588aa65e20857d5d52f15fb23034a6576ecf886f7ff6222d5ae42e71e9b7d57113e0715b1df7ea1e812b125
- languageName: node
- linkType: hard
-
-"deep-equal@npm:~1.1.1":
- version: 1.1.1
- resolution: "deep-equal@npm:1.1.1"
- dependencies:
- is-arguments: ^1.0.4
- is-date-object: ^1.0.1
- is-regex: ^1.0.4
- object-is: ^1.0.1
- object-keys: ^1.1.1
- regexp.prototype.flags: ^1.2.0
- checksum: f92686f2c5bcdf714a75a5fa7a9e47cb374a8ec9307e717b8d1ce61f56a75aaebf5619c2a12b8087a705b5a2f60d0292c35f8b58cb1f72e3268a3a15cab9f78d
+ checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f
languageName: node
linkType: hard
@@ -5033,38 +4168,6 @@ __metadata:
languageName: node
linkType: hard
-"defender-admin-client@npm:^1.29.0-rc.1":
- version: 1.37.0
- resolution: "defender-admin-client@npm:1.37.0"
- dependencies:
- axios: ^0.21.2
- defender-base-client: 1.37.0
- lodash: ^4.17.19
- node-fetch: ^2.6.0
- checksum: 6e9e9931bf95b6adbf39ca0cfdb1b348c54803b5908409bff6c56977cda14f519d29e2d7f4cfdc64d20271d90d4f11c6bb69091a6a6d0b50d328568251de6551
- languageName: node
- linkType: hard
-
-"defender-base-client@npm:1.37.0, defender-base-client@npm:^1.3.1":
- version: 1.37.0
- resolution: "defender-base-client@npm:1.37.0"
- dependencies:
- amazon-cognito-identity-js: ^4.3.3
- async-retry: ^1.3.3
- axios: ^0.21.2
- lodash: ^4.17.19
- node-fetch: ^2.6.0
- checksum: 759b58245c4abfad3211a3cd6801c20b826ced3ad93c8763f0a8754a136af4073a8518d773b7bde7732c713333cf74c46f4df55f27893a045b7ffff633fb695c
- languageName: node
- linkType: hard
-
-"defer-to-connect@npm:^1.0.1":
- version: 1.1.3
- resolution: "defer-to-connect@npm:1.1.3"
- checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930
- languageName: node
- linkType: hard
-
"defer-to-connect@npm:^2.0.1":
version: 2.0.1
resolution: "defer-to-connect@npm:2.0.1"
@@ -5081,16 +4184,6 @@ __metadata:
languageName: node
linkType: hard
-"deferred-leveldown@npm:~4.0.0":
- version: 4.0.2
- resolution: "deferred-leveldown@npm:4.0.2"
- dependencies:
- abstract-leveldown: ~5.0.0
- inherits: ^2.0.3
- checksum: 6b3649bbb7a2617e08eecdddb516d0bde215bd376a37089df203ad78627f59c424c785afbcbfd3e53488d4f9e5d27d9d126d5645b7da53e8760cc34df2d2f13e
- languageName: node
- linkType: hard
-
"deferred-leveldown@npm:~5.3.0":
version: 5.3.0
resolution: "deferred-leveldown@npm:5.3.0"
@@ -5101,48 +4194,35 @@ __metadata:
languageName: node
linkType: hard
-"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4":
- version: 1.1.4
- resolution: "define-properties@npm:1.1.4"
- dependencies:
- has-property-descriptors: ^1.0.0
- object-keys: ^1.1.1
- checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b
- languageName: node
- linkType: hard
-
-"define-property@npm:^0.2.5":
- version: 0.2.5
- resolution: "define-property@npm:0.2.5"
- dependencies:
- is-descriptor: ^0.1.0
- checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394
- languageName: node
- linkType: hard
-
-"define-property@npm:^1.0.0":
- version: 1.0.0
- resolution: "define-property@npm:1.0.0"
+"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4":
+ version: 1.1.4
+ resolution: "define-data-property@npm:1.1.4"
dependencies:
- is-descriptor: ^1.0.0
- checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a
+ es-define-property: ^1.0.0
+ es-errors: ^1.3.0
+ gopd: ^1.0.1
+ checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b
languageName: node
linkType: hard
-"define-property@npm:^2.0.2":
- version: 2.0.2
- resolution: "define-property@npm:2.0.2"
+"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4":
+ version: 1.1.4
+ resolution: "define-properties@npm:1.1.4"
dependencies:
- is-descriptor: ^1.0.2
- isobject: ^3.0.1
- checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99
+ has-property-descriptors: ^1.0.0
+ object-keys: ^1.1.1
+ checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b
languageName: node
linkType: hard
-"defined@npm:~1.0.0":
- version: 1.0.0
- resolution: "defined@npm:1.0.0"
- checksum: 77672997c5001773371c4dbcce98da0b3dc43089d6da2ad87c4b800adb727633cea8723ea3889fe0c2112a2404e2fd07e3bfd0e55f7426aa6441d8992045dbd5
+"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "define-properties@npm:1.2.1"
+ dependencies:
+ define-data-property: ^1.0.1
+ has-property-descriptors: ^1.0.0
+ object-keys: ^1.1.1
+ checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12
languageName: node
linkType: hard
@@ -5184,15 +4264,6 @@ __metadata:
languageName: node
linkType: hard
-"detect-indent@npm:^4.0.0":
- version: 4.0.0
- resolution: "detect-indent@npm:4.0.0"
- dependencies:
- repeating: ^2.0.0
- checksum: 328f273915c1610899bc7d4784ce874413d0a698346364cd3ee5d79afba1c5cf4dbc97b85a801e20f4d903c0598bd5096af32b800dfb8696b81464ccb3dfda2c
- languageName: node
- linkType: hard
-
"detect-port@npm:^1.3.0":
version: 1.3.0
resolution: "detect-port@npm:1.3.0"
@@ -5301,17 +4372,6 @@ __metadata:
languageName: node
linkType: hard
-"dotignore@npm:~0.1.2":
- version: 0.1.2
- resolution: "dotignore@npm:0.1.2"
- dependencies:
- minimatch: ^3.0.4
- bin:
- ignored: bin/ignored
- checksum: 06bab15e2a2400c6f823a0edbcd73661180f6245a4041a3fe3b9fde4b22ae74b896604df4520a877093f05c656bd080087376c9f605bccdea847664c59910f37
- languageName: node
- linkType: hard
-
"duplexer3@npm:^0.1.4":
version: 0.1.4
resolution: "duplexer3@npm:0.1.4"
@@ -5319,6 +4379,13 @@ __metadata:
languageName: node
linkType: hard
+"eastasianwidth@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "eastasianwidth@npm:0.2.0"
+ checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed
+ languageName: node
+ linkType: hard
+
"ecc-jsbn@npm:~0.1.1":
version: 0.1.2
resolution: "ecc-jsbn@npm:0.1.2"
@@ -5336,13 +4403,6 @@ __metadata:
languageName: node
linkType: hard
-"electron-to-chromium@npm:^1.3.47":
- version: 1.3.727
- resolution: "electron-to-chromium@npm:1.3.727"
- checksum: 27e725e497475e998ca597e196e6895a55a24b0ce4c489cac4dfa24f1ff38b8fa54fbdb219d79e562783c8f20615705f1c857ccab91883c2818d6d908054bd37
- languageName: node
- linkType: hard
-
"elliptic@npm:6.5.4, elliptic@npm:^6.4.0, elliptic@npm:^6.5.0, elliptic@npm:^6.5.2, elliptic@npm:^6.5.3, elliptic@npm:^6.5.4":
version: 6.5.4
resolution: "elliptic@npm:6.5.4"
@@ -5365,13 +4425,6 @@ __metadata:
languageName: node
linkType: hard
-"emoji-regex@npm:^10.1.0":
- version: 10.1.0
- resolution: "emoji-regex@npm:10.1.0"
- checksum: 5bc780fc4d75f89369155a87c55f7e83a0bf72bcccda7df7f2c570cde4738d8b17d112d12afdadfec16647d1faef6501307b4304f81d35c823a938fe6547df0f
- languageName: node
- linkType: hard
-
"emoji-regex@npm:^7.0.1":
version: 7.0.3
resolution: "emoji-regex@npm:7.0.3"
@@ -5386,6 +4439,13 @@ __metadata:
languageName: node
linkType: hard
+"emoji-regex@npm:^9.2.2":
+ version: 9.2.2
+ resolution: "emoji-regex@npm:9.2.2"
+ checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601
+ languageName: node
+ linkType: hard
+
"encodeurl@npm:~1.0.2":
version: 1.0.2
resolution: "encodeurl@npm:1.0.2"
@@ -5393,19 +4453,6 @@ __metadata:
languageName: node
linkType: hard
-"encoding-down@npm:5.0.4, encoding-down@npm:~5.0.0":
- version: 5.0.4
- resolution: "encoding-down@npm:5.0.4"
- dependencies:
- abstract-leveldown: ^5.0.0
- inherits: ^2.0.3
- level-codec: ^9.0.0
- level-errors: ^2.0.0
- xtend: ^4.0.1
- checksum: b8d9d4b058622c11e33d8ec0fb6432194925e109ed8e44e93555406496e8b77b294c8c338dd5ed9ab8d7bc50250a48bb93f9af62ecee3ce8d82f4ef78b2ca880
- languageName: node
- linkType: hard
-
"encoding-down@npm:^6.3.0":
version: 6.3.0
resolution: "encoding-down@npm:6.3.0"
@@ -5418,7 +4465,7 @@ __metadata:
languageName: node
linkType: hard
-"encoding@npm:^0.1.11, encoding@npm:^0.1.13":
+"encoding@npm:^0.1.13":
version: 0.1.13
resolution: "encoding@npm:0.1.13"
dependencies:
@@ -5470,7 +4517,7 @@ __metadata:
languageName: node
linkType: hard
-"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1":
+"error-ex@npm:^1.3.1":
version: 1.3.2
resolution: "error-ex@npm:1.3.2"
dependencies:
@@ -5511,6 +4558,96 @@ __metadata:
languageName: node
linkType: hard
+"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2":
+ version: 1.23.3
+ resolution: "es-abstract@npm:1.23.3"
+ 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.4
+ get-symbol-description: ^1.0.2
+ globalthis: ^1.0.3
+ gopd: ^1.0.1
+ has-property-descriptors: ^1.0.2
+ has-proto: ^1.0.3
+ has-symbols: ^1.0.3
+ hasown: ^2.0.2
+ internal-slot: ^1.0.7
+ is-array-buffer: ^3.0.4
+ is-callable: ^1.2.7
+ is-data-view: ^1.0.1
+ is-negative-zero: ^2.0.3
+ is-regex: ^1.1.4
+ is-shared-array-buffer: ^1.0.3
+ is-string: ^1.0.7
+ 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.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.15
+ checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae
+ languageName: node
+ linkType: hard
+
+"es-define-property@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "es-define-property@npm:1.0.0"
+ dependencies:
+ get-intrinsic: ^1.2.4
+ checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6
+ languageName: node
+ linkType: hard
+
+"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0":
+ version: 1.3.0
+ resolution: "es-errors@npm:1.3.0"
+ checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5
+ languageName: node
+ linkType: hard
+
+"es-object-atoms@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "es-object-atoms@npm:1.0.0"
+ dependencies:
+ es-errors: ^1.3.0
+ checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c
+ languageName: node
+ linkType: hard
+
+"es-set-tostringtag@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "es-set-tostringtag@npm:2.0.3"
+ dependencies:
+ get-intrinsic: ^1.2.4
+ has-tostringtag: ^1.0.2
+ hasown: ^2.0.1
+ checksum: 7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129
+ languageName: node
+ linkType: hard
+
"es-shim-unscopables@npm:^1.0.0":
version: 1.0.0
resolution: "es-shim-unscopables@npm:1.0.0"
@@ -5520,6 +4657,15 @@ __metadata:
languageName: node
linkType: hard
+"es-shim-unscopables@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "es-shim-unscopables@npm:1.0.2"
+ dependencies:
+ hasown: ^2.0.0
+ checksum: 432bd527c62065da09ed1d37a3f8e623c423683285e6188108286f4a1e8e164a5bcbfbc0051557c7d14633cd2a41ce24c7048e6bbb66a985413fd32f1be72626
+ languageName: node
+ linkType: hard
+
"es-to-primitive@npm:^1.2.1":
version: 1.2.1
resolution: "es-to-primitive@npm:1.2.1"
@@ -5584,7 +4730,7 @@ __metadata:
languageName: node
linkType: hard
-"escape-string-regexp@npm:1.0.5, escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5":
+"escape-string-regexp@npm:1.0.5, escape-string-regexp@npm:^1.0.5":
version: 1.0.5
resolution: "escape-string-regexp@npm:1.0.5"
checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410
@@ -5978,22 +5124,7 @@ __metadata:
languageName: node
linkType: hard
-"eth-block-tracker@npm:^3.0.0":
- version: 3.0.1
- resolution: "eth-block-tracker@npm:3.0.1"
- dependencies:
- eth-query: ^2.1.0
- ethereumjs-tx: ^1.3.3
- ethereumjs-util: ^5.1.3
- ethjs-util: ^0.1.3
- json-rpc-engine: ^3.6.0
- pify: ^2.3.0
- tape: ^4.6.3
- checksum: b68dda7a60e2c15fa7097f31277ebfce08852de83229c2c65879a5482db28610bc85248cfe6578971ad2357552d5ce6124fb0c2a29d18fd30c70f092beeda3b8
- languageName: node
- linkType: hard
-
-"eth-ens-namehash@npm:2.0.8, eth-ens-namehash@npm:^2.0.8":
+"eth-ens-namehash@npm:2.0.8":
version: 2.0.8
resolution: "eth-ens-namehash@npm:2.0.8"
dependencies:
@@ -6003,67 +5134,6 @@ __metadata:
languageName: node
linkType: hard
-"eth-gas-reporter@npm:^0.2.25":
- version: 0.2.25
- resolution: "eth-gas-reporter@npm:0.2.25"
- dependencies:
- "@ethersproject/abi": ^5.0.0-beta.146
- "@solidity-parser/parser": ^0.14.0
- cli-table3: ^0.5.0
- colors: 1.4.0
- ethereum-cryptography: ^1.0.3
- ethers: ^4.0.40
- fs-readdir-recursive: ^1.1.0
- lodash: ^4.17.14
- markdown-table: ^1.1.3
- mocha: ^7.1.1
- req-cwd: ^2.0.0
- request: ^2.88.0
- request-promise-native: ^1.0.5
- sha1: ^1.1.1
- sync-request: ^6.0.0
- peerDependencies:
- "@codechecks/client": ^0.1.0
- peerDependenciesMeta:
- "@codechecks/client":
- optional: true
- checksum: 3bfa81e554b069bb817f2a073a601a0429e6b582c56ad99db0727dc2a102ab00fc27888820b8a042a194a8fb7d40954d10cd7b011ede6b8170285d2d5a88666c
- languageName: node
- linkType: hard
-
-"eth-json-rpc-infura@npm:^3.1.0":
- version: 3.2.1
- resolution: "eth-json-rpc-infura@npm:3.2.1"
- dependencies:
- cross-fetch: ^2.1.1
- eth-json-rpc-middleware: ^1.5.0
- json-rpc-engine: ^3.4.0
- json-rpc-error: ^2.0.0
- checksum: 393e825986c0eedb9a1bb771b84e5b7c4037d8f870ab92cdba9dbaa52b5c7d5755ed02fd80d2a07b5db7a3af2c0b30d37756eb39cd7d2ae39173c6c2ea138e7d
- languageName: node
- linkType: hard
-
-"eth-json-rpc-middleware@npm:^1.5.0":
- version: 1.6.0
- resolution: "eth-json-rpc-middleware@npm:1.6.0"
- dependencies:
- async: ^2.5.0
- eth-query: ^2.1.2
- eth-tx-summary: ^3.1.2
- ethereumjs-block: ^1.6.0
- ethereumjs-tx: ^1.3.3
- ethereumjs-util: ^5.1.2
- ethereumjs-vm: ^2.1.0
- fetch-ponyfill: ^4.0.0
- json-rpc-engine: ^3.6.0
- json-rpc-error: ^2.0.0
- json-stable-stringify: ^1.0.1
- promise-to-callback: ^1.0.0
- tape: ^4.6.3
- checksum: 0f6c146bdb277b3be9eef68f7424e1709a57f58330a3ae076153313be60f5026a5eee0de16d1ee6e41515e76cb1d38ef590948dd55d4b3ab1b3659af61337922
- languageName: node
- linkType: hard
-
"eth-lib@npm:0.2.8":
version: 0.2.8
resolution: "eth-lib@npm:0.2.8"
@@ -6089,70 +5159,6 @@ __metadata:
languageName: node
linkType: hard
-"eth-query@npm:^2.0.2, eth-query@npm:^2.1.0, eth-query@npm:^2.1.2":
- version: 2.1.2
- resolution: "eth-query@npm:2.1.2"
- dependencies:
- json-rpc-random-id: ^1.0.0
- xtend: ^4.0.1
- checksum: 83daa0e28452c54722aec78cd24d036bad5b6e7c08035d98e10d4bea11f71662f12cab63ebd8a848d4df46ad316503d54ecccb41c9244d2ea8b29364b0a20201
- languageName: node
- linkType: hard
-
-"eth-sig-util@npm:3.0.0":
- version: 3.0.0
- resolution: "eth-sig-util@npm:3.0.0"
- dependencies:
- buffer: ^5.2.1
- elliptic: ^6.4.0
- ethereumjs-abi: 0.6.5
- ethereumjs-util: ^5.1.1
- tweetnacl: ^1.0.0
- tweetnacl-util: ^0.15.0
- checksum: fbe44efb7909737b070e1e1d8c7096da3bdbd1356de242fc3458849e042e39c83a4e2dd1cbce0dc21ff3e5eca1843981751428bc160dcf3a6fcca2f1e8161be4
- languageName: node
- linkType: hard
-
-"eth-sig-util@npm:^1.4.2":
- version: 1.4.2
- resolution: "eth-sig-util@npm:1.4.2"
- dependencies:
- ethereumjs-abi: "git+https://github.com/ethereumjs/ethereumjs-abi.git"
- ethereumjs-util: ^5.1.1
- checksum: 578f5c571c1bb0a86dc1bd4a5b56b8073b37823496d7afa74d772cf91ae6860f91bafcbee931be39a3d13f0c195df9f026a27fce350605ad5d15901a5a4ea94a
- languageName: node
- linkType: hard
-
-"eth-tx-summary@npm:^3.1.2":
- version: 3.2.4
- resolution: "eth-tx-summary@npm:3.2.4"
- dependencies:
- async: ^2.1.2
- clone: ^2.0.0
- concat-stream: ^1.5.1
- end-of-stream: ^1.1.0
- eth-query: ^2.0.2
- ethereumjs-block: ^1.4.1
- ethereumjs-tx: ^1.1.1
- ethereumjs-util: ^5.0.1
- ethereumjs-vm: ^2.6.0
- through2: ^2.0.3
- checksum: 7df8b91bc2bd3f6941e2a5b3230cad5c5523ca3750190cd06af07983feba1bb4af893f226f01072958b00aa626869846894bcb1bfaa451d9c8f7f5b8cdf5ce0a
- languageName: node
- linkType: hard
-
-"ethashjs@npm:~0.0.7":
- version: 0.0.8
- resolution: "ethashjs@npm:0.0.8"
- dependencies:
- async: ^2.1.2
- buffer-xor: ^2.0.1
- ethereumjs-util: ^7.0.2
- miller-rabin: ^4.0.0
- checksum: d9b6b47d32cbe017848ce5d8aec86eb6416300c6f52a68029bf6fc8fcf5429a45c14f2033d514435acd02047af16f6f804056e81587b30ed677039ac678b15f8
- languageName: node
- linkType: hard
-
"ethereum-bloom-filters@npm:^1.0.6":
version: 1.0.9
resolution: "ethereum-bloom-filters@npm:1.0.9"
@@ -6223,42 +5229,19 @@ __metadata:
languageName: node
linkType: hard
-"ethereum-waffle@npm:3.4.4":
- version: 3.4.4
- resolution: "ethereum-waffle@npm:3.4.4"
- dependencies:
- "@ethereum-waffle/chai": ^3.4.4
- "@ethereum-waffle/compiler": ^3.4.4
- "@ethereum-waffle/mock-contract": ^3.4.4
- "@ethereum-waffle/provider": ^3.4.4
- ethers: ^5.0.1
- bin:
- waffle: bin/waffle
- checksum: 5a181b52f66f1b3c89ed1b68ef44cbd9acd4d743262de9edbe1fd57b0925576dd62c3436b1e65434d5ac03ab16da0df283972cd9aae726de0b8b9cdd7876b917
- languageName: node
- linkType: hard
-
-"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git":
- version: 0.6.8
- resolution: "ethereumjs-abi@https://github.com/ethereumjs/ethereumjs-abi.git#commit=1a27c59c15ab1e95ee8e5c4ed6ad814c49cc439e"
- dependencies:
- bn.js: ^4.11.8
- ethereumjs-util: ^6.0.0
- checksum: 06142cd1eca1200f8cc6d3fb636ccab70d34ab43f1d633aeb8bd9f18d500b9e7a2facb74e32359838855fe9a5567651478b4713f4cfb9fbfa8d37dd7fabbc1dd
- languageName: node
- linkType: hard
-
-"ethereumjs-abi@npm:0.6.5":
- version: 0.6.5
- resolution: "ethereumjs-abi@npm:0.6.5"
+"ethereum-cryptography@npm:^2.1.3":
+ version: 2.1.3
+ resolution: "ethereum-cryptography@npm:2.1.3"
dependencies:
- bn.js: ^4.10.0
- ethereumjs-util: ^4.3.0
- checksum: 3abdc79dc60614d30b1cefb5e6bfbdab3ca8252b4e742330544103f86d6e49a55921d9b8822a0a47fee3efd9dd2493ec93448b1869d82479a4c71a44001e8337
+ "@noble/curves": 1.3.0
+ "@noble/hashes": 1.3.3
+ "@scure/bip32": 1.3.3
+ "@scure/bip39": 1.2.2
+ checksum: 7f9c14f868a588641179cace3eb86c332c4743290865db699870710253cabc4dc74bd4bce5e7bc6db667482e032e94d6f79521219eb6be5dc422059d279a27b7
languageName: node
linkType: hard
-"ethereumjs-abi@npm:0.6.8, ethereumjs-abi@npm:^0.6.8":
+"ethereumjs-abi@npm:^0.6.8":
version: 0.6.8
resolution: "ethereumjs-abi@npm:0.6.8"
dependencies:
@@ -6268,42 +5251,7 @@ __metadata:
languageName: node
linkType: hard
-"ethereumjs-account@npm:3.0.0, ethereumjs-account@npm:^3.0.0":
- version: 3.0.0
- resolution: "ethereumjs-account@npm:3.0.0"
- dependencies:
- ethereumjs-util: ^6.0.0
- rlp: ^2.2.1
- safe-buffer: ^5.1.1
- checksum: 64dbe026d29aca12c79596cf4085fb27e209988f11b7d5bf3a1f2aadaaa517d90d722680c8b525144c26a2d9cd8494aa26ac088fa80b358cc3e28024f7ddbe81
- languageName: node
- linkType: hard
-
-"ethereumjs-account@npm:^2.0.3":
- version: 2.0.5
- resolution: "ethereumjs-account@npm:2.0.5"
- dependencies:
- ethereumjs-util: ^5.0.0
- rlp: ^2.0.0
- safe-buffer: ^5.1.1
- checksum: 2e4546b8b0213168eebd3a5296da904b6f55470e39b4c742d252748927d2b268f8d6374b0178c1d5b7188646f97dae74a7ac1c7485fe96ea557c152b52223f18
- languageName: node
- linkType: hard
-
-"ethereumjs-block@npm:2.2.2, ethereumjs-block@npm:^2.2.2, ethereumjs-block@npm:~2.2.0, ethereumjs-block@npm:~2.2.2":
- version: 2.2.2
- resolution: "ethereumjs-block@npm:2.2.2"
- dependencies:
- async: ^2.0.1
- ethereumjs-common: ^1.5.0
- ethereumjs-tx: ^2.1.1
- ethereumjs-util: ^5.0.0
- merkle-patricia-tree: ^2.1.2
- checksum: 91f7f60820394e072c9a115da2871a096414644109d2449d4a79b30be67b0080bc848dfa7e2ae7b2ab255de3be4f6736c6cb2b418c29eada794d018cc384e189
- languageName: node
- linkType: hard
-
-"ethereumjs-block@npm:^1.2.2, ethereumjs-block@npm:^1.4.1, ethereumjs-block@npm:^1.6.0":
+"ethereumjs-block@npm:^1.7.1":
version: 1.7.1
resolution: "ethereumjs-block@npm:1.7.1"
dependencies:
@@ -6316,49 +5264,14 @@ __metadata:
languageName: node
linkType: hard
-"ethereumjs-blockchain@npm:^4.0.3":
- version: 4.0.4
- resolution: "ethereumjs-blockchain@npm:4.0.4"
- dependencies:
- async: ^2.6.1
- ethashjs: ~0.0.7
- ethereumjs-block: ~2.2.2
- ethereumjs-common: ^1.5.0
- ethereumjs-util: ^6.1.0
- flow-stoplight: ^1.0.0
- level-mem: ^3.0.1
- lru-cache: ^5.1.1
- rlp: ^2.2.2
- semaphore: ^1.1.0
- checksum: efa04b2e2d02ce9c524f246f862b1ca779bbfd9f795cc7a9e471f0d96229de5188f1f6b17e54948f640100116b646ed03242494c23cd66f0f7e8384a4f217ba4
- languageName: node
- linkType: hard
-
-"ethereumjs-common@npm:1.5.0":
- version: 1.5.0
- resolution: "ethereumjs-common@npm:1.5.0"
- checksum: a30474986a88b8f3ee53f9fb34027528f12d1bc7ecee8b80aa8060a09ccde3b2af4dd24c928287018003e4e206cd4f6311cdd508442d1452d02ec3d8e7a0601e
- languageName: node
- linkType: hard
-
-"ethereumjs-common@npm:^1.1.0, ethereumjs-common@npm:^1.5.0":
+"ethereumjs-common@npm:^1.5.2":
version: 1.5.2
resolution: "ethereumjs-common@npm:1.5.2"
checksum: 3fc64faced268e0c61da50c5db76d18cfd44325d5706792f32ac8c85c0e800d52db284f042c3bd0623daf59b946176ef7dbea476d1b0252492137fa4549a3349
languageName: node
linkType: hard
-"ethereumjs-tx@npm:2.1.2, ethereumjs-tx@npm:^2.1.1, ethereumjs-tx@npm:^2.1.2":
- version: 2.1.2
- resolution: "ethereumjs-tx@npm:2.1.2"
- dependencies:
- ethereumjs-common: ^1.5.0
- ethereumjs-util: ^6.0.0
- checksum: a5b607b4e125ed696d76a9e4db8a95e03a967323c66694912d799619b16fa43985336924221f9e7582dc1b09ff88a62116bf2290ee14d952bf7e6715e5728525
- languageName: node
- linkType: hard
-
-"ethereumjs-tx@npm:^1.1.1, ethereumjs-tx@npm:^1.2.0, ethereumjs-tx@npm:^1.2.2, ethereumjs-tx@npm:^1.3.3":
+"ethereumjs-tx@npm:^1.2.2, ethereumjs-tx@npm:^1.3.7":
version: 1.3.7
resolution: "ethereumjs-tx@npm:1.3.7"
dependencies:
@@ -6368,35 +5281,7 @@ __metadata:
languageName: node
linkType: hard
-"ethereumjs-util@npm:6.2.1, ethereumjs-util@npm:^6.0.0, ethereumjs-util@npm:^6.1.0, ethereumjs-util@npm:^6.2.0, ethereumjs-util@npm:^6.2.1":
- version: 6.2.1
- resolution: "ethereumjs-util@npm:6.2.1"
- dependencies:
- "@types/bn.js": ^4.11.3
- bn.js: ^4.11.0
- create-hash: ^1.1.2
- elliptic: ^6.5.2
- ethereum-cryptography: ^0.1.3
- ethjs-util: 0.1.6
- rlp: ^2.2.3
- checksum: e3cb4a2c034a2529281fdfc21a2126fe032fdc3038863f5720352daa65ddcc50fc8c67dbedf381a882dc3802e05d979287126d7ecf781504bde1fd8218693bde
- languageName: node
- linkType: hard
-
-"ethereumjs-util@npm:^4.3.0":
- version: 4.5.1
- resolution: "ethereumjs-util@npm:4.5.1"
- dependencies:
- bn.js: ^4.8.0
- create-hash: ^1.1.2
- elliptic: ^6.5.2
- ethereum-cryptography: ^0.1.3
- rlp: ^2.0.0
- checksum: ee91fbd29634d40cad9adf90f202158324c089bbc10b405d2ef139f4542090e6f76a616d16c601b52d6b5c5d59ddb6c8387cf60cc732884e732dad9a62b8a539
- languageName: node
- linkType: hard
-
-"ethereumjs-util@npm:^5.0.0, ethereumjs-util@npm:^5.0.1, ethereumjs-util@npm:^5.1.1, ethereumjs-util@npm:^5.1.2, ethereumjs-util@npm:^5.1.3, ethereumjs-util@npm:^5.1.5, ethereumjs-util@npm:^5.2.0":
+"ethereumjs-util@npm:^5.0.0":
version: 5.2.1
resolution: "ethereumjs-util@npm:5.2.1"
dependencies:
@@ -6411,96 +5296,35 @@ __metadata:
languageName: node
linkType: hard
-"ethereumjs-util@npm:^7.0.10, ethereumjs-util@npm:^7.0.2, ethereumjs-util@npm:^7.0.3, ethereumjs-util@npm:^7.1.0, ethereumjs-util@npm:^7.1.1, ethereumjs-util@npm:^7.1.2, ethereumjs-util@npm:^7.1.4, ethereumjs-util@npm:^7.1.5":
- version: 7.1.5
- resolution: "ethereumjs-util@npm:7.1.5"
+"ethereumjs-util@npm:^6.0.0, ethereumjs-util@npm:^6.2.1":
+ version: 6.2.1
+ resolution: "ethereumjs-util@npm:6.2.1"
dependencies:
- "@types/bn.js": ^5.1.0
- bn.js: ^5.1.2
+ "@types/bn.js": ^4.11.3
+ bn.js: ^4.11.0
create-hash: ^1.1.2
+ elliptic: ^6.5.2
ethereum-cryptography: ^0.1.3
- rlp: ^2.2.4
- checksum: 27a3c79d6e06b2df34b80d478ce465b371c8458b58f5afc14d91c8564c13363ad336e6e83f57eb0bd719fde94d10ee5697ceef78b5aa932087150c5287b286d1
- languageName: node
- linkType: hard
-
-"ethereumjs-vm@npm:4.2.0":
- version: 4.2.0
- resolution: "ethereumjs-vm@npm:4.2.0"
- dependencies:
- async: ^2.1.2
- async-eventemitter: ^0.2.2
- core-js-pure: ^3.0.1
- ethereumjs-account: ^3.0.0
- ethereumjs-block: ^2.2.2
- ethereumjs-blockchain: ^4.0.3
- ethereumjs-common: ^1.5.0
- ethereumjs-tx: ^2.1.2
- ethereumjs-util: ^6.2.0
- fake-merkle-patricia-tree: ^1.0.1
- functional-red-black-tree: ^1.0.1
- merkle-patricia-tree: ^2.3.2
- rustbn.js: ~0.2.0
- safe-buffer: ^5.1.1
- util.promisify: ^1.0.0
- checksum: ca73c406d55baefacafbdd8cefce80740098e5834096042e93285dc386ee670b4fed2f7846b78e3078fdf41231d04b3f1c40e435e639d072e0529ccb560b797b
- languageName: node
- linkType: hard
-
-"ethereumjs-vm@npm:^2.1.0, ethereumjs-vm@npm:^2.3.4, ethereumjs-vm@npm:^2.6.0":
- version: 2.6.0
- resolution: "ethereumjs-vm@npm:2.6.0"
- dependencies:
- async: ^2.1.2
- async-eventemitter: ^0.2.2
- ethereumjs-account: ^2.0.3
- ethereumjs-block: ~2.2.0
- ethereumjs-common: ^1.1.0
- ethereumjs-util: ^6.0.0
- fake-merkle-patricia-tree: ^1.0.1
- functional-red-black-tree: ^1.0.1
- merkle-patricia-tree: ^2.3.2
- rustbn.js: ~0.2.0
- safe-buffer: ^5.1.1
- checksum: 3b3098b2ac3d5335797e4d73fceb76d1b776e453abb5fa4d1cd94f6391f493e95e3c89a8ee602558bc2a3b36b89977e66473de73faa87c8540b1954aa7b8c3fd
- languageName: node
- linkType: hard
-
-"ethereumjs-wallet@npm:0.6.5":
- version: 0.6.5
- resolution: "ethereumjs-wallet@npm:0.6.5"
- dependencies:
- aes-js: ^3.1.1
- bs58check: ^2.1.2
- ethereum-cryptography: ^0.1.3
- ethereumjs-util: ^6.0.0
- randombytes: ^2.0.6
- safe-buffer: ^5.1.2
- scryptsy: ^1.2.1
- utf8: ^3.0.0
- uuid: ^3.3.2
- checksum: 54a9cc8beb8ea55e9be9b024b6ed09349423145fd8c49b8662d60d9258039330163c830fec055f92becc71ea54b430d2ef29f6bd73fa49d93ea854af01d13e58
+ ethjs-util: 0.1.6
+ rlp: ^2.2.3
+ checksum: e3cb4a2c034a2529281fdfc21a2126fe032fdc3038863f5720352daa65ddcc50fc8c67dbedf381a882dc3802e05d979287126d7ecf781504bde1fd8218693bde
languageName: node
linkType: hard
-"ethers@npm:^4.0.40":
- version: 4.0.49
- resolution: "ethers@npm:4.0.49"
+"ethereumjs-util@npm:^7.0.10, ethereumjs-util@npm:^7.0.3, ethereumjs-util@npm:^7.1.0, ethereumjs-util@npm:^7.1.1, ethereumjs-util@npm:^7.1.2, ethereumjs-util@npm:^7.1.4, ethereumjs-util@npm:^7.1.5":
+ version: 7.1.5
+ resolution: "ethereumjs-util@npm:7.1.5"
dependencies:
- aes-js: 3.0.0
- bn.js: ^4.11.9
- elliptic: 6.5.4
- hash.js: 1.1.3
- js-sha3: 0.5.7
- scrypt-js: 2.0.4
- setimmediate: 1.0.4
- uuid: 2.0.1
- xmlhttprequest: 1.8.0
- checksum: 357115348a5f1484c7745fae1d852876788216c7d94c072c80132192f1800c4d388433ea2456750856641d6d4eed8a3b41847eb44f5e1c42139963864e3bcc38
+ "@types/bn.js": ^5.1.0
+ bn.js: ^5.1.2
+ create-hash: ^1.1.2
+ ethereum-cryptography: ^0.1.3
+ rlp: ^2.2.4
+ checksum: 27a3c79d6e06b2df34b80d478ce465b371c8458b58f5afc14d91c8564c13363ad336e6e83f57eb0bd719fde94d10ee5697ceef78b5aa932087150c5287b286d1
languageName: node
linkType: hard
-"ethers@npm:^5.0.1, ethers@npm:^5.0.2, ethers@npm:^5.5.2, ethers@npm:^5.6.1, ethers@npm:^5.7.1, ethers@npm:^5.7.2":
+"ethers@npm:^5.6.1, ethers@npm:^5.7.1, ethers@npm:^5.7.2":
version: 5.7.2
resolution: "ethers@npm:5.7.2"
dependencies:
@@ -6538,6 +5362,21 @@ __metadata:
languageName: node
linkType: hard
+"ethers@npm:^6.1.0":
+ version: 6.12.0
+ resolution: "ethers@npm:6.12.0"
+ dependencies:
+ "@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
+ checksum: a9fa6937f57be00f217cac045752113f0be6ecbef77b90d653202f4127930023e86d20f06631cc4114bdbcf28fcb7dcb5244a88e2e430df1dfcb623e93c23366
+ languageName: node
+ linkType: hard
+
"ethjs-unit@npm:0.1.6":
version: 0.1.6
resolution: "ethjs-unit@npm:0.1.6"
@@ -6558,13 +5397,6 @@ __metadata:
languageName: node
linkType: hard
-"event-target-shim@npm:^5.0.0":
- version: 5.0.1
- resolution: "event-target-shim@npm:5.0.1"
- checksum: 1ffe3bb22a6d51bdeb6bf6f7cf97d2ff4a74b017ad12284cc9e6a279e727dc30a5de6bb613e5596ff4dc3e517841339ad09a7eec44266eccb1aa201a30448166
- languageName: node
- linkType: hard
-
"eventemitter3@npm:4.0.4":
version: 4.0.4
resolution: "eventemitter3@npm:4.0.4"
@@ -6572,13 +5404,6 @@ __metadata:
languageName: node
linkType: hard
-"events@npm:^3.0.0":
- version: 3.3.0
- resolution: "events@npm:3.3.0"
- checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780
- languageName: node
- linkType: hard
-
"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3":
version: 1.0.3
resolution: "evp_bytestokey@npm:1.0.3"
@@ -6597,21 +5422,6 @@ __metadata:
languageName: node
linkType: hard
-"expand-brackets@npm:^2.1.4":
- version: 2.1.4
- resolution: "expand-brackets@npm:2.1.4"
- dependencies:
- debug: ^2.3.3
- define-property: ^0.2.5
- extend-shallow: ^2.0.1
- posix-character-classes: ^0.1.0
- regex-not: ^1.0.0
- snapdragon: ^0.8.1
- to-regex: ^3.0.1
- checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1
- languageName: node
- linkType: hard
-
"express@npm:^4.14.0":
version: 4.18.2
resolution: "express@npm:4.18.2"
@@ -6660,25 +5470,6 @@ __metadata:
languageName: node
linkType: hard
-"extend-shallow@npm:^2.0.1":
- version: 2.0.1
- resolution: "extend-shallow@npm:2.0.1"
- dependencies:
- is-extendable: ^0.1.0
- checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8
- languageName: node
- linkType: hard
-
-"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2":
- version: 3.0.2
- resolution: "extend-shallow@npm:3.0.2"
- dependencies:
- assign-symbols: ^1.0.0
- is-extendable: ^1.0.1
- checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461
- languageName: node
- linkType: hard
-
"extend@npm:~3.0.2":
version: 3.0.2
resolution: "extend@npm:3.0.2"
@@ -6697,22 +5488,6 @@ __metadata:
languageName: node
linkType: hard
-"extglob@npm:^2.0.4":
- version: 2.0.4
- resolution: "extglob@npm:2.0.4"
- dependencies:
- array-unique: ^0.3.2
- define-property: ^1.0.0
- expand-brackets: ^2.1.4
- extend-shallow: ^2.0.1
- fragment-cache: ^0.2.1
- regex-not: ^1.0.0
- snapdragon: ^0.8.1
- to-regex: ^3.0.1
- checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00
- languageName: node
- linkType: hard
-
"extsprintf@npm:1.3.0":
version: 1.3.0
resolution: "extsprintf@npm:1.3.0"
@@ -6727,15 +5502,6 @@ __metadata:
languageName: node
linkType: hard
-"fake-merkle-patricia-tree@npm:^1.0.1":
- version: 1.0.1
- resolution: "fake-merkle-patricia-tree@npm:1.0.1"
- dependencies:
- checkpoint-store: ^1.1.0
- checksum: 8f9fe05bb5beabb31e4fbb8d2cfe83cfb36fd9f6ba78193dea8fab7a679470d45bb04c6f052d4f79da03e81129c5b5bed528902430184e1e11b4959f397019ac
- languageName: node
- linkType: hard
-
"fast-base64-decode@npm:^1.0.0":
version: 1.0.0
resolution: "fast-base64-decode@npm:1.0.0"
@@ -6757,6 +5523,13 @@ __metadata:
languageName: node
linkType: hard
+"fast-diff@npm:^1.2.0":
+ version: 1.3.0
+ resolution: "fast-diff@npm:1.3.0"
+ checksum: d22d371b994fdc8cce9ff510d7b8dc4da70ac327bcba20df607dd5b9cae9f908f4d1028f5fe467650f058d1e7270235ae0b8230809a262b4df587a3b3aa216c3
+ languageName: node
+ linkType: hard
+
"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9":
version: 3.2.11
resolution: "fast-glob@npm:3.2.11"
@@ -6793,15 +5566,6 @@ __metadata:
languageName: node
linkType: hard
-"fetch-ponyfill@npm:^4.0.0":
- version: 4.1.0
- resolution: "fetch-ponyfill@npm:4.1.0"
- dependencies:
- node-fetch: ~1.7.1
- checksum: 00c85b661a8314e18cb314640b69d3b6e9635517d54290c8f366ddcb21b506ac8fa5d92f899c0fe21bc2163238130be2cf73ffd9d5a8a41a9866a55c52f57f16
- languageName: node
- linkType: hard
-
"figures@npm:^2.0.0":
version: 2.0.0
resolution: "figures@npm:2.0.0"
@@ -6829,18 +5593,6 @@ __metadata:
languageName: node
linkType: hard
-"fill-range@npm:^4.0.0":
- version: 4.0.0
- resolution: "fill-range@npm:4.0.0"
- dependencies:
- extend-shallow: ^2.0.1
- is-number: ^3.0.0
- repeat-string: ^1.6.1
- to-regex-range: ^2.1.0
- checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298
- languageName: node
- linkType: hard
-
"fill-range@npm:^7.0.1":
version: 7.0.1
resolution: "fill-range@npm:7.0.1"
@@ -6865,16 +5617,6 @@ __metadata:
languageName: node
linkType: hard
-"find-replace@npm:^1.0.3":
- version: 1.0.3
- resolution: "find-replace@npm:1.0.3"
- dependencies:
- array-back: ^1.0.4
- test-value: ^2.1.0
- checksum: fd95f44e59bd54ea1c0169480952b339a4642cd62d81236fef7f87146d3bc00a042b17d81f896712e8542e01fe5c84e82ac37b6b77b4e3422abbcf7c13bbacfd
- languageName: node
- linkType: hard
-
"find-replace@npm:^3.0.0":
version: 3.0.0
resolution: "find-replace@npm:3.0.0"
@@ -6903,16 +5645,6 @@ __metadata:
languageName: node
linkType: hard
-"find-up@npm:^1.0.0":
- version: 1.1.2
- resolution: "find-up@npm:1.1.2"
- dependencies:
- path-exists: ^2.0.0
- pinkie-promise: ^2.0.0
- checksum: a2cb9f4c9f06ee3a1e92ed71d5aed41ac8ae30aefa568132f6c556fac7678a5035126153b59eaec68da78ac409eef02503b2b059706bdbf232668d7245e3240a
- languageName: node
- linkType: hard
-
"find-up@npm:^2.1.0":
version: 2.1.0
resolution: "find-up@npm:2.1.0"
@@ -6922,25 +5654,6 @@ __metadata:
languageName: node
linkType: hard
-"find-yarn-workspace-root@npm:^1.2.1":
- version: 1.2.1
- resolution: "find-yarn-workspace-root@npm:1.2.1"
- dependencies:
- fs-extra: ^4.0.3
- micromatch: ^3.1.4
- checksum: a8f4565fb1ead6122acc0d324fa3257c20f7b0c91b7b266dab9eee7251fb5558fcff5b35dbfd301bfd1cbb91c1cdd1799b28ffa5b9a92efd8c7ded3663652bbe
- languageName: node
- linkType: hard
-
-"find-yarn-workspace-root@npm:^2.0.0":
- version: 2.0.0
- resolution: "find-yarn-workspace-root@npm:2.0.0"
- dependencies:
- micromatch: ^4.0.2
- checksum: fa5ca8f9d08fe7a54ce7c0a5931ff9b7e36f9ee7b9475fb13752bcea80ec6b5f180fa5102d60b376d5526ce924ea3fc6b19301262efa0a5d248dd710f3644242
- languageName: node
- linkType: hard
-
"flat-cache@npm:^2.0.1":
version: 2.0.1
resolution: "flat-cache@npm:2.0.1"
@@ -6996,14 +5709,7 @@ __metadata:
languageName: node
linkType: hard
-"flow-stoplight@npm:^1.0.0":
- version: 1.0.0
- resolution: "flow-stoplight@npm:1.0.0"
- checksum: 2f1f34629e724afe7de7b6cb7b5f9ef1b37fa5a4b8a10e24b9c1043872777c41f4c7e09994ecfd5bc70138a04966c3153c4e15187a24771f5d5151a325a96a2e
- languageName: node
- linkType: hard
-
-"follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.14.0":
+"follow-redirects@npm:^1.12.1":
version: 1.15.2
resolution: "follow-redirects@npm:1.15.2"
peerDependenciesMeta:
@@ -7013,7 +5719,17 @@ __metadata:
languageName: node
linkType: hard
-"for-each@npm:^0.3.3, for-each@npm:~0.3.3":
+"follow-redirects@npm:^1.15.6":
+ version: 1.15.6
+ resolution: "follow-redirects@npm:1.15.6"
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5
+ languageName: node
+ linkType: hard
+
+"for-each@npm:^0.3.3":
version: 0.3.3
resolution: "for-each@npm:0.3.3"
dependencies:
@@ -7022,10 +5738,13 @@ __metadata:
languageName: node
linkType: hard
-"for-in@npm:^1.0.2":
- version: 1.0.2
- resolution: "for-in@npm:1.0.2"
- checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d
+"foreground-child@npm:^3.1.0":
+ version: 3.1.1
+ resolution: "foreground-child@npm:3.1.1"
+ dependencies:
+ cross-spawn: ^7.0.0
+ signal-exit: ^4.0.1
+ checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5
languageName: node
linkType: hard
@@ -7043,25 +5762,14 @@ __metadata:
languageName: node
linkType: hard
-"form-data@npm:^2.2.0":
- version: 2.5.1
- resolution: "form-data@npm:2.5.1"
- dependencies:
- asynckit: ^0.4.0
- combined-stream: ^1.0.6
- mime-types: ^2.1.12
- checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08
- languageName: node
- linkType: hard
-
-"form-data@npm:^3.0.0":
- version: 3.0.1
- resolution: "form-data@npm:3.0.1"
+"form-data@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "form-data@npm:4.0.0"
dependencies:
asynckit: ^0.4.0
combined-stream: ^1.0.8
mime-types: ^2.1.12
- checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d
+ checksum: 01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c
languageName: node
linkType: hard
@@ -7097,15 +5805,6 @@ __metadata:
languageName: node
linkType: hard
-"fragment-cache@npm:^0.2.1":
- version: 0.2.1
- resolution: "fragment-cache@npm:0.2.1"
- dependencies:
- map-cache: ^0.2.2
- checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc
- languageName: node
- linkType: hard
-
"fresh@npm:0.5.2":
version: 0.5.2
resolution: "fresh@npm:0.5.2"
@@ -7126,7 +5825,7 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^4.0.2, fs-extra@npm:^4.0.3":
+"fs-extra@npm:^4.0.2":
version: 4.0.3
resolution: "fs-extra@npm:4.0.3"
dependencies:
@@ -7189,13 +5888,6 @@ __metadata:
languageName: node
linkType: hard
-"fs-readdir-recursive@npm:^1.1.0":
- version: 1.1.0
- resolution: "fs-readdir-recursive@npm:1.1.0"
- checksum: 29d50f3d2128391c7fc9fd051c8b7ea45bcc8aa84daf31ef52b17218e20bfd2bd34d02382742801954cc8d1905832b68227f6b680a666ce525d8b6b75068ad1e
- languageName: node
- linkType: hard
-
"fs.realpath@npm:^1.0.0":
version: 1.0.0
resolution: "fs.realpath@npm:1.0.0"
@@ -7241,13 +5933,20 @@ __metadata:
languageName: node
linkType: hard
-"function-bind@npm:^1.1.1, function-bind@npm:~1.1.1":
+"function-bind@npm:^1.1.1":
version: 1.1.1
resolution: "function-bind@npm:1.1.1"
checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a
languageName: node
linkType: hard
+"function-bind@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "function-bind@npm:1.1.2"
+ checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1
+ languageName: node
+ linkType: hard
+
"function.prototype.name@npm:^1.1.5":
version: 1.1.5
resolution: "function.prototype.name@npm:1.1.5"
@@ -7260,6 +5959,18 @@ __metadata:
languageName: node
linkType: hard
+"function.prototype.name@npm:^1.1.6":
+ version: 1.1.6
+ resolution: "function.prototype.name@npm:1.1.6"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ functions-have-names: ^1.2.3
+ checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479
+ languageName: node
+ linkType: hard
+
"functional-red-black-tree@npm:^1.0.1, functional-red-black-tree@npm:~1.0.1":
version: 1.0.1
resolution: "functional-red-black-tree@npm:1.0.1"
@@ -7267,64 +5978,25 @@ __metadata:
languageName: node
linkType: hard
-"functions-have-names@npm:^1.2.2":
+"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3":
version: 1.2.3
resolution: "functions-have-names@npm:1.2.3"
checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5
languageName: node
linkType: hard
-"ganache-core@npm:^2.13.2":
- version: 2.13.2
- resolution: "ganache-core@npm:2.13.2"
- dependencies:
- abstract-leveldown: 3.0.0
- async: 2.6.2
- bip39: 2.5.0
- cachedown: 1.0.0
- clone: 2.1.2
- debug: 3.2.6
- encoding-down: 5.0.4
- eth-sig-util: 3.0.0
- ethereumjs-abi: 0.6.8
- ethereumjs-account: 3.0.0
- ethereumjs-block: 2.2.2
- ethereumjs-common: 1.5.0
- ethereumjs-tx: 2.1.2
- ethereumjs-util: 6.2.1
- ethereumjs-vm: 4.2.0
- ethereumjs-wallet: 0.6.5
- heap: 0.2.6
- keccak: 3.0.1
- level-sublevel: 6.6.4
- levelup: 3.1.1
- lodash: 4.17.20
- lru-cache: 5.1.1
- merkle-patricia-tree: 3.0.0
- patch-package: 6.2.2
- seedrandom: 3.0.1
- source-map-support: 0.5.12
- tmp: 0.1.0
- web3: 1.2.11
- web3-provider-engine: 14.2.1
- websocket: 1.0.32
- dependenciesMeta:
- ethereumjs-wallet:
- optional: true
- web3:
- optional: true
- checksum: 799b275abd09259c88a4e78c335e807d14cc12d3a1ceb9d7cdeef484cf5fab541847edf9cf209f448190199dbd0796393d308d50e6823565154c17dd0c3a4048
- languageName: node
- linkType: hard
-
-"ganache@npm:^7.4.0":
- version: 7.5.0
- resolution: "ganache@npm:7.5.0"
+"ganache@npm:^7.9.2":
+ version: 7.9.2
+ resolution: "ganache@npm:7.9.2"
dependencies:
"@trufflesuite/bigint-buffer": 1.1.10
+ "@trufflesuite/uws-js-unofficial": 20.30.0-unofficial.0
"@types/bn.js": ^5.1.0
"@types/lru-cache": 5.1.1
"@types/seedrandom": 3.0.1
+ abstract-level: 1.0.3
+ abstract-leveldown: 7.2.0
+ async-eventemitter: 0.2.4
bufferutil: 4.0.5
emittery: 0.10.0
keccak: 3.0.2
@@ -7339,7 +6011,7 @@ __metadata:
bin:
ganache: dist/node/cli.js
ganache-cli: dist/node/cli.js
- checksum: 3baec5c71d066264bfd14ec9a47d17f82fdea198aa7c3f020975b3c35da81872853e306fdd397f22f109f7e01268eb4434a87bb30ef2d66624fbc6fc4ce0c1ad
+ checksum: 30af47d29e8f10e79f41f2f29e126c36c157767bdf19d8d8f101cfa9bc75eaca933c1c470557041728eef2dd7e2bd8d4715691996b5951d04f8056036cf6cfa0
languageName: node
linkType: hard
@@ -7359,13 +6031,6 @@ __metadata:
languageName: node
linkType: hard
-"get-caller-file@npm:^1.0.1":
- version: 1.0.3
- resolution: "get-caller-file@npm:1.0.3"
- checksum: 2b90a7f848896abcebcdc0acc627a435bcf05b9cd280599bc980ebfcdc222416c3df12c24c4845f69adc4346728e8966f70b758f9369f3534182791dfbc25c05
- languageName: node
- linkType: hard
-
"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5":
version: 2.0.5
resolution: "get-caller-file@npm:2.0.5"
@@ -7373,10 +6038,10 @@ __metadata:
languageName: node
linkType: hard
-"get-func-name@npm:^2.0.0":
- version: 2.0.0
- resolution: "get-func-name@npm:2.0.0"
- checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3
+"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "get-func-name@npm:2.0.2"
+ checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b
languageName: node
linkType: hard
@@ -7391,10 +6056,16 @@ __metadata:
languageName: node
linkType: hard
-"get-port@npm:^3.1.0":
- version: 3.2.0
- resolution: "get-port@npm:3.2.0"
- checksum: 31f530326569683ac4b7452eb7573c40e9dbe52aec14d80745c35475261e6389160da153d5b8ae911150b4ce99003472b30c69ba5be0cedeaa7865b95542d168
+"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "get-intrinsic@npm:1.2.4"
+ dependencies:
+ es-errors: ^1.3.0
+ function-bind: ^1.1.2
+ has-proto: ^1.0.1
+ has-symbols: ^1.0.3
+ hasown: ^2.0.0
+ checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951
languageName: node
linkType: hard
@@ -7405,15 +6076,6 @@ __metadata:
languageName: node
linkType: hard
-"get-stream@npm:^4.1.0":
- version: 4.1.0
- resolution: "get-stream@npm:4.1.0"
- dependencies:
- pump: ^3.0.0
- checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73
- languageName: node
- linkType: hard
-
"get-stream@npm:^5.1.0":
version: 5.2.0
resolution: "get-stream@npm:5.2.0"
@@ -7440,10 +6102,14 @@ __metadata:
languageName: node
linkType: hard
-"get-value@npm:^2.0.3, get-value@npm:^2.0.6":
- version: 2.0.6
- resolution: "get-value@npm:2.0.6"
- checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb
+"get-symbol-description@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "get-symbol-description@npm:1.0.2"
+ dependencies:
+ call-bind: ^1.0.5
+ es-errors: ^1.3.0
+ get-intrinsic: ^1.2.4
+ checksum: e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973
languageName: node
linkType: hard
@@ -7500,7 +6166,7 @@ __metadata:
languageName: node
linkType: hard
-"glob@npm:7.1.7, glob@npm:~7.1.6":
+"glob@npm:7.1.7":
version: 7.1.7
resolution: "glob@npm:7.1.7"
dependencies:
@@ -7528,6 +6194,21 @@ __metadata:
languageName: node
linkType: hard
+"glob@npm:^10.3.10":
+ version: 10.3.12
+ resolution: "glob@npm:10.3.12"
+ dependencies:
+ foreground-child: ^3.1.0
+ jackspeak: ^2.3.6
+ minimatch: ^9.0.1
+ minipass: ^7.0.4
+ path-scurry: ^1.10.2
+ bin:
+ glob: dist/esm/bin.mjs
+ checksum: 2b0949d6363021aaa561b108ac317bf5a97271b8a5d7a5fac1a176e40e8068ecdcccc992f8a7e958593d501103ac06d673de92adc1efcbdab45edefe35f8d7c6
+ languageName: node
+ linkType: hard
+
"glob@npm:^5.0.15":
version: 5.0.15
resolution: "glob@npm:5.0.15"
@@ -7555,7 +6236,7 @@ __metadata:
languageName: node
linkType: hard
-"glob@npm:^8.0.1":
+"glob@npm:^8.0.1, glob@npm:^8.0.3":
version: 8.1.0
resolution: "glob@npm:8.1.0"
dependencies:
@@ -7614,10 +6295,12 @@ __metadata:
languageName: node
linkType: hard
-"globals@npm:^9.18.0":
- version: 9.18.0
- resolution: "globals@npm:9.18.0"
- checksum: e9c066aecfdc5ea6f727344a4246ecc243aaf66ede3bffee10ddc0c73351794c25e727dd046090dcecd821199a63b9de6af299a6e3ba292c8b22f0a80ea32073
+"globalthis@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "globalthis@npm:1.0.3"
+ dependencies:
+ define-properties: ^1.1.3
+ checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998
languageName: node
linkType: hard
@@ -7651,6 +6334,15 @@ __metadata:
languageName: node
linkType: hard
+"gopd@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "gopd@npm:1.0.1"
+ dependencies:
+ get-intrinsic: ^1.1.3
+ checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6
+ languageName: node
+ linkType: hard
+
"got@npm:12.1.0":
version: 12.1.0
resolution: "got@npm:12.1.0"
@@ -7672,25 +6364,6 @@ __metadata:
languageName: node
linkType: hard
-"got@npm:9.6.0":
- version: 9.6.0
- resolution: "got@npm:9.6.0"
- dependencies:
- "@sindresorhus/is": ^0.14.0
- "@szmarczak/http-timer": ^1.1.2
- cacheable-request: ^6.0.0
- decompress-response: ^3.3.0
- duplexer3: ^0.1.4
- get-stream: ^4.1.0
- lowercase-keys: ^1.0.1
- mimic-response: ^1.0.1
- p-cancelable: ^1.0.0
- to-readable-stream: ^1.0.0
- url-parse-lax: ^3.0.0
- checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0
- languageName: node
- linkType: hard
-
"got@npm:^7.1.0":
version: 7.1.0
resolution: "got@npm:7.1.0"
@@ -7713,7 +6386,7 @@ __metadata:
languageName: node
linkType: hard
-"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6":
+"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6":
version: 4.2.10
resolution: "graceful-fs@npm:4.2.10"
checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da
@@ -7778,68 +6451,83 @@ __metadata:
languageName: node
linkType: hard
-"hardhat-contract-sizer@npm:^2.6.1":
- version: 2.6.1
- resolution: "hardhat-contract-sizer@npm:2.6.1"
+"hardhat-contract-sizer@npm:^2.10.0":
+ version: 2.10.0
+ resolution: "hardhat-contract-sizer@npm:2.10.0"
dependencies:
chalk: ^4.0.0
cli-table3: ^0.6.0
+ strip-ansi: ^6.0.0
peerDependencies:
hardhat: ^2.0.0
- checksum: a82ae2405a8571e8b0cd0a21dea9a10946b342f1ada04c72c9cbe28fca955f9a2b1394c70400003f388182298dc1de00e80bf56dbfa5e36833d3c93ab1f50c0c
+ checksum: 870e7cad5d96ad7288b64da0faec7962a9a18e1eaaa02ed474e4f9285cd4b1a0fc6f66326e6a7476f7063fdf99aee57f227084519b1fb3723700a2d65fc65cfa
languageName: node
linkType: hard
-"hardhat-gas-reporter@npm:^1.0.9":
- version: 1.0.9
- resolution: "hardhat-gas-reporter@npm:1.0.9"
+"hardhat-gas-reporter@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "hardhat-gas-reporter@npm:2.1.1"
dependencies:
- array-uniq: 1.0.3
- eth-gas-reporter: ^0.2.25
+ "@ethersproject/abi": ^5.7.0
+ "@ethersproject/bytes": ^5.7.0
+ "@ethersproject/units": ^5.7.0
+ "@solidity-parser/parser": ^0.18.0
+ axios: ^1.6.7
+ brotli-wasm: ^2.0.1
+ chalk: 4.1.2
+ cli-table3: ^0.6.3
+ ethereum-cryptography: ^2.1.3
+ glob: ^10.3.10
+ jsonschema: ^1.4.1
+ lodash: ^4.17.21
+ markdown-table: 2.0.0
sha1: ^1.1.1
+ viem: 2.7.14
peerDependencies:
- hardhat: ^2.0.2
- checksum: 77f8f8d085ff3d9d7787f0227e5355e1800f7d6707bc70171e0567bf69706703ae7f6f53dce1be1d409e7e71e3629a434c94b546bdbbc1e4c1af47cd5d0c6776
+ hardhat: ^2.16.0
+ checksum: ca06f18ed7cfaa794f23e92ec6835b0e364cea1361056708488e8610a3b50d74a2b47d9b3771df36fc00bb24380ab03f7bcf183a153b047a2896c2184245b5c6
languageName: node
linkType: hard
-"hardhat-tracer@npm:^2.3.2":
- version: 2.3.2
- resolution: "hardhat-tracer@npm:2.3.2"
+"hardhat-tracer@npm:^2.8.1":
+ version: 2.8.1
+ resolution: "hardhat-tracer@npm:2.8.1"
dependencies:
chalk: ^4.1.2
+ debug: ^4.3.4
ethers: ^5.6.1
peerDependencies:
chai: 4.x
- hardhat: 2.x
- checksum: 6c1601e4ba808100ce0895fc7859fd09a3bbffcf42cf5e59c8caf7f0bcd53a729d0400750877a81622995fa6b8b9b33d2a34e604f2df2d0d41e1fa515330c1da
+ hardhat: ">=2.16 <2.21.0"
+ checksum: e78d018a5e5e2a1fdcbeea72dba72d9177337dfcd5602f12afb9c92f5d62269a98c0f95220de470420c8d9dce591be5e8f6772941db98b969f3144f865fe9531
languageName: node
linkType: hard
-"hardhat@npm:^2.11.2":
- version: 2.11.2
- resolution: "hardhat@npm:2.11.2"
+"hardhat@npm:~2.20.0":
+ version: 2.20.1
+ resolution: "hardhat@npm:2.20.1"
dependencies:
"@ethersproject/abi": ^5.1.2
"@metamask/eth-sig-util": ^4.0.0
- "@nomicfoundation/ethereumjs-block": ^4.0.0
- "@nomicfoundation/ethereumjs-blockchain": ^6.0.0
- "@nomicfoundation/ethereumjs-common": ^3.0.0
- "@nomicfoundation/ethereumjs-evm": ^1.0.0
- "@nomicfoundation/ethereumjs-rlp": ^4.0.0
- "@nomicfoundation/ethereumjs-statemanager": ^1.0.0
- "@nomicfoundation/ethereumjs-trie": ^5.0.0
- "@nomicfoundation/ethereumjs-tx": ^4.0.0
- "@nomicfoundation/ethereumjs-util": ^8.0.0
- "@nomicfoundation/ethereumjs-vm": ^6.0.0
- "@nomicfoundation/solidity-analyzer": ^0.0.3
+ "@nomicfoundation/ethereumjs-block": 5.0.4
+ "@nomicfoundation/ethereumjs-blockchain": 7.0.4
+ "@nomicfoundation/ethereumjs-common": 4.0.4
+ "@nomicfoundation/ethereumjs-evm": 2.0.4
+ "@nomicfoundation/ethereumjs-rlp": 5.0.4
+ "@nomicfoundation/ethereumjs-statemanager": 2.0.4
+ "@nomicfoundation/ethereumjs-trie": 6.0.4
+ "@nomicfoundation/ethereumjs-tx": 5.0.4
+ "@nomicfoundation/ethereumjs-util": 9.0.4
+ "@nomicfoundation/ethereumjs-verkle": 0.0.2
+ "@nomicfoundation/ethereumjs-vm": 7.0.4
+ "@nomicfoundation/solidity-analyzer": ^0.1.0
"@sentry/node": ^5.18.1
"@types/bn.js": ^5.1.0
"@types/lru-cache": ^5.1.0
- abort-controller: ^3.0.0
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
@@ -7859,7 +6547,6 @@ __metadata:
mnemonist: ^0.38.0
mocha: ^10.0.0
p-map: ^4.0.0
- qs: ^6.7.0
raw-body: ^2.4.1
resolve: 1.17.0
semver: ^6.3.0
@@ -7867,7 +6554,7 @@ __metadata:
source-map-support: ^0.5.13
stacktrace-parser: ^0.1.10
tsort: 0.0.1
- undici: ^5.4.0
+ undici: ^5.14.0
uuid: ^8.3.2
ws: ^7.4.6
peerDependencies:
@@ -7879,17 +6566,8 @@ __metadata:
typescript:
optional: true
bin:
- hardhat: internal/cli/cli.js
- checksum: 6fc289931c970a16fe09f7aa2b14f8b4f4a63304895be7e89112d4065cfdb15887d90cdd827d10f413fb5cc1ca09fb0b512b7ffc79dc6bc121368bda70dffb4a
- languageName: node
- linkType: hard
-
-"has-ansi@npm:^2.0.0":
- version: 2.0.0
- resolution: "has-ansi@npm:2.0.0"
- dependencies:
- ansi-regex: ^2.0.0
- checksum: 1b51daa0214440db171ff359d0a2d17bc20061164c57e76234f614c91dbd2a79ddd68dfc8ee73629366f7be45a6df5f2ea9de83f52e1ca24433f2cc78c35d8ec
+ hardhat: internal/cli/bootstrap.js
+ checksum: 191f2878f18740a59afa9afa3486487a6e2c7c57d54410779349a40a1046117b6329a151f6e66bba0c2a94b15f9880f38a1e4d7053c33eca022a3de5669326e8
languageName: node
linkType: hard
@@ -7930,6 +6608,22 @@ __metadata:
languageName: node
linkType: hard
+"has-property-descriptors@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "has-property-descriptors@npm:1.0.2"
+ dependencies:
+ es-define-property: ^1.0.0
+ checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3
+ languageName: node
+ linkType: hard
+
+"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "has-proto@npm:1.0.3"
+ checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4
+ languageName: node
+ linkType: hard
+
"has-symbol-support-x@npm:^1.4.1":
version: 1.4.2
resolution: "has-symbol-support-x@npm:1.4.2"
@@ -7962,53 +6656,23 @@ __metadata:
languageName: node
linkType: hard
-"has-unicode@npm:^2.0.1":
- version: 2.0.1
- resolution: "has-unicode@npm:2.0.1"
- checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400
- languageName: node
- linkType: hard
-
-"has-value@npm:^0.3.1":
- version: 0.3.1
- resolution: "has-value@npm:0.3.1"
- dependencies:
- get-value: ^2.0.3
- has-values: ^0.1.4
- isobject: ^2.0.0
- checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f
- languageName: node
- linkType: hard
-
-"has-value@npm:^1.0.0":
- version: 1.0.0
- resolution: "has-value@npm:1.0.0"
+"has-tostringtag@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "has-tostringtag@npm:1.0.2"
dependencies:
- get-value: ^2.0.6
- has-values: ^1.0.0
- isobject: ^3.0.0
- checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847
- languageName: node
- linkType: hard
-
-"has-values@npm:^0.1.4":
- version: 0.1.4
- resolution: "has-values@npm:0.1.4"
- checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc
+ has-symbols: ^1.0.3
+ checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d
languageName: node
linkType: hard
-"has-values@npm:^1.0.0":
- version: 1.0.0
- resolution: "has-values@npm:1.0.0"
- dependencies:
- is-number: ^3.0.0
- kind-of: ^4.0.0
- checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11
+"has-unicode@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "has-unicode@npm:2.0.1"
+ checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400
languageName: node
linkType: hard
-"has@npm:^1.0.3, has@npm:~1.0.3":
+"has@npm:^1.0.3":
version: 1.0.3
resolution: "has@npm:1.0.3"
dependencies:
@@ -8035,16 +6699,6 @@ __metadata:
languageName: node
linkType: hard
-"hash.js@npm:1.1.3":
- version: 1.1.3
- resolution: "hash.js@npm:1.1.3"
- dependencies:
- inherits: ^2.0.3
- minimalistic-assert: ^1.0.0
- checksum: 93de6f178bf71feee38f66868a57ecb5602d937c1ccd69951b0bfec1488813b6afdbb4a81ddb2c62488c419b4a35af352298b006f14c9cfbf5b872c4191b657f
- languageName: node
- linkType: hard
-
"hash.js@npm:1.1.7, hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.5, hash.js@npm:^1.1.7":
version: 1.1.7
resolution: "hash.js@npm:1.1.7"
@@ -8055,6 +6709,15 @@ __metadata:
languageName: node
linkType: hard
+"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "hasown@npm:2.0.2"
+ dependencies:
+ function-bind: ^1.1.2
+ checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db
+ languageName: node
+ linkType: hard
+
"hdkey@npm:^2.0.1":
version: 2.0.1
resolution: "hdkey@npm:2.0.1"
@@ -8075,13 +6738,6 @@ __metadata:
languageName: node
linkType: hard
-"heap@npm:0.2.6":
- version: 0.2.6
- resolution: "heap@npm:0.2.6"
- checksum: 1291b9b9efb5090d01c6d04a89c91ca6e0e0eb7f3694d8254f7a5effcc5ab9249bc3d16767b276645ffe86d9b2bbd82ed977f8988f55375e9f2a2c80647ebbdc
- languageName: node
- linkType: hard
-
"heap@npm:>= 0.2.0":
version: 0.2.7
resolution: "heap@npm:0.2.7"
@@ -8100,35 +6756,6 @@ __metadata:
languageName: node
linkType: hard
-"home-or-tmp@npm:^2.0.0":
- version: 2.0.0
- resolution: "home-or-tmp@npm:2.0.0"
- dependencies:
- os-homedir: ^1.0.0
- os-tmpdir: ^1.0.1
- checksum: b783c6ffd22f716d82f53e8c781cbe49bc9f4109a89ea86a27951e54c0bd335caf06bd828be2958cd9f4681986df1739558ae786abda6298cdd6d3edc2c362f1
- languageName: node
- linkType: hard
-
-"hosted-git-info@npm:^2.1.4, hosted-git-info@npm:^2.6.0":
- version: 2.8.9
- resolution: "hosted-git-info@npm:2.8.9"
- checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd
- languageName: node
- linkType: hard
-
-"http-basic@npm:^8.1.1":
- version: 8.1.3
- resolution: "http-basic@npm:8.1.3"
- dependencies:
- caseless: ^0.12.0
- concat-stream: ^1.6.2
- http-response-object: ^3.0.1
- parse-cache-control: ^1.0.1
- checksum: 7df5dc4d4b6eb8cc3beaa77f8e5c3074288ec3835abd83c85e5bb66d8a95a0ef97664d862caf5e225698cb795f78f9a5abd0d39404e5356ccd3e5e10c87936a5
- languageName: node
- linkType: hard
-
"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0":
version: 4.1.1
resolution: "http-cache-semantics@npm:4.1.1"
@@ -8167,15 +6794,6 @@ __metadata:
languageName: node
linkType: hard
-"http-response-object@npm:^3.0.1":
- version: 3.0.2
- resolution: "http-response-object@npm:3.0.2"
- dependencies:
- "@types/node": ^10.0.3
- checksum: 6cbdcb4ce7b27c9158a131b772c903ed54add2ba831e29cc165e91c3969fa6f8105ddf924aac5b954b534ad15a1ae697b693331b2be5281ee24d79aae20c3264
- languageName: node
- linkType: hard
-
"http-signature@npm:~1.2.0":
version: 1.2.0
resolution: "http-signature@npm:1.2.0"
@@ -8273,6 +6891,13 @@ __metadata:
languageName: node
linkType: hard
+"ignore@npm:^5.2.4":
+ version: 5.3.1
+ resolution: "ignore@npm:5.3.1"
+ checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3
+ languageName: node
+ linkType: hard
+
"immediate@npm:^3.2.3":
version: 3.3.0
resolution: "immediate@npm:3.3.0"
@@ -8304,7 +6929,7 @@ __metadata:
languageName: node
linkType: hard
-"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1":
+"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
dependencies:
@@ -8345,7 +6970,7 @@ __metadata:
languageName: node
linkType: hard
-"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3, inherits@npm:~2.0.4":
+"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1
@@ -8387,30 +7012,25 @@ __metadata:
get-intrinsic: ^1.1.0
has: ^1.0.3
side-channel: ^1.0.4
- checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf
- languageName: node
- linkType: hard
-
-"interpret@npm:^1.0.0":
- version: 1.4.0
- resolution: "interpret@npm:1.4.0"
- checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155
+ checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf
languageName: node
linkType: hard
-"invariant@npm:^2.2.2":
- version: 2.2.4
- resolution: "invariant@npm:2.2.4"
+"internal-slot@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "internal-slot@npm:1.0.7"
dependencies:
- loose-envify: ^1.0.0
- checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14
+ es-errors: ^1.3.0
+ hasown: ^2.0.0
+ side-channel: ^1.0.4
+ checksum: cadc5eea5d7d9bc2342e93aae9f31f04c196afebb11bde97448327049f492cd7081e18623ae71388aac9cd237b692ca3a105be9c68ac39c1dec679d7409e33eb
languageName: node
linkType: hard
-"invert-kv@npm:^1.0.0":
- version: 1.0.0
- resolution: "invert-kv@npm:1.0.0"
- checksum: aebeee31dda3b3d25ffd242e9a050926e7fe5df642d60953ab183aca1a7d1ffb39922eb2618affb0e850cf2923116f0da1345367759d88d097df5da1f1e1590e
+"interpret@npm:^1.0.0":
+ version: 1.4.0
+ resolution: "interpret@npm:1.4.0"
+ checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155
languageName: node
linkType: hard
@@ -8437,24 +7057,6 @@ __metadata:
languageName: node
linkType: hard
-"is-accessor-descriptor@npm:^0.1.6":
- version: 0.1.6
- resolution: "is-accessor-descriptor@npm:0.1.6"
- dependencies:
- kind-of: ^3.0.2
- checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a
- languageName: node
- linkType: hard
-
-"is-accessor-descriptor@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-accessor-descriptor@npm:1.0.0"
- dependencies:
- kind-of: ^6.0.0
- checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe
- languageName: node
- linkType: hard
-
"is-arguments@npm:^1.0.4":
version: 1.1.0
resolution: "is-arguments@npm:1.1.0"
@@ -8464,6 +7066,16 @@ __metadata:
languageName: node
linkType: hard
+"is-array-buffer@npm:^3.0.4":
+ version: 3.0.4
+ resolution: "is-array-buffer@npm:3.0.4"
+ dependencies:
+ call-bind: ^1.0.2
+ get-intrinsic: ^1.2.1
+ checksum: e4e3e6ef0ff2239e75371d221f74bc3c26a03564a22efb39f6bb02609b598917ddeecef4e8c877df2a25888f247a98198959842a5e73236bc7f22cabdf6351a7
+ languageName: node
+ linkType: hard
+
"is-arrayish@npm:^0.2.1":
version: 0.2.1
resolution: "is-arrayish@npm:0.2.1"
@@ -8496,13 +7108,6 @@ __metadata:
languageName: node
linkType: hard
-"is-buffer@npm:^1.1.5":
- version: 1.1.6
- resolution: "is-buffer@npm:1.1.6"
- checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707
- languageName: node
- linkType: hard
-
"is-buffer@npm:^2.0.5, is-buffer@npm:~2.0.3":
version: 2.0.5
resolution: "is-buffer@npm:2.0.5"
@@ -8517,17 +7122,6 @@ __metadata:
languageName: node
linkType: hard
-"is-ci@npm:^2.0.0":
- version: 2.0.0
- resolution: "is-ci@npm:2.0.0"
- dependencies:
- ci-info: ^2.0.0
- bin:
- is-ci: bin.js
- checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144
- languageName: node
- linkType: hard
-
"is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0":
version: 2.11.0
resolution: "is-core-module@npm:2.11.0"
@@ -8537,21 +7131,12 @@ __metadata:
languageName: node
linkType: hard
-"is-data-descriptor@npm:^0.1.4":
- version: 0.1.4
- resolution: "is-data-descriptor@npm:0.1.4"
- dependencies:
- kind-of: ^3.0.2
- checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87
- languageName: node
- linkType: hard
-
-"is-data-descriptor@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-data-descriptor@npm:1.0.0"
+"is-data-view@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "is-data-view@npm:1.0.1"
dependencies:
- kind-of: ^6.0.0
- checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d
+ is-typed-array: ^1.1.13
+ checksum: 4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5
languageName: node
linkType: hard
@@ -8562,28 +7147,6 @@ __metadata:
languageName: node
linkType: hard
-"is-descriptor@npm:^0.1.0":
- version: 0.1.6
- resolution: "is-descriptor@npm:0.1.6"
- dependencies:
- is-accessor-descriptor: ^0.1.6
- is-data-descriptor: ^0.1.4
- kind-of: ^5.0.0
- checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6
- languageName: node
- linkType: hard
-
-"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2":
- version: 1.0.2
- resolution: "is-descriptor@npm:1.0.2"
- dependencies:
- is-accessor-descriptor: ^1.0.0
- is-data-descriptor: ^1.0.0
- kind-of: ^6.0.2
- checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a
- languageName: node
- linkType: hard
-
"is-directory@npm:^0.3.1":
version: 0.3.1
resolution: "is-directory@npm:0.3.1"
@@ -8591,31 +7154,6 @@ __metadata:
languageName: node
linkType: hard
-"is-docker@npm:^2.0.0":
- version: 2.2.1
- resolution: "is-docker@npm:2.2.1"
- bin:
- is-docker: cli.js
- checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56
- languageName: node
- linkType: hard
-
-"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1":
- version: 0.1.1
- resolution: "is-extendable@npm:0.1.1"
- checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672
- languageName: node
- linkType: hard
-
-"is-extendable@npm:^1.0.1":
- version: 1.0.1
- resolution: "is-extendable@npm:1.0.1"
- dependencies:
- is-plain-object: ^2.0.4
- checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f
- languageName: node
- linkType: hard
-
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
@@ -8623,29 +7161,6 @@ __metadata:
languageName: node
linkType: hard
-"is-finite@npm:^1.0.0":
- version: 1.1.0
- resolution: "is-finite@npm:1.1.0"
- checksum: 532b97ed3d03e04c6bd203984d9e4ba3c0c390efee492bad5d1d1cd1802a68ab27adbd3ef6382f6312bed6c8bb1bd3e325ea79a8dc8fe080ed7a06f5f97b93e7
- languageName: node
- linkType: hard
-
-"is-fn@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-fn@npm:1.0.0"
- checksum: eeea1e536716f93a92dc1a8550b2c0909fe74bb5144d0fb6d65e0d31eb9c06c30559f69d83a9351d2288cc7293b43bc074e0fab5fae19e312ff38aa0c7672827
- languageName: node
- linkType: hard
-
-"is-fullwidth-code-point@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-fullwidth-code-point@npm:1.0.0"
- dependencies:
- number-is-nan: ^1.0.0
- checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57
- languageName: node
- linkType: hard
-
"is-fullwidth-code-point@npm:^2.0.0":
version: 2.0.0
resolution: "is-fullwidth-code-point@npm:2.0.0"
@@ -8706,6 +7221,13 @@ __metadata:
languageName: node
linkType: hard
+"is-negative-zero@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "is-negative-zero@npm:2.0.3"
+ checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd
+ languageName: node
+ linkType: hard
+
"is-number-object@npm:^1.0.4":
version: 1.0.4
resolution: "is-number-object@npm:1.0.4"
@@ -8713,15 +7235,6 @@ __metadata:
languageName: node
linkType: hard
-"is-number@npm:^3.0.0":
- version: 3.0.0
- resolution: "is-number@npm:3.0.0"
- dependencies:
- kind-of: ^3.0.2
- checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9
- languageName: node
- linkType: hard
-
"is-number@npm:^7.0.0":
version: 7.0.0
resolution: "is-number@npm:7.0.0"
@@ -8757,16 +7270,7 @@ __metadata:
languageName: node
linkType: hard
-"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4":
- version: 2.0.4
- resolution: "is-plain-object@npm:2.0.4"
- dependencies:
- isobject: ^3.0.1
- checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca
- languageName: node
- linkType: hard
-
-"is-regex@npm:^1.0.4, is-regex@npm:^1.1.4":
+"is-regex@npm:^1.1.4":
version: 1.1.4
resolution: "is-regex@npm:1.1.4"
dependencies:
@@ -8776,15 +7280,6 @@ __metadata:
languageName: node
linkType: hard
-"is-regex@npm:~1.0.5":
- version: 1.0.5
- resolution: "is-regex@npm:1.0.5"
- dependencies:
- has: ^1.0.3
- checksum: 33e70e084a949ee4c57ee12f2c26e9f5e9c09bb988638b116a0381909804b8556e244060ba4b051d2b6228d54447e9eaf6219f3c5a7b6d0afe70a951feec174b
- languageName: node
- linkType: hard
-
"is-retry-allowed@npm:^1.0.0":
version: 1.2.0
resolution: "is-retry-allowed@npm:1.2.0"
@@ -8801,7 +7296,16 @@ __metadata:
languageName: node
linkType: hard
-"is-stream@npm:^1.0.0, is-stream@npm:^1.0.1":
+"is-shared-array-buffer@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "is-shared-array-buffer@npm:1.0.3"
+ dependencies:
+ call-bind: ^1.0.7
+ checksum: a4fff602c309e64ccaa83b859255a43bb011145a42d3f56f67d9268b55bc7e6d98a5981a1d834186ad3105d6739d21547083fe7259c76c0468483fc538e716d8
+ languageName: node
+ linkType: hard
+
+"is-stream@npm:^1.0.0":
version: 1.1.0
resolution: "is-stream@npm:1.1.0"
checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae
@@ -8826,6 +7330,15 @@ __metadata:
languageName: node
linkType: hard
+"is-typed-array@npm:^1.1.13":
+ version: 1.1.13
+ resolution: "is-typed-array@npm:1.1.13"
+ dependencies:
+ which-typed-array: ^1.1.14
+ checksum: 150f9ada183a61554c91e1c4290086d2c100b0dff45f60b028519be72a8db964da403c48760723bf5253979b8dffe7b544246e0e5351dcd05c5fdb1dcc1dc0f0
+ languageName: node
+ linkType: hard
+
"is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9":
version: 1.1.9
resolution: "is-typed-array@npm:1.1.9"
@@ -8853,20 +7366,6 @@ __metadata:
languageName: node
linkType: hard
-"is-url@npm:^1.2.4":
- version: 1.2.4
- resolution: "is-url@npm:1.2.4"
- checksum: 100e74b3b1feab87a43ef7653736e88d997eb7bd32e71fd3ebc413e58c1cbe56269699c776aaea84244b0567f2a7d68dfaa512a062293ed2f9fdecb394148432
- languageName: node
- linkType: hard
-
-"is-utf8@npm:^0.2.0":
- version: 0.2.1
- resolution: "is-utf8@npm:0.2.1"
- checksum: 167ccd2be869fc228cc62c1a28df4b78c6b5485d15a29027d3b5dceb09b383e86a3522008b56dcac14b592b22f0a224388718c2505027a994fd8471465de54b3
- languageName: node
- linkType: hard
-
"is-weakref@npm:^1.0.2":
version: 1.0.2
resolution: "is-weakref@npm:1.0.2"
@@ -8876,22 +7375,6 @@ __metadata:
languageName: node
linkType: hard
-"is-windows@npm:^1.0.2":
- version: 1.0.2
- resolution: "is-windows@npm:1.0.2"
- checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7
- languageName: node
- linkType: hard
-
-"is-wsl@npm:^2.1.1":
- version: 2.2.0
- resolution: "is-wsl@npm:2.2.0"
- dependencies:
- is-docker: ^2.0.0
- checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8
- languageName: node
- linkType: hard
-
"isarray@npm:0.0.1":
version: 0.0.1
resolution: "isarray@npm:0.0.1"
@@ -8899,13 +7382,20 @@ __metadata:
languageName: node
linkType: hard
-"isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0":
+"isarray@npm:^1.0.0, isarray@npm:~1.0.0":
version: 1.0.0
resolution: "isarray@npm:1.0.0"
checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab
languageName: node
linkType: hard
+"isarray@npm:^2.0.5":
+ version: 2.0.5
+ resolution: "isarray@npm:2.0.5"
+ checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a
+ languageName: node
+ linkType: hard
+
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
@@ -8913,22 +7403,6 @@ __metadata:
languageName: node
linkType: hard
-"isobject@npm:^2.0.0":
- version: 2.1.0
- resolution: "isobject@npm:2.1.0"
- dependencies:
- isarray: 1.0.0
- checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f
- languageName: node
- linkType: hard
-
-"isobject@npm:^3.0.0, isobject@npm:^3.0.1":
- version: 3.0.1
- resolution: "isobject@npm:3.0.1"
- checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703
- languageName: node
- linkType: hard
-
"isomorphic-unfetch@npm:^3.0.0":
version: 3.1.0
resolution: "isomorphic-unfetch@npm:3.1.0"
@@ -8939,6 +7413,15 @@ __metadata:
languageName: node
linkType: hard
+"isows@npm:1.0.3":
+ version: 1.0.3
+ resolution: "isows@npm:1.0.3"
+ peerDependencies:
+ ws: "*"
+ checksum: 9cacd5cf59f67deb51e825580cd445ab1725ecb05a67c704050383fb772856f3cd5e7da8ad08f5a3bd2823680d77d099459d0c6a7037972a74d6429af61af440
+ languageName: node
+ linkType: hard
+
"isstream@npm:~0.1.2":
version: 0.1.2
resolution: "isstream@npm:0.1.2"
@@ -8956,6 +7439,19 @@ __metadata:
languageName: node
linkType: hard
+"jackspeak@npm:^2.3.6":
+ version: 2.3.6
+ resolution: "jackspeak@npm:2.3.6"
+ dependencies:
+ "@isaacs/cliui": ^8.0.2
+ "@pkgjs/parseargs": ^0.11.0
+ dependenciesMeta:
+ "@pkgjs/parseargs":
+ optional: true
+ checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54
+ languageName: node
+ linkType: hard
+
"js-cookie@npm:^2.2.1":
version: 2.2.1
resolution: "js-cookie@npm:2.2.1"
@@ -8984,13 +7480,6 @@ __metadata:
languageName: node
linkType: hard
-"js-sha3@npm:0.5.7, js-sha3@npm:^0.5.7":
- version: 0.5.7
- resolution: "js-sha3@npm:0.5.7"
- checksum: 973a28ea4b26cc7f12d2ab24f796e24ee4a71eef45a6634a052f6eb38cf8b2333db798e896e6e094ea6fa4dfe8e42a2a7942b425cf40da3f866623fd05bb91ea
- languageName: node
- linkType: hard
-
"js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0":
version: 0.8.0
resolution: "js-sha3@npm:0.8.0"
@@ -8998,6 +7487,13 @@ __metadata:
languageName: node
linkType: hard
+"js-sha3@npm:^0.5.7":
+ version: 0.5.7
+ resolution: "js-sha3@npm:0.5.7"
+ checksum: 973a28ea4b26cc7f12d2ab24f796e24ee4a71eef45a6634a052f6eb38cf8b2333db798e896e6e094ea6fa4dfe8e42a2a7942b425cf40da3f866623fd05bb91ea
+ languageName: node
+ linkType: hard
+
"js-sha512@npm:^0.8.0":
version: 0.8.0
resolution: "js-sha512@npm:0.8.0"
@@ -9005,20 +7501,13 @@ __metadata:
languageName: node
linkType: hard
-"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
+"js-tokens@npm:^4.0.0":
version: 4.0.0
resolution: "js-tokens@npm:4.0.0"
checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78
languageName: node
linkType: hard
-"js-tokens@npm:^3.0.2":
- version: 3.0.2
- resolution: "js-tokens@npm:3.0.2"
- checksum: ff24cf90e6e4ac446eba56e604781c1aaf3bdaf9b13a00596a0ebd972fa3b25dc83c0f0f67289c33252abb4111e0d14e952a5d9ffb61f5c22532d555ebd8d8a9
- languageName: node
- linkType: hard
-
"js-yaml@npm:3.13.1":
version: 3.13.1
resolution: "js-yaml@npm:3.13.1"
@@ -9061,31 +7550,6 @@ __metadata:
languageName: node
linkType: hard
-"jsesc@npm:^1.3.0":
- version: 1.3.0
- resolution: "jsesc@npm:1.3.0"
- bin:
- jsesc: bin/jsesc
- checksum: 9384cc72bf8ef7f2eb75fea64176b8b0c1c5e77604854c72cb4670b7072e112e3baaa69ef134be98cb078834a7812b0bfe676ad441ccd749a59427f5ed2127f1
- languageName: node
- linkType: hard
-
-"jsesc@npm:~0.5.0":
- version: 0.5.0
- resolution: "jsesc@npm:0.5.0"
- bin:
- jsesc: bin/jsesc
- checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17
- languageName: node
- linkType: hard
-
-"json-buffer@npm:3.0.0":
- version: 3.0.0
- resolution: "json-buffer@npm:3.0.0"
- checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa
- languageName: node
- linkType: hard
-
"json-buffer@npm:3.0.1":
version: 3.0.1
resolution: "json-buffer@npm:3.0.1"
@@ -9100,33 +7564,10 @@ __metadata:
languageName: node
linkType: hard
-"json-rpc-engine@npm:^3.4.0, json-rpc-engine@npm:^3.6.0":
- version: 3.8.0
- resolution: "json-rpc-engine@npm:3.8.0"
- dependencies:
- async: ^2.0.1
- babel-preset-env: ^1.7.0
- babelify: ^7.3.0
- json-rpc-error: ^2.0.0
- promise-to-callback: ^1.0.0
- safe-event-emitter: ^1.0.1
- checksum: 4a02ddda196b68717cdcdf9bc8eac91f956b717431daf1f317e016d564bd5b8974e8a66f75fd1f069d63b8e944128020ec7c371f28cf29ac0951d3338b2f667c
- languageName: node
- linkType: hard
-
-"json-rpc-error@npm:^2.0.0":
- version: 2.0.0
- resolution: "json-rpc-error@npm:2.0.0"
- dependencies:
- inherits: ^2.0.1
- checksum: bbfb1ff82d0605b4dfd4ac6d093e863a8f623e0e83a098ccab5711a08d2ae09ea603260d4573a524e596701e64733690a5c31901e99daebe05b09053d8702d0c
- languageName: node
- linkType: hard
-
-"json-rpc-random-id@npm:^1.0.0":
- version: 1.0.1
- resolution: "json-rpc-random-id@npm:1.0.1"
- checksum: fcd2e884193a129ace4002bd65a86e9cdb206733b4693baea77bd8b372cf8de3043fbea27716a2c9a716581a908ca8d978d9dfec4847eb2cf77edb4cf4b2252c
+"json-parse-even-better-errors@npm:^2.3.0":
+ version: 2.3.1
+ resolution: "json-parse-even-better-errors@npm:2.3.1"
+ checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f
languageName: node
linkType: hard
@@ -9158,15 +7599,6 @@ __metadata:
languageName: node
linkType: hard
-"json-stable-stringify@npm:^1.0.1":
- version: 1.0.1
- resolution: "json-stable-stringify@npm:1.0.1"
- dependencies:
- jsonify: ~0.0.0
- checksum: 65d6cbf0fca72a4136999f65f4401cf39a129f7aeff0fdd987ac3d3423a2113659294045fb8377e6e20d865cac32b1b8d70f3d87346c9786adcee60661d96ca5
- languageName: node
- linkType: hard
-
"json-stringify-safe@npm:~5.0.1":
version: 5.0.1
resolution: "json-stringify-safe@npm:5.0.1"
@@ -9174,15 +7606,6 @@ __metadata:
languageName: node
linkType: hard
-"json5@npm:^0.5.1":
- version: 0.5.1
- resolution: "json5@npm:0.5.1"
- bin:
- json5: lib/cli.js
- checksum: 9b85bf06955b23eaa4b7328aa8892e3887e81ca731dd27af04a5f5f1458fbc5e1de57a24442e3272f8a888dd1abe1cb68eb693324035f6b3aeba4fcab7667d62
- languageName: node
- linkType: hard
-
"json5@npm:^1.0.1":
version: 1.0.1
resolution: "json5@npm:1.0.1"
@@ -9231,13 +7654,6 @@ __metadata:
languageName: node
linkType: hard
-"jsonify@npm:~0.0.0":
- version: 0.0.0
- resolution: "jsonify@npm:0.0.0"
- checksum: d8d4ed476c116e6987a460dcb82f22284686caae9f498ac87b0502c1765ac1522f4f450a4cad4cc368d202fd3b27a3860735140a82867fc6d558f5f199c38bce
- languageName: node
- linkType: hard
-
"jsonschema@npm:^1.2.4":
version: 1.4.0
resolution: "jsonschema@npm:1.4.0"
@@ -9245,6 +7661,13 @@ __metadata:
languageName: node
linkType: hard
+"jsonschema@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "jsonschema@npm:1.4.1"
+ checksum: 1ef02a6cd9bc32241ec86bbf1300bdbc3b5f2d8df6eb795517cf7d1cd9909e7beba1e54fdf73990fd66be98a182bda9add9607296b0cb00b1348212988e424b2
+ languageName: node
+ linkType: hard
+
"jsprim@npm:^1.2.2":
version: 1.4.1
resolution: "jsprim@npm:1.4.1"
@@ -9257,17 +7680,6 @@ __metadata:
languageName: node
linkType: hard
-"keccak@npm:3.0.1":
- version: 3.0.1
- resolution: "keccak@npm:3.0.1"
- dependencies:
- node-addon-api: ^2.0.0
- node-gyp: latest
- node-gyp-build: ^4.2.0
- checksum: 1de1b62fbb3e035ee186232b11f154bd5c2c12a2d910bc8ec313dab412b6f39ddc51d3a105618dd8de752875da0ead21abb0eb1d4e7d7b17771a4acbb7159390
- languageName: node
- linkType: hard
-
"keccak@npm:3.0.2, keccak@npm:^3.0.0, keccak@npm:^3.0.2":
version: 3.0.2
resolution: "keccak@npm:3.0.2"
@@ -9289,56 +7701,13 @@ __metadata:
languageName: node
linkType: hard
-"keyv@npm:^3.0.0":
- version: 3.1.0
- resolution: "keyv@npm:3.1.0"
- dependencies:
- json-buffer: 3.0.0
- checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903
- languageName: node
- linkType: hard
-
-"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0":
- version: 3.2.2
- resolution: "kind-of@npm:3.2.2"
- dependencies:
- is-buffer: ^1.1.5
- checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386
- languageName: node
- linkType: hard
-
-"kind-of@npm:^4.0.0":
- version: 4.0.0
- resolution: "kind-of@npm:4.0.0"
- dependencies:
- is-buffer: ^1.1.5
- checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f
- languageName: node
- linkType: hard
-
-"kind-of@npm:^5.0.0":
- version: 5.1.0
- resolution: "kind-of@npm:5.1.0"
- checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab
- languageName: node
- linkType: hard
-
-"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2":
+"kind-of@npm:^6.0.2":
version: 6.0.3
resolution: "kind-of@npm:6.0.3"
checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b
languageName: node
linkType: hard
-"klaw-sync@npm:^6.0.0":
- version: 6.0.0
- resolution: "klaw-sync@npm:6.0.0"
- dependencies:
- graceful-fs: ^4.1.11
- checksum: 0da397f8961313c3ef8f79fb63af9002cde5a8fb2aeb1a37351feff0dd6006129c790400c3f5c3b4e757bedcabb13d21ec0a5eaef5a593d59515d4f2c291e475
- languageName: node
- linkType: hard
-
"klaw@npm:^1.0.0":
version: 1.3.1
resolution: "klaw@npm:1.3.1"
@@ -9351,15 +7720,6 @@ __metadata:
languageName: node
linkType: hard
-"lcid@npm:^1.0.0":
- version: 1.0.0
- resolution: "lcid@npm:1.0.0"
- dependencies:
- invert-kv: ^1.0.0
- checksum: e8c7a4db07663068c5c44b650938a2bc41aa992037eebb69376214320f202c1250e70b50c32f939e28345fd30c2d35b8e8cd9a19d5932c398246a864ce54843d
- languageName: node
- linkType: hard
-
"level-codec@npm:^9.0.0":
version: 9.0.2
resolution: "level-codec@npm:9.0.2"
@@ -9414,19 +7774,8 @@ __metadata:
version: 1.0.5
resolution: "level-errors@npm:1.0.5"
dependencies:
- errno: ~0.1.1
- checksum: a62df2a24987c0100855ec03f03655ddc6170b33a83987a53858ba0a7dbe125b4b5382e01068a1dc899ccf7f9d12b824702da15488bd06b4b3ee7a1e4232cb0a
- languageName: node
- linkType: hard
-
-"level-iterator-stream@npm:^2.0.3":
- version: 2.0.3
- resolution: "level-iterator-stream@npm:2.0.3"
- dependencies:
- inherits: ^2.0.1
- readable-stream: ^2.0.5
- xtend: ^4.0.0
- checksum: dd4211798d032a06ebc3e9c5a3a969b003cb15f1fe6398d9c50c87dc8b0bf8b07197cada253fd7f8c4a933f3c86e12bb041df1561c89b749ac4b991d6e68b17f
+ errno: ~0.1.1
+ checksum: a62df2a24987c0100855ec03f03655ddc6170b33a83987a53858ba0a7dbe125b4b5382e01068a1dc899ccf7f9d12b824702da15488bd06b4b3ee7a1e4232cb0a
languageName: node
linkType: hard
@@ -9442,17 +7791,6 @@ __metadata:
languageName: node
linkType: hard
-"level-iterator-stream@npm:~3.0.0":
- version: 3.0.1
- resolution: "level-iterator-stream@npm:3.0.1"
- dependencies:
- inherits: ^2.0.1
- readable-stream: ^2.3.6
- xtend: ^4.0.0
- checksum: f3348316907c70163ea15319ef7e28c21c6b4b948616e11dcbbb8e3dab9ec5b39f7bf13e0d53f7d23c69641b7a2985a4911c5c9a03bd57a07f1af469aba6e3a8
- languageName: node
- linkType: hard
-
"level-iterator-stream@npm:~4.0.0":
version: 4.0.2
resolution: "level-iterator-stream@npm:4.0.2"
@@ -9464,16 +7802,6 @@ __metadata:
languageName: node
linkType: hard
-"level-mem@npm:^3.0.1":
- version: 3.0.1
- resolution: "level-mem@npm:3.0.1"
- dependencies:
- level-packager: ~4.0.0
- memdown: ~3.0.0
- checksum: e4c680922afc3c8cd4502d761ab610c8aa7bcacde2550a0a463e1db069eeb55b6b7bec0bb7fda564cec82422944776f9909fe101b0d7746ad8f4f7446ec2a5cd
- languageName: node
- linkType: hard
-
"level-mem@npm:^5.0.1":
version: 5.0.1
resolution: "level-mem@npm:5.0.1"
@@ -9494,43 +7822,6 @@ __metadata:
languageName: node
linkType: hard
-"level-packager@npm:~4.0.0":
- version: 4.0.1
- resolution: "level-packager@npm:4.0.1"
- dependencies:
- encoding-down: ~5.0.0
- levelup: ^3.0.0
- checksum: af33054cfdf1f3cb409941c2e6a67190c0437f8b57a518fa1d40d3f9fd75edbb72c2c17595a52b10030fe2d64c8ef474ddb570f925d88402c94cfc95263865cb
- languageName: node
- linkType: hard
-
-"level-post@npm:^1.0.7":
- version: 1.0.7
- resolution: "level-post@npm:1.0.7"
- dependencies:
- ltgt: ^2.1.2
- checksum: 27239cfebe2004036d7ed0ace860d03f829f099de62baf727cce53bd99cb06bfc4a202fa7cb828847fa01c421bab13d9d3e79c9554f5cffff681541dda575218
- languageName: node
- linkType: hard
-
-"level-sublevel@npm:6.6.4":
- version: 6.6.4
- resolution: "level-sublevel@npm:6.6.4"
- dependencies:
- bytewise: ~1.1.0
- level-codec: ^9.0.0
- level-errors: ^2.0.0
- level-iterator-stream: ^2.0.3
- ltgt: ~2.1.1
- pull-defer: ^0.2.2
- pull-level: ^2.0.3
- pull-stream: ^3.6.8
- typewiselite: ~1.0.0
- xtend: ~4.0.0
- checksum: 8370e6fbf67bf08daa23de07699d3d2ccf6a349a28db4025a890d4c07857811808372fdf5029c4afedf24e2ff828be6bb7cd9fd0b676090daba38981b2e75cff
- languageName: node
- linkType: hard
-
"level-supports@npm:^2.0.1":
version: 2.1.0
resolution: "level-supports@npm:2.1.0"
@@ -9574,17 +7865,6 @@ __metadata:
languageName: node
linkType: hard
-"level-ws@npm:^1.0.0":
- version: 1.0.0
- resolution: "level-ws@npm:1.0.0"
- dependencies:
- inherits: ^2.0.3
- readable-stream: ^2.2.8
- xtend: ^4.0.1
- checksum: 752fd0f89eb1ccf811c09de24ca8987437ea84f88e672d0037324fb5d71c5bc022c25ba64d6a00fca33beec48a81e3cd1ef99c2f9fff267b3a4f2233939fad35
- languageName: node
- linkType: hard
-
"level-ws@npm:^2.0.0":
version: 2.0.0
resolution: "level-ws@npm:2.0.0"
@@ -9596,16 +7876,6 @@ __metadata:
languageName: node
linkType: hard
-"level@npm:^8.0.0":
- version: 8.0.0
- resolution: "level@npm:8.0.0"
- dependencies:
- browser-level: ^1.0.1
- classic-level: ^1.2.0
- checksum: 13eb25bd71bfdca6cd714d1233adf9da97de9a8a4bf9f28d62a390b5c96d0250abaf983eb90eb8c4e89c7a985bb330750683d106f12670e5ea8fba1d7e608a1f
- languageName: node
- linkType: hard
-
"leveldown@npm:6.1.0":
version: 6.1.0
resolution: "leveldown@npm:6.1.0"
@@ -9618,18 +7888,6 @@ __metadata:
languageName: node
linkType: hard
-"levelup@npm:3.1.1, levelup@npm:^3.0.0":
- version: 3.1.1
- resolution: "levelup@npm:3.1.1"
- dependencies:
- deferred-leveldown: ~4.0.0
- level-errors: ~2.0.0
- level-iterator-stream: ~3.0.0
- xtend: ~4.0.0
- checksum: cddcac2cf5eddcf85ade62efd21f11326cd83559619db6a78696725eac5c5cd16f62d8d49f6594fd3097d9329a1d04847f6d7df23bf4d69f18c16e49afd4a416
- languageName: node
- linkType: hard
-
"levelup@npm:^1.2.1":
version: 1.3.9
resolution: "levelup@npm:1.3.9"
@@ -9678,16 +7936,10 @@ __metadata:
languageName: node
linkType: hard
-"load-json-file@npm:^1.0.0":
- version: 1.1.0
- resolution: "load-json-file@npm:1.1.0"
- dependencies:
- graceful-fs: ^4.1.2
- parse-json: ^2.2.0
- pify: ^2.0.0
- pinkie-promise: ^2.0.0
- strip-bom: ^2.0.0
- checksum: 0e4e4f380d897e13aa236246a917527ea5a14e4fc34d49e01ce4e7e2a1e08e2740ee463a03fb021c04f594f29a178f4adb994087549d7c1c5315fcd29bf9934b
+"lines-and-columns@npm:^1.1.6":
+ version: 1.2.4
+ resolution: "lines-and-columns@npm:1.2.4"
+ checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5
languageName: node
linkType: hard
@@ -9720,13 +7972,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.assign@npm:^4.0.3, lodash.assign@npm:^4.0.6":
- version: 4.2.0
- resolution: "lodash.assign@npm:4.2.0"
- checksum: 75bbc6733c9f577c448031b4051f990f068802708891f94be9d4c2faffd6a9ec67a2c49671dafc908a068d35687765464853282842b4560b662e6c903d11cc90
- languageName: node
- linkType: hard
-
"lodash.camelcase@npm:^4.3.0":
version: 4.3.0
resolution: "lodash.camelcase@npm:4.3.0"
@@ -9734,6 +7979,20 @@ __metadata:
languageName: node
linkType: hard
+"lodash.clonedeep@npm:^4.5.0":
+ version: 4.5.0
+ resolution: "lodash.clonedeep@npm:4.5.0"
+ checksum: 92c46f094b064e876a23c97f57f81fbffd5d760bf2d8a1c61d85db6d1e488c66b0384c943abee4f6af7debf5ad4e4282e74ff83177c9e63d8ff081a4837c3489
+ languageName: node
+ linkType: hard
+
+"lodash.isequal@npm:^4.5.0":
+ version: 4.5.0
+ resolution: "lodash.isequal@npm:4.5.0"
+ checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644
+ languageName: node
+ linkType: hard
+
"lodash.merge@npm:^4.6.2":
version: 4.6.2
resolution: "lodash.merge@npm:4.6.2"
@@ -9755,14 +8014,7 @@ __metadata:
languageName: node
linkType: hard
-"lodash@npm:4.17.20":
- version: 4.17.20
- resolution: "lodash@npm:4.17.20"
- checksum: b31afa09739b7292a88ec49ffdb2fcaeb41f690def010f7a067eeedffece32da6b6847bfe4d38a77e6f41778b9b2bca75eeab91209936518173271f0b69376ea
- languageName: node
- linkType: hard
-
-"lodash@npm:^4.17.11, lodash@npm:^4.17.12, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.4":
+"lodash@npm:^4.17.11, lodash@npm:^4.17.12, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7
@@ -9795,41 +8047,16 @@ __metadata:
languageName: node
linkType: hard
-"looper@npm:^2.0.0":
- version: 2.0.0
- resolution: "looper@npm:2.0.0"
- checksum: ee5124d54c97cd9e778e602e297ed37dd6405b7c36830f90bb1aaa6adb8d64f2a228aa341459e6bf2db9a8d7dc9eb8c16ec9c6bffeab1c47f91efe213858ce36
- languageName: node
- linkType: hard
-
-"looper@npm:^3.0.0":
- version: 3.0.0
- resolution: "looper@npm:3.0.0"
- checksum: 2ec29b4161e95d33f2257867b0b9ab7f2fef5425582362c966f8f9041a2a6032466b8be159af99323655aca9e6fe1c9da086cf208f6346bd97c9f83ab77ccce0
- languageName: node
- linkType: hard
-
-"loose-envify@npm:^1.0.0":
- version: 1.4.0
- resolution: "loose-envify@npm:1.4.0"
- dependencies:
- js-tokens: ^3.0.0 || ^4.0.0
- bin:
- loose-envify: cli.js
- checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4
- languageName: node
- linkType: hard
-
-"loupe@npm:^2.3.1":
- version: 2.3.4
- resolution: "loupe@npm:2.3.4"
+"loupe@npm:^2.3.6":
+ version: 2.3.7
+ resolution: "loupe@npm:2.3.7"
dependencies:
- get-func-name: ^2.0.0
- checksum: 5af91db61aa18530f1749a64735ee194ac263e65e9f4d1562bf3036c591f1baa948289c193e0e34c7b5e2c1b75d3c1dc4fce87f5edb3cee10b0c0df46bc9ffb3
+ get-func-name: ^2.0.1
+ checksum: 96c058ec7167598e238bb7fb9def2f9339215e97d6685d9c1e3e4bdb33d14600e11fe7a812cf0c003dfb73ca2df374f146280b2287cae9e8d989e9d7a69a203b
languageName: node
linkType: hard
-"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1":
+"lowercase-keys@npm:^1.0.0":
version: 1.0.1
resolution: "lowercase-keys@npm:1.0.1"
checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147
@@ -9850,21 +8077,10 @@ __metadata:
languageName: node
linkType: hard
-"lru-cache@npm:5.1.1, lru-cache@npm:^5.1.1":
- version: 5.1.1
- resolution: "lru-cache@npm:5.1.1"
- dependencies:
- yallist: ^3.0.2
- checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb
- languageName: node
- linkType: hard
-
-"lru-cache@npm:^3.2.0":
- version: 3.2.0
- resolution: "lru-cache@npm:3.2.0"
- dependencies:
- pseudomap: ^1.0.1
- checksum: 8e5fb3d7a83401165b8dc9fe16d74828df5754aaeda1061e4f2ea1d0e984b9071a6487f1c3f6f034f935429629f94366abbfb753827ab2977a56b3f5c276e736
+"lru-cache@npm:^10.0.0, lru-cache@npm:^10.2.0":
+ version: 10.2.0
+ resolution: "lru-cache@npm:10.2.0"
+ checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db
languageName: node
linkType: hard
@@ -9891,20 +8107,13 @@ __metadata:
languageName: node
linkType: hard
-"ltgt@npm:^2.1.2, ltgt@npm:~2.2.0":
+"ltgt@npm:~2.2.0":
version: 2.2.1
resolution: "ltgt@npm:2.2.1"
checksum: 7e3874296f7538bc8087b428ac4208008d7b76916354b34a08818ca7c83958c1df10ec427eeeaad895f6b81e41e24745b18d30f89abcc21d228b94f6961d50a2
languageName: node
linkType: hard
-"ltgt@npm:~2.1.1":
- version: 2.1.3
- resolution: "ltgt@npm:2.1.3"
- checksum: b09281f6aeccb34eda52588d21f9116f6e5b7ae1c79f6180bba06edcdcba50de9c6d199be7f817a7ae59819064e3ca7d066fe0bcc67e2458006e4e45cd05cb11
- languageName: node
- linkType: hard
-
"make-error@npm:^1.1.1":
version: 1.3.6
resolution: "make-error@npm:1.3.6"
@@ -9936,33 +8145,12 @@ __metadata:
languageName: node
linkType: hard
-"map-cache@npm:^0.2.2":
- version: 0.2.2
- resolution: "map-cache@npm:0.2.2"
- checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969
- languageName: node
- linkType: hard
-
-"map-visit@npm:^1.0.0":
- version: 1.0.0
- resolution: "map-visit@npm:1.0.0"
+"markdown-table@npm:2.0.0":
+ version: 2.0.0
+ resolution: "markdown-table@npm:2.0.0"
dependencies:
- object-visit: ^1.0.0
- checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a
- languageName: node
- linkType: hard
-
-"markdown-table@npm:^1.1.3":
- version: 1.1.3
- resolution: "markdown-table@npm:1.1.3"
- checksum: 292e8c956ae833c2ccb0a55cd8d87980cd657ab11cd9ff63c3fcc4d3a518d3b3882ba07410b8f477ba9e30b3f70658677e4e8acf61816dd6cfdd1f6293130664
- languageName: node
- linkType: hard
-
-"mcl-wasm@npm:^0.7.1":
- version: 0.7.6
- resolution: "mcl-wasm@npm:0.7.6"
- checksum: 93d21906a030f146648f3eba57765c5189aae354471da228790216688683fcdf947b60fbfacf68823f62138c16ee0abfa4516851c63813fab032396a1c92729b
+ repeat-string: ^1.0.0
+ checksum: 9bb634a9300016cbb41216c1eab44c74b6b7083ac07872e296f900a29449cf0e260ece03fa10c3e9784ab94c61664d1d147da0315f95e1336e2bdcc025615c90
languageName: node
linkType: hard
@@ -10012,31 +8200,6 @@ __metadata:
languageName: node
linkType: hard
-"memdown@npm:~3.0.0":
- version: 3.0.0
- resolution: "memdown@npm:3.0.0"
- dependencies:
- abstract-leveldown: ~5.0.0
- functional-red-black-tree: ~1.0.1
- immediate: ~3.2.3
- inherits: ~2.0.1
- ltgt: ~2.2.0
- safe-buffer: ~5.1.1
- checksum: 4446fdf7198dcdbae764324200526f41738c9f2a32decb59b5a4dbb1bdfc72e2fc046e9bbe016469ab8a0a52e5d5c8b36bf3829e90dd4674a5f4c961e059d4de
- languageName: node
- linkType: hard
-
-"memory-level@npm:^1.0.0":
- version: 1.0.0
- resolution: "memory-level@npm:1.0.0"
- dependencies:
- abstract-level: ^1.0.0
- functional-red-black-tree: ^1.0.1
- module-error: ^1.0.1
- checksum: 80b1b7aedaf936e754adbcd7b9303018c3684fb32f9992fd967c448f145d177f16c724fbba9ed3c3590a9475fd563151eae664d69b83d2ad48714852e9fc5c72
- languageName: node
- linkType: hard
-
"memorystream@npm:^0.3.1":
version: 0.3.1
resolution: "memorystream@npm:0.3.1"
@@ -10058,22 +8221,7 @@ __metadata:
languageName: node
linkType: hard
-"merkle-patricia-tree@npm:3.0.0":
- version: 3.0.0
- resolution: "merkle-patricia-tree@npm:3.0.0"
- dependencies:
- async: ^2.6.1
- ethereumjs-util: ^5.2.0
- level-mem: ^3.0.1
- level-ws: ^1.0.0
- readable-stream: ^3.0.6
- rlp: ^2.0.0
- semaphore: ">=1.0.1"
- checksum: a500f00e7954eea132309310c48ee2635e9a190e0a775811236a0dc375465ff7e01b230ac0ee213ca13bb995399066719eedb4218e0f47596e9cab79cebc575e
- languageName: node
- linkType: hard
-
-"merkle-patricia-tree@npm:^2.1.2, merkle-patricia-tree@npm:^2.3.2":
+"merkle-patricia-tree@npm:^2.1.2":
version: 2.3.2
resolution: "merkle-patricia-tree@npm:2.3.2"
dependencies:
@@ -10117,28 +8265,7 @@ __metadata:
languageName: node
linkType: hard
-"micromatch@npm:^3.1.4":
- version: 3.1.10
- resolution: "micromatch@npm:3.1.10"
- dependencies:
- arr-diff: ^4.0.0
- array-unique: ^0.3.2
- braces: ^2.3.1
- define-property: ^2.0.2
- extend-shallow: ^3.0.2
- extglob: ^2.0.4
- fragment-cache: ^0.2.1
- kind-of: ^6.0.2
- nanomatch: ^1.2.9
- object.pick: ^1.3.0
- regex-not: ^1.0.0
- snapdragon: ^0.8.1
- to-regex: ^3.0.2
- checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc
- languageName: node
- linkType: hard
-
-"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4":
+"micromatch@npm:^4.0.4":
version: 4.0.5
resolution: "micromatch@npm:4.0.5"
dependencies:
@@ -10192,7 +8319,7 @@ __metadata:
languageName: node
linkType: hard
-"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1":
+"mimic-response@npm:^1.0.0":
version: 1.0.1
resolution: "mimic-response@npm:1.0.1"
checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823
@@ -10265,13 +8392,29 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:~1.2.5":
+"minimatch@npm:^9.0.1":
+ version: 9.0.4
+ resolution: "minimatch@npm:9.0.4"
+ dependencies:
+ brace-expansion: ^2.0.1
+ checksum: cf717f597ec3eed7dabc33153482a2e8d49f4fd3c26e58fd9c71a94c5029a0838728841b93f46bf1263b65a8010e2ee800d0dc9b004ab8ba8b6d1ec07cc115b5
+ languageName: node
+ linkType: hard
+
+"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
version: 1.2.6
resolution: "minimist@npm:1.2.6"
checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb
languageName: node
linkType: hard
+"minimist@npm:^1.2.7":
+ version: 1.2.8
+ resolution: "minimist@npm:1.2.8"
+ checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0
+ languageName: node
+ linkType: hard
+
"minipass-collect@npm:^1.0.2":
version: 1.0.2
resolution: "minipass-collect@npm:1.0.2"
@@ -10349,6 +8492,13 @@ __metadata:
languageName: node
linkType: hard
+"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.4":
+ version: 7.0.4
+ resolution: "minipass@npm:7.0.4"
+ checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21
+ languageName: node
+ linkType: hard
+
"minizlib@npm:^1.2.1":
version: 1.3.3
resolution: "minizlib@npm:1.3.3"
@@ -10368,16 +8518,6 @@ __metadata:
languageName: node
linkType: hard
-"mixin-deep@npm:^1.2.0":
- version: 1.3.2
- resolution: "mixin-deep@npm:1.3.2"
- dependencies:
- for-in: ^1.0.2
- is-extendable: ^1.0.1
- checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d
- languageName: node
- linkType: hard
-
"mkdirp-promise@npm:^5.0.1":
version: 5.0.1
resolution: "mkdirp-promise@npm:5.0.1"
@@ -10484,41 +8624,6 @@ __metadata:
languageName: node
linkType: hard
-"mocha@npm:^7.1.1":
- version: 7.2.0
- resolution: "mocha@npm:7.2.0"
- dependencies:
- ansi-colors: 3.2.3
- browser-stdout: 1.3.1
- chokidar: 3.3.0
- debug: 3.2.6
- diff: 3.5.0
- escape-string-regexp: 1.0.5
- find-up: 3.0.0
- glob: 7.1.3
- growl: 1.10.5
- he: 1.2.0
- js-yaml: 3.13.1
- log-symbols: 3.0.0
- minimatch: 3.0.4
- mkdirp: 0.5.5
- ms: 2.1.1
- node-environment-flags: 1.0.6
- object.assign: 4.1.0
- strip-json-comments: 2.0.1
- supports-color: 6.0.0
- which: 1.3.1
- wide-align: 1.1.3
- yargs: 13.3.2
- yargs-parser: 13.1.2
- yargs-unparser: 1.6.0
- bin:
- _mocha: bin/_mocha
- mocha: bin/mocha
- checksum: d098484fe1b165bb964fdbf6b88b256c71fead47575ca7c5bcf8ed07db0dcff41905f6d2f0a05111a0441efaef9d09241a8cc1ddf7961056b28984ec63ba2874
- languageName: node
- linkType: hard
-
"mock-fs@npm:^4.1.0":
version: 4.13.0
resolution: "mock-fs@npm:4.13.0"
@@ -10526,7 +8631,7 @@ __metadata:
languageName: node
linkType: hard
-"module-error@npm:^1.0.1, module-error@npm:^1.0.2":
+"module-error@npm:^1.0.1":
version: 1.0.2
resolution: "module-error@npm:1.0.2"
checksum: 5d653e35bd55b3e95f8aee2cdac108082ea892e71b8f651be92cde43e4ee86abee4fa8bd7fc3fe5e68b63926d42f63c54cd17b87a560c31f18739295575a3962
@@ -10641,25 +8746,6 @@ __metadata:
languageName: node
linkType: hard
-"nanomatch@npm:^1.2.9":
- version: 1.2.13
- resolution: "nanomatch@npm:1.2.13"
- dependencies:
- arr-diff: ^4.0.0
- array-unique: ^0.3.2
- define-property: ^2.0.2
- extend-shallow: ^3.0.2
- fragment-cache: ^0.2.1
- is-windows: ^1.0.2
- kind-of: ^6.0.2
- object.pick: ^1.3.0
- regex-not: ^1.0.0
- snapdragon: ^0.8.1
- to-regex: ^3.0.1
- checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8
- languageName: node
- linkType: hard
-
"napi-macros@npm:~2.0.0":
version: 2.0.0
resolution: "napi-macros@npm:2.0.0"
@@ -10737,7 +8823,7 @@ __metadata:
languageName: node
linkType: hard
-"node-fetch@npm:2.6.7, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.7":
+"node-fetch@npm:2.6.7, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1":
version: 2.6.7
resolution: "node-fetch@npm:2.6.7"
dependencies:
@@ -10751,16 +8837,6 @@ __metadata:
languageName: node
linkType: hard
-"node-fetch@npm:~1.7.1":
- version: 1.7.3
- resolution: "node-fetch@npm:1.7.3"
- dependencies:
- encoding: ^0.1.11
- is-stream: ^1.0.1
- checksum: 3bb0528c05d541316ebe52770d71ee25a6dce334df4231fd55df41a644143e07f068637488c18a5b0c43f05041dbd3346752f9e19b50df50569a802484544d5b
- languageName: node
- linkType: hard
-
"node-gyp-build@npm:4.4.0":
version: 4.4.0
resolution: "node-gyp-build@npm:4.4.0"
@@ -10803,17 +8879,10 @@ __metadata:
languageName: node
linkType: hard
-"nofilter@npm:^1.0.4":
- version: 1.0.4
- resolution: "nofilter@npm:1.0.4"
- checksum: 54d864f745de5c3312994e880cf2d4f55e34830d6adc8275dce3731507ca380d21040336e4a277a4901551c07f04c452fbeffd57fad1dc8f68a2943eaf894a04
- languageName: node
- linkType: hard
-
-"nofilter@npm:^3.0.2":
- version: 3.0.3
- resolution: "nofilter@npm:3.0.3"
- checksum: c13974cf064179f5574dc4ff2c4e26ff3dedf06309715ea888e92ab2947e2a1068f22b9597a2b79813d2d1958b63f65548b9ad4dbb7d9ab85c05d01a97d40333
+"nofilter@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "nofilter@npm:3.1.0"
+ checksum: 58aa85a5b4b35cbb6e42de8a8591c5e338061edc9f3e7286f2c335e9e9b9b8fa7c335ae45daa8a1f3433164dc0b9a3d187fa96f9516e04a17a1f9ce722becc4f
languageName: node
linkType: hard
@@ -10839,18 +8908,6 @@ __metadata:
languageName: node
linkType: hard
-"normalize-package-data@npm:^2.3.2":
- version: 2.5.0
- resolution: "normalize-package-data@npm:2.5.0"
- dependencies:
- hosted-git-info: ^2.1.4
- resolve: ^1.10.0
- semver: 2 || 3 || 4 || 5
- validate-npm-package-license: ^3.0.1
- checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499
- languageName: node
- linkType: hard
-
"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0":
version: 3.0.0
resolution: "normalize-path@npm:3.0.0"
@@ -10858,13 +8915,6 @@ __metadata:
languageName: node
linkType: hard
-"normalize-url@npm:^4.1.0":
- version: 4.5.0
- resolution: "normalize-url@npm:4.5.0"
- checksum: 34e9d01095df5c9348bf75f6cf0552c01438a29119aecdb747eead6ccd36a386209acdc093fc993edd32731b3056ff2977ffab44e4b8eed4d8aafdf0feae90c7
- languageName: node
- linkType: hard
-
"normalize-url@npm:^6.0.1":
version: 6.1.0
resolution: "normalize-url@npm:6.1.0"
@@ -10884,13 +8934,6 @@ __metadata:
languageName: node
linkType: hard
-"number-is-nan@npm:^1.0.0":
- version: 1.0.1
- resolution: "number-is-nan@npm:1.0.1"
- checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb
- languageName: node
- linkType: hard
-
"number-to-bn@npm:1.7.0":
version: 1.7.0
resolution: "number-to-bn@npm:1.7.0"
@@ -10908,24 +8951,13 @@ __metadata:
languageName: node
linkType: hard
-"object-assign@npm:^4, object-assign@npm:^4.0.0, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
+"object-assign@npm:^4, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1":
version: 4.1.1
resolution: "object-assign@npm:4.1.1"
checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
languageName: node
linkType: hard
-"object-copy@npm:^0.1.0":
- version: 0.1.0
- resolution: "object-copy@npm:0.1.0"
- dependencies:
- copy-descriptor: ^0.1.0
- define-property: ^0.2.5
- kind-of: ^3.0.3
- checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783
- languageName: node
- linkType: hard
-
"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0":
version: 1.12.2
resolution: "object-inspect@npm:1.12.2"
@@ -10933,20 +8965,10 @@ __metadata:
languageName: node
linkType: hard
-"object-inspect@npm:~1.7.0":
- version: 1.7.0
- resolution: "object-inspect@npm:1.7.0"
- checksum: 53cc00d1a95025228d09549a6562905171932ae83a50b95f3bda7daaaf8ac7c518577180f1dfe72d262c0824737a81f025d93e4992c0506a268fb3f3bfaef3e9
- languageName: node
- linkType: hard
-
-"object-is@npm:^1.0.1":
- version: 1.1.5
- resolution: "object-is@npm:1.1.5"
- dependencies:
- call-bind: ^1.0.2
- define-properties: ^1.1.3
- checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe
+"object-inspect@npm:^1.13.1":
+ version: 1.13.1
+ resolution: "object-inspect@npm:1.13.1"
+ checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f
languageName: node
linkType: hard
@@ -10964,15 +8986,6 @@ __metadata:
languageName: node
linkType: hard
-"object-visit@npm:^1.0.0":
- version: 1.0.1
- resolution: "object-visit@npm:1.0.1"
- dependencies:
- isobject: ^3.0.0
- checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790
- languageName: node
- linkType: hard
-
"object.assign@npm:4.1.0":
version: 4.1.0
resolution: "object.assign@npm:4.1.0"
@@ -10997,7 +9010,19 @@ __metadata:
languageName: node
linkType: hard
-"object.getownpropertydescriptors@npm:^2.0.3, object.getownpropertydescriptors@npm:^2.1.1":
+"object.assign@npm:^4.1.5":
+ version: 4.1.5
+ resolution: "object.assign@npm:4.1.5"
+ dependencies:
+ call-bind: ^1.0.5
+ define-properties: ^1.2.1
+ has-symbols: ^1.0.3
+ object-keys: ^1.1.1
+ checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25
+ languageName: node
+ linkType: hard
+
+"object.getownpropertydescriptors@npm:^2.0.3":
version: 2.1.2
resolution: "object.getownpropertydescriptors@npm:2.1.2"
dependencies:
@@ -11008,15 +9033,6 @@ __metadata:
languageName: node
linkType: hard
-"object.pick@npm:^1.3.0":
- version: 1.3.0
- resolution: "object.pick@npm:1.3.0"
- dependencies:
- isobject: ^3.0.1
- checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a
- languageName: node
- linkType: hard
-
"object.values@npm:^1.1.5":
version: 1.1.5
resolution: "object.values@npm:1.1.5"
@@ -11029,18 +9045,9 @@ __metadata:
linkType: hard
"obliterator@npm:^1.6.1":
- version: 1.6.1
- resolution: "obliterator@npm:1.6.1"
- checksum: 12412ce97bc9680a50ec1e865c9f106f924497f0b73c01947031079da7c9a0f5212f3a1aeea3227f7771ed4a273e42b2a2e6ff93578301c8117dbb3135770133
- languageName: node
- linkType: hard
-
-"oboe@npm:2.1.4":
- version: 2.1.4
- resolution: "oboe@npm:2.1.4"
- dependencies:
- http-https: ^1.0.0
- checksum: b9172453fba362aec86c45d7bcb4f512302bb23ef34c7c9c498974dc4e7ec0e298931bac5a093445fd946d5604e5dd16563e2d2ae922101ac4b47be2e18e30cc
+ version: 1.6.1
+ resolution: "obliterator@npm:1.6.1"
+ checksum: 12412ce97bc9680a50ec1e865c9f106f924497f0b73c01947031079da7c9a0f5212f3a1aeea3227f7771ed4a273e42b2a2e6ff93578301c8117dbb3135770133
languageName: node
linkType: hard
@@ -11080,16 +9087,6 @@ __metadata:
languageName: node
linkType: hard
-"open@npm:^7.4.2":
- version: 7.4.2
- resolution: "open@npm:7.4.2"
- dependencies:
- is-docker: ^2.0.0
- is-wsl: ^2.1.1
- checksum: 3333900ec0e420d64c23b831bc3467e57031461d843c801f569b2204a1acc3cd7b3ec3c7897afc9dde86491dfa289708eb92bba164093d8bd88fb2c231843c91
- languageName: node
- linkType: hard
-
"optionator@npm:^0.8.1, optionator@npm:^0.8.2":
version: 0.8.3
resolution: "optionator@npm:0.8.3"
@@ -11118,23 +9115,14 @@ __metadata:
languageName: node
linkType: hard
-"os-homedir@npm:^1.0.0":
- version: 1.0.2
- resolution: "os-homedir@npm:1.0.2"
- checksum: af609f5a7ab72de2f6ca9be6d6b91a599777afc122ac5cad47e126c1f67c176fe9b52516b9eeca1ff6ca0ab8587fe66208bc85e40a3940125f03cdb91408e9d2
- languageName: node
- linkType: hard
-
-"os-locale@npm:^1.4.0":
- version: 1.4.0
- resolution: "os-locale@npm:1.4.0"
- dependencies:
- lcid: ^1.0.0
- checksum: 0161a1b6b5a8492f99f4b47fe465df9fc521c55ba5414fce6444c45e2500487b8ed5b40a47a98a2363fe83ff04ab033785300ed8df717255ec4c3b625e55b1fb
+"ordinal@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "ordinal@npm:1.0.3"
+ checksum: 6761c5b7606b6c4b0c22b4097dab4fe7ffcddacc49238eedf9c0ced877f5d4e4ad3f4fd43fefa1cc3f167cc54c7149267441b2ae85b81ccf13f45cf4b7947164
languageName: node
linkType: hard
-"os-tmpdir@npm:^1.0.1, os-tmpdir@npm:~1.0.2":
+"os-tmpdir@npm:~1.0.2":
version: 1.0.2
resolution: "os-tmpdir@npm:1.0.2"
checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d
@@ -11148,13 +9136,6 @@ __metadata:
languageName: node
linkType: hard
-"p-cancelable@npm:^1.0.0":
- version: 1.1.0
- resolution: "p-cancelable@npm:1.1.0"
- checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece
- languageName: node
- linkType: hard
-
"p-cancelable@npm:^3.0.0":
version: 3.0.0
resolution: "p-cancelable@npm:3.0.0"
@@ -11277,13 +9258,6 @@ __metadata:
languageName: node
linkType: hard
-"parse-cache-control@npm:^1.0.1":
- version: 1.0.1
- resolution: "parse-cache-control@npm:1.0.1"
- checksum: 5a70868792124eb07c2dd07a78fcb824102e972e908254e9e59ce59a4796c51705ff28196d2b20d3b7353d14e9f98e65ed0e4eda9be072cc99b5297dc0466fee
- languageName: node
- linkType: hard
-
"parse-headers@npm:^2.0.0":
version: 2.0.3
resolution: "parse-headers@npm:2.0.3"
@@ -11291,15 +9265,6 @@ __metadata:
languageName: node
linkType: hard
-"parse-json@npm:^2.2.0":
- version: 2.2.0
- resolution: "parse-json@npm:2.2.0"
- dependencies:
- error-ex: ^1.2.0
- checksum: dda78a63e57a47b713a038630868538f718a7ca0cd172a36887b0392ccf544ed0374902eb28f8bf3409e8b71d62b79d17062f8543afccf2745f9b0b2d2bb80ca
- languageName: node
- linkType: hard
-
"parse-json@npm:^4.0.0":
version: 4.0.0
resolution: "parse-json@npm:4.0.0"
@@ -11310,78 +9275,22 @@ __metadata:
languageName: node
linkType: hard
-"parseurl@npm:~1.3.3":
- version: 1.3.3
- resolution: "parseurl@npm:1.3.3"
- checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2
- languageName: node
- linkType: hard
-
-"pascalcase@npm:^0.1.1":
- version: 0.1.1
- resolution: "pascalcase@npm:0.1.1"
- checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925
- languageName: node
- linkType: hard
-
-"patch-package@npm:6.2.2":
- version: 6.2.2
- resolution: "patch-package@npm:6.2.2"
- dependencies:
- "@yarnpkg/lockfile": ^1.1.0
- chalk: ^2.4.2
- cross-spawn: ^6.0.5
- find-yarn-workspace-root: ^1.2.1
- fs-extra: ^7.0.1
- is-ci: ^2.0.0
- klaw-sync: ^6.0.0
- minimist: ^1.2.0
- rimraf: ^2.6.3
- semver: ^5.6.0
- slash: ^2.0.0
- tmp: ^0.0.33
- bin:
- patch-package: index.js
- checksum: 5e2f49457b0dc56b5ce0a9d23e281e062e9f225d87a832540f02ffed29ffa7f298b1877daf13c16500ef8a759109c975e3d28d6bd63b0d953f349177abee1767
- languageName: node
- linkType: hard
-
-"patch-package@npm:^6.2.2":
- version: 6.4.7
- resolution: "patch-package@npm:6.4.7"
+"parse-json@npm:^5.2.0":
+ version: 5.2.0
+ resolution: "parse-json@npm:5.2.0"
dependencies:
- "@yarnpkg/lockfile": ^1.1.0
- chalk: ^2.4.2
- cross-spawn: ^6.0.5
- find-yarn-workspace-root: ^2.0.0
- fs-extra: ^7.0.1
- is-ci: ^2.0.0
- klaw-sync: ^6.0.0
- minimist: ^1.2.0
- open: ^7.4.2
- rimraf: ^2.6.3
- semver: ^5.6.0
- slash: ^2.0.0
- tmp: ^0.0.33
- bin:
- patch-package: index.js
- checksum: f36d5324da3b69ee635e7cd2c68f4d3dd89dc91d60ffdaad3b602fd953277f4da901c91033683bf6ff31c14799bc049849af3a389455c25d0435fe9cfb0d4088
- languageName: node
- linkType: hard
-
-"path-browserify@npm:^1.0.0":
- version: 1.0.1
- resolution: "path-browserify@npm:1.0.1"
- checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699
+ "@babel/code-frame": ^7.0.0
+ error-ex: ^1.3.1
+ json-parse-even-better-errors: ^2.3.0
+ lines-and-columns: ^1.1.6
+ checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2
languageName: node
linkType: hard
-"path-exists@npm:^2.0.0":
- version: 2.1.0
- resolution: "path-exists@npm:2.1.0"
- dependencies:
- pinkie-promise: ^2.0.0
- checksum: fdb734f1d00f225f7a0033ce6d73bff6a7f76ea08936abf0e5196fa6e54a645103538cd8aedcb90d6d8c3fa3705ded0c58a4da5948ae92aa8834892c1ab44a84
+"parseurl@npm:~1.3.3":
+ version: 1.3.3
+ resolution: "parseurl@npm:1.3.3"
+ checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2
languageName: node
linkType: hard
@@ -11399,7 +9308,7 @@ __metadata:
languageName: node
linkType: hard
-"path-is-absolute@npm:^1.0.0, path-is-absolute@npm:^1.0.1":
+"path-is-absolute@npm:^1.0.0":
version: 1.0.1
resolution: "path-is-absolute@npm:1.0.1"
checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8
@@ -11434,6 +9343,16 @@ __metadata:
languageName: node
linkType: hard
+"path-scurry@npm:^1.10.2":
+ version: 1.10.2
+ resolution: "path-scurry@npm:1.10.2"
+ dependencies:
+ lru-cache: ^10.2.0
+ minipass: ^5.0.0 || ^6.0.2 || ^7.0.0
+ checksum: 6739b4290f7d1a949c61c758b481c07ac7d1a841964c68cf5e1fa153d7e18cbde4872b37aadf9c5173c800d627f219c47945859159de36c977dd82419997b9b8
+ languageName: node
+ linkType: hard
+
"path-to-regexp@npm:0.1.7":
version: 0.1.7
resolution: "path-to-regexp@npm:0.1.7"
@@ -11441,17 +9360,6 @@ __metadata:
languageName: node
linkType: hard
-"path-type@npm:^1.0.0":
- version: 1.1.0
- resolution: "path-type@npm:1.1.0"
- dependencies:
- graceful-fs: ^4.1.2
- pify: ^2.0.0
- pinkie-promise: ^2.0.0
- checksum: 59a4b2c0e566baf4db3021a1ed4ec09a8b36fca960a490b54a6bcefdb9987dafe772852982b6011cd09579478a96e57960a01f75fa78a794192853c9d468fc79
- languageName: node
- linkType: hard
-
"path-type@npm:^4.0.0":
version: 4.0.0
resolution: "path-type@npm:4.0.0"
@@ -11493,13 +9401,6 @@ __metadata:
languageName: node
linkType: hard
-"pify@npm:^2.0.0, pify@npm:^2.3.0":
- version: 2.3.0
- resolution: "pify@npm:2.3.0"
- checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba
- languageName: node
- linkType: hard
-
"pify@npm:^4.0.1":
version: 4.0.1
resolution: "pify@npm:4.0.1"
@@ -11507,40 +9408,17 @@ __metadata:
languageName: node
linkType: hard
-"pinkie-promise@npm:^2.0.0":
- version: 2.0.1
- resolution: "pinkie-promise@npm:2.0.1"
- dependencies:
- pinkie: ^2.0.0
- checksum: b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca
- languageName: node
- linkType: hard
-
-"pinkie@npm:^2.0.0":
- version: 2.0.4
- resolution: "pinkie@npm:2.0.4"
- checksum: b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db
- languageName: node
- linkType: hard
-
-"posix-character-classes@npm:^0.1.0":
- version: 0.1.1
- resolution: "posix-character-classes@npm:0.1.1"
- checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442
- languageName: node
- linkType: hard
-
-"postinstall-postinstall@npm:^2.1.0":
- version: 2.1.0
- resolution: "postinstall-postinstall@npm:2.1.0"
- checksum: e1d34252cf8d2c5641c7d2db7426ec96e3d7a975f01c174c68f09ef5b8327bc8d5a9aa2001a45e693db2cdbf69577094d3fe6597b564ad2d2202b65fba76134b
+"pluralize@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "pluralize@npm:8.0.0"
+ checksum: 08931d4a6a4a5561a7f94f67a31c17e6632cb21e459ab3ff4f6f629d9a822984cf8afef2311d2005fbea5d7ef26016ebb090db008e2d8bce39d0a9a9d218736e
languageName: node
linkType: hard
-"precond@npm:0.2":
- version: 0.2.3
- resolution: "precond@npm:0.2.3"
- checksum: c613e7d68af3e0b43a294a994bf067cc2bc44b03fd17bc4fb133e30617a4f5b49414b08e9b392d52d7c6822d8a71f66a7fe93a8a1e7d02240177202cff3f63ef
+"possible-typed-array-names@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "possible-typed-array-names@npm:1.0.0"
+ checksum: b32d403ece71e042385cc7856385cecf1cd8e144fa74d2f1de40d1e16035dba097bc189715925e79b67bdd1472796ff168d3a90d296356c9c94d272d5b95f3ae
languageName: node
linkType: hard
@@ -11565,26 +9443,16 @@ __metadata:
languageName: node
linkType: hard
-"prepend-http@npm:^2.0.0":
- version: 2.0.0
- resolution: "prepend-http@npm:2.0.0"
- checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea
- languageName: node
- linkType: hard
-
-"prettier-plugin-solidity@npm:^1.0.0-beta.24":
- version: 1.0.0-beta.24
- resolution: "prettier-plugin-solidity@npm:1.0.0-beta.24"
+"prettier-plugin-solidity@npm:^1.3.1":
+ version: 1.3.1
+ resolution: "prettier-plugin-solidity@npm:1.3.1"
dependencies:
- "@solidity-parser/parser": ^0.14.3
- emoji-regex: ^10.1.0
- escape-string-regexp: ^4.0.0
- semver: ^7.3.7
- solidity-comments-extractor: ^0.0.7
- string-width: ^4.2.3
+ "@solidity-parser/parser": ^0.17.0
+ semver: ^7.5.4
+ solidity-comments-extractor: ^0.0.8
peerDependencies:
- prettier: ^2.3.0
- checksum: 5923fbb2827307a23f3182c85f601b6bae476ac69ab115524fc3f08b823eaf7eaa93844a2564ad0a5ac49be0ce946381e0ef3407c1e5cfd4928811fa071823e0
+ prettier: ">=2.3.0"
+ checksum: 286bf3b5899d7fad66e49c78ebac164bacfbf419f874a932ed99e491d97d77e91fa03ca068197939d3696ba7991db9e5258390dd42dee8d2184fa8c2e11921e4
languageName: node
linkType: hard
@@ -11597,7 +9465,7 @@ __metadata:
languageName: node
linkType: hard
-"prettier@npm:^2.1.2, prettier@npm:^2.3.0, prettier@npm:^2.3.1":
+"prettier@npm:^2.3.0, prettier@npm:^2.3.1":
version: 2.7.1
resolution: "prettier@npm:2.7.1"
bin:
@@ -11606,6 +9474,15 @@ __metadata:
languageName: node
linkType: hard
+"prettier@npm:^2.8.3":
+ version: 2.8.8
+ resolution: "prettier@npm:2.8.8"
+ bin:
+ prettier: bin-prettier.js
+ checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8
+ languageName: node
+ linkType: hard
+
"printj@npm:~1.1.0":
version: 1.1.2
resolution: "printj@npm:1.1.2"
@@ -11615,13 +9492,6 @@ __metadata:
languageName: node
linkType: hard
-"private@npm:^0.1.6, private@npm:^0.1.8":
- version: 0.1.8
- resolution: "private@npm:0.1.8"
- checksum: a00abd713d25389f6de7294f0e7879b8a5d09a9ec5fd81cc2f21b29d4f9a80ec53bc4222927d3a281d4aadd4cd373d9a28726fca3935921950dc75fd71d1fdbb
- languageName: node
- linkType: hard
-
"process-nextick-args@npm:~2.0.0":
version: 2.0.1
resolution: "process-nextick-args@npm:2.0.1"
@@ -11660,25 +9530,6 @@ __metadata:
languageName: node
linkType: hard
-"promise-to-callback@npm:^1.0.0":
- version: 1.0.0
- resolution: "promise-to-callback@npm:1.0.0"
- dependencies:
- is-fn: ^1.0.0
- set-immediate-shim: ^1.0.1
- checksum: 8c9e1327386e00f799589cdf96fff2586a13b52b0185222bc3199e1305ba9344589eedfd4038dcbaf5592d85d567097d1507b81e948b7fff6ffdd3de49d54e14
- languageName: node
- linkType: hard
-
-"promise@npm:^8.0.0":
- version: 8.2.0
- resolution: "promise@npm:8.2.0"
- dependencies:
- asap: ~2.0.6
- checksum: 45d65ffe4fbd9172ef848f790ac1366822e63f063a5ef42a14e75b577ffa3c37870a9d8472729d9d429d7c8a770428f9d13650b52aafaa361dcc69cf84873b20
- languageName: node
- linkType: hard
-
"proper-lockfile@npm:^4.1.1":
version: 4.1.2
resolution: "proper-lockfile@npm:4.1.2"
@@ -11700,6 +9551,13 @@ __metadata:
languageName: node
linkType: hard
+"proxy-from-env@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "proxy-from-env@npm:1.1.0"
+ checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4
+ languageName: node
+ linkType: hard
+
"prr@npm:~1.0.1":
version: 1.0.1
resolution: "prr@npm:1.0.1"
@@ -11707,13 +9565,6 @@ __metadata:
languageName: node
linkType: hard
-"pseudomap@npm:^1.0.1":
- version: 1.0.2
- resolution: "pseudomap@npm:1.0.2"
- checksum: 856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5
- languageName: node
- linkType: hard
-
"psl@npm:^1.1.28":
version: 1.8.0
resolution: "psl@npm:1.8.0"
@@ -11735,68 +9586,6 @@ __metadata:
languageName: node
linkType: hard
-"pull-cat@npm:^1.1.9":
- version: 1.1.11
- resolution: "pull-cat@npm:1.1.11"
- checksum: 785173d94732ba5e6e65f27ee128542522aeb87519c5d72aa9b8bc510f6c4f67b91fcfd565782a20aafc116e57354f2dd0fa8fd039b45a61b8da89b0253a7440
- languageName: node
- linkType: hard
-
-"pull-defer@npm:^0.2.2":
- version: 0.2.3
- resolution: "pull-defer@npm:0.2.3"
- checksum: 4ea99ed64a2d79167e87293aba5088cde91f210a319c690a65aa6704d829be33b76cecc732f8d4ed3eee47e7eb09a6f77042897ea6414862bacbd722ce182d66
- languageName: node
- linkType: hard
-
-"pull-level@npm:^2.0.3":
- version: 2.0.4
- resolution: "pull-level@npm:2.0.4"
- dependencies:
- level-post: ^1.0.7
- pull-cat: ^1.1.9
- pull-live: ^1.0.1
- pull-pushable: ^2.0.0
- pull-stream: ^3.4.0
- pull-window: ^2.1.4
- stream-to-pull-stream: ^1.7.1
- checksum: f4e0573b3ff3f3659eb50ac86b505aee12d5f4c1d8bafc3bf6fd67d173b3b39a3fe5161d8bfa5eba8a0c5873fbda75f3b160276cfa678d5edd517dcd3349ecc2
- languageName: node
- linkType: hard
-
-"pull-live@npm:^1.0.1":
- version: 1.0.1
- resolution: "pull-live@npm:1.0.1"
- dependencies:
- pull-cat: ^1.1.9
- pull-stream: ^3.4.0
- checksum: e4328771e811aec1e03996d1070ec8fecb2560cc48b96814cd9f4aebd870a710903f8693e423765d3d65d8021b3b9ccc38c8660baef3df45e217c9b1bbc5581a
- languageName: node
- linkType: hard
-
-"pull-pushable@npm:^2.0.0":
- version: 2.2.0
- resolution: "pull-pushable@npm:2.2.0"
- checksum: 1c88ef55f6f14799ae5cf060415d089d15452ef865d874f075c155f8224c321371cb7f04a10b3fba263b6f128158c78253efd18bcb54afbb99f9cae846f883a6
- languageName: node
- linkType: hard
-
-"pull-stream@npm:^3.2.3, pull-stream@npm:^3.4.0, pull-stream@npm:^3.6.8":
- version: 3.6.14
- resolution: "pull-stream@npm:3.6.14"
- checksum: fc3d86d488894cdf1f980848886be54d8c9cf16a982e9f651098e673bf0134dd1be9b02435f59afe5b48d479c6bafb828348f7fac95fd4593633bffefdfb7503
- languageName: node
- linkType: hard
-
-"pull-window@npm:^2.1.4":
- version: 2.1.4
- resolution: "pull-window@npm:2.1.4"
- dependencies:
- looper: ^2.0.0
- checksum: e006995108a80c81eea93dfaadf68285dc5b9b3cbaf654da39731ca3f308376f15b0546c61730cd0fa38303e273a1845c6d65f0fda35ed9c66252a65e446df18
- languageName: node
- linkType: hard
-
"pump@npm:^3.0.0":
version: 3.0.0
resolution: "pump@npm:3.0.0"
@@ -11807,13 +9596,6 @@ __metadata:
languageName: node
linkType: hard
-"punycode@npm:1.3.2":
- version: 1.3.2
- resolution: "punycode@npm:1.3.2"
- checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6
- languageName: node
- linkType: hard
-
"punycode@npm:2.1.0":
version: 2.1.0
resolution: "punycode@npm:2.1.0"
@@ -11828,7 +9610,7 @@ __metadata:
languageName: node
linkType: hard
-"qs@npm:6.11.0, qs@npm:^6.4.0, qs@npm:^6.7.0":
+"qs@npm:6.11.0":
version: 6.11.0
resolution: "qs@npm:6.11.0"
dependencies:
@@ -11855,13 +9637,6 @@ __metadata:
languageName: node
linkType: hard
-"querystring@npm:0.2.0":
- version: 0.2.0
- resolution: "querystring@npm:0.2.0"
- checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69
- languageName: node
- linkType: hard
-
"queue-microtask@npm:^1.2.2, queue-microtask@npm:^1.2.3":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
@@ -11876,7 +9651,7 @@ __metadata:
languageName: node
linkType: hard
-"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.0.6, randombytes@npm:^2.1.0":
+"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0":
version: 2.1.0
resolution: "randombytes@npm:2.1.0"
dependencies:
@@ -11914,27 +9689,6 @@ __metadata:
languageName: node
linkType: hard
-"read-pkg-up@npm:^1.0.1":
- version: 1.0.1
- resolution: "read-pkg-up@npm:1.0.1"
- dependencies:
- find-up: ^1.0.0
- read-pkg: ^1.0.0
- checksum: d18399a0f46e2da32beb2f041edd0cda49d2f2cc30195a05c759ef3ed9b5e6e19ba1ad1bae2362bdec8c6a9f2c3d18f4d5e8c369e808b03d498d5781cb9122c7
- languageName: node
- linkType: hard
-
-"read-pkg@npm:^1.0.0":
- version: 1.1.0
- resolution: "read-pkg@npm:1.1.0"
- dependencies:
- load-json-file: ^1.0.0
- normalize-package-data: ^2.3.2
- path-type: ^1.0.0
- checksum: a0f5d5e32227ec8e6a028dd5c5134eab229768dcb7a5d9a41a284ed28ad4b9284fecc47383dc1593b5694f4de603a7ffaee84b738956b9b77e0999567485a366
- languageName: node
- linkType: hard
-
"readable-stream@npm:^1.0.33":
version: 1.1.14
resolution: "readable-stream@npm:1.1.14"
@@ -11947,9 +9701,9 @@ __metadata:
languageName: node
linkType: hard
-"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.2.8, readable-stream@npm:^2.2.9, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6":
- version: 2.3.7
- resolution: "readable-stream@npm:2.3.7"
+"readable-stream@npm:^2.0.0":
+ version: 2.3.8
+ resolution: "readable-stream@npm:2.3.8"
dependencies:
core-util-is: ~1.0.0
inherits: ~2.0.3
@@ -11958,11 +9712,11 @@ __metadata:
safe-buffer: ~5.1.1
string_decoder: ~1.1.1
util-deprecate: ~1.0.1
- checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755
+ checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42
languageName: node
linkType: hard
-"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.0, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
+"readable-stream@npm:^3.1.0, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
version: 3.6.0
resolution: "readable-stream@npm:3.6.0"
dependencies:
@@ -12028,42 +9782,7 @@ __metadata:
languageName: node
linkType: hard
-"regenerate@npm:^1.2.1":
- version: 1.4.2
- resolution: "regenerate@npm:1.4.2"
- checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0
- languageName: node
- linkType: hard
-
-"regenerator-runtime@npm:^0.11.0":
- version: 0.11.1
- resolution: "regenerator-runtime@npm:0.11.1"
- checksum: 3c97bd2c7b2b3247e6f8e2147a002eb78c995323732dad5dc70fac8d8d0b758d0295e7015b90d3d444446ae77cbd24b9f9123ec3a77018e81d8999818301b4f4
- languageName: node
- linkType: hard
-
-"regenerator-transform@npm:^0.10.0":
- version: 0.10.1
- resolution: "regenerator-transform@npm:0.10.1"
- dependencies:
- babel-runtime: ^6.18.0
- babel-types: ^6.19.0
- private: ^0.1.6
- checksum: bd366a3b0fa0d0975c48fb9eff250363a9ab28c25b472ecdc397bb19a836746640a30d8f641718a895f9178564bd8a01a0179a9c8e5813f76fc29e62a115d9d7
- languageName: node
- linkType: hard
-
-"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2":
- version: 1.0.2
- resolution: "regex-not@npm:1.0.2"
- dependencies:
- extend-shallow: ^3.0.2
- safe-regex: ^1.1.0
- checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77
- languageName: node
- linkType: hard
-
-"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.4.3":
+"regexp.prototype.flags@npm:^1.4.3":
version: 1.4.3
resolution: "regexp.prototype.flags@npm:1.4.3"
dependencies:
@@ -12074,6 +9793,18 @@ __metadata:
languageName: node
linkType: hard
+"regexp.prototype.flags@npm:^1.5.2":
+ version: 1.5.2
+ resolution: "regexp.prototype.flags@npm:1.5.2"
+ dependencies:
+ call-bind: ^1.0.6
+ define-properties: ^1.2.1
+ es-errors: ^1.3.0
+ set-function-name: ^2.0.1
+ checksum: d7f333667d5c564e2d7a97c56c3075d64c722c9bb51b2b4df6822b2e8096d623a5e63088fb4c83df919b6951ef8113841de8b47de7224872fa6838bc5d8a7d64
+ languageName: node
+ linkType: hard
+
"regexpp@npm:^2.0.1":
version: 2.0.1
resolution: "regexpp@npm:2.0.1"
@@ -12088,101 +9819,14 @@ __metadata:
languageName: node
linkType: hard
-"regexpu-core@npm:^2.0.0":
- version: 2.0.0
- resolution: "regexpu-core@npm:2.0.0"
- dependencies:
- regenerate: ^1.2.1
- regjsgen: ^0.2.0
- regjsparser: ^0.1.4
- checksum: 14a78eb4608fa991ded6a1433ee6a570f95a4cfb7fe312145a44d6ecbb3dc8c707016a099494c741aa0ac75a1329b40814d30ff134c0d67679c80187029c7d2d
- languageName: node
- linkType: hard
-
-"regjsgen@npm:^0.2.0":
- version: 0.2.0
- resolution: "regjsgen@npm:0.2.0"
- checksum: 1f3ae570151e2c29193cdc5a5890c0b83cd8c5029ed69315b0ea303bc2644f9ab5d536d2288fd9b70293fd351d7dd7fc1fc99ebe24554015c894dbce883bcf2b
- languageName: node
- linkType: hard
-
-"regjsparser@npm:^0.1.4":
- version: 0.1.5
- resolution: "regjsparser@npm:0.1.5"
- dependencies:
- jsesc: ~0.5.0
- bin:
- regjsparser: bin/parser
- checksum: 1feba2f3f2d4f1ef9f5f4e0f20c827cf866d4f65c51502eb64db4d4dd9c656f8c70f6c79537c892bf0fc9592c96f732519f7d8ad4a82f3b622756118ac737970
- languageName: node
- linkType: hard
-
-"repeat-element@npm:^1.1.2":
- version: 1.1.4
- resolution: "repeat-element@npm:1.1.4"
- checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9
- languageName: node
- linkType: hard
-
-"repeat-string@npm:^1.6.1":
- version: 1.6.1
- resolution: "repeat-string@npm:1.6.1"
- checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0
- languageName: node
- linkType: hard
-
-"repeating@npm:^2.0.0":
- version: 2.0.1
- resolution: "repeating@npm:2.0.1"
- dependencies:
- is-finite: ^1.0.0
- checksum: d2db0b69c5cb0c14dd750036e0abcd6b3c3f7b2da3ee179786b755cf737ca15fa0fff417ca72de33d6966056f4695440e680a352401fc02c95ade59899afbdd0
- languageName: node
- linkType: hard
-
-"req-cwd@npm:^2.0.0":
- version: 2.0.0
- resolution: "req-cwd@npm:2.0.0"
- dependencies:
- req-from: ^2.0.0
- checksum: c44f9dea0b0f7d3a72be18a04f7769e0eefbadca363e3a346c1c02b79745126c871e1f6970357b3e731c26740aad8344bf80fb3ce055a2bcf8ca85ad2b44f519
- languageName: node
- linkType: hard
-
-"req-from@npm:^2.0.0":
- version: 2.0.0
- resolution: "req-from@npm:2.0.0"
- dependencies:
- resolve-from: ^3.0.0
- checksum: 4c369881a2296e23e71668ed089c5d93b37652fe900ec9f1e1f5c1da65f6bca4ee271e97ba2b806fdea50219e011995d1df3c80a7209015cc1e1fc622507f140
- languageName: node
- linkType: hard
-
-"request-promise-core@npm:1.1.4":
- version: 1.1.4
- resolution: "request-promise-core@npm:1.1.4"
- dependencies:
- lodash: ^4.17.19
- peerDependencies:
- request: ^2.34
- checksum: c798bafd552961e36fbf5023b1d081e81c3995ab390f1bc8ef38a711ba3fe4312eb94dbd61887073d7356c3499b9380947d7f62faa805797c0dc50f039425699
- languageName: node
- linkType: hard
-
-"request-promise-native@npm:^1.0.5":
- version: 1.0.9
- resolution: "request-promise-native@npm:1.0.9"
- dependencies:
- request-promise-core: 1.1.4
- stealthy-require: ^1.1.1
- tough-cookie: ^2.3.3
- peerDependencies:
- request: ^2.34
- checksum: 3e2c694eefac88cb20beef8911ad57a275ab3ccbae0c4ca6c679fffb09d5fd502458aab08791f0814ca914b157adab2d4e472597c97a73be702918e41725ed69
+"repeat-string@npm:^1.0.0":
+ version: 1.6.1
+ resolution: "repeat-string@npm:1.6.1"
+ checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0
languageName: node
linkType: hard
-"request@npm:^2.79.0, request@npm:^2.85.0, request@npm:^2.88.0":
+"request@npm:^2.79.0":
version: 2.88.2
resolution: "request@npm:2.88.2"
dependencies:
@@ -12217,13 +9861,6 @@ __metadata:
languageName: node
linkType: hard
-"require-from-string@npm:^1.1.0":
- version: 1.2.1
- resolution: "require-from-string@npm:1.2.1"
- checksum: d2e0b0c798fe45d86456a32425635bd9d2a75a20e87f67294fa5cce5ed61fdf41e0c7c57afa981fb836299bfb0c37c915adb4d22478dc8d12edbf80a304e9324
- languageName: node
- linkType: hard
-
"require-from-string@npm:^2.0.0, require-from-string@npm:^2.0.2":
version: 2.0.2
resolution: "require-from-string@npm:2.0.2"
@@ -12231,13 +9868,6 @@ __metadata:
languageName: node
linkType: hard
-"require-main-filename@npm:^1.0.1":
- version: 1.0.1
- resolution: "require-main-filename@npm:1.0.1"
- checksum: 1fef30754da961f4e13c450c3eb60c7ae898a529c6ad6fa708a70bd2eed01564ceb299187b2899f5562804d797a059f39a5789884d0ac7b7ae1defc68fba4abf
- languageName: node
- linkType: hard
-
"require-main-filename@npm:^2.0.0":
version: 2.0.0
resolution: "require-main-filename@npm:2.0.0"
@@ -12273,13 +9903,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve-url@npm:^0.2.1":
- version: 0.2.1
- resolution: "resolve-url@npm:0.2.1"
- checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14
- languageName: node
- linkType: hard
-
"resolve@npm:1.1.x":
version: 1.1.7
resolution: "resolve@npm:1.1.7"
@@ -12287,7 +9910,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:1.17.0, resolve@npm:~1.17.0":
+"resolve@npm:1.17.0":
version: 1.17.0
resolution: "resolve@npm:1.17.0"
dependencies:
@@ -12296,7 +9919,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.10.1, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.8.1":
+"resolve@npm:^1.1.6, resolve@npm:^1.10.1, resolve@npm:^1.20.0, resolve@npm:^1.22.0":
version: 1.22.1
resolution: "resolve@npm:1.22.1"
dependencies:
@@ -12316,7 +9939,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@1.17.0#~builtin, resolve@patch:resolve@~1.17.0#~builtin":
+"resolve@patch:resolve@1.17.0#~builtin":
version: 1.17.0
resolution: "resolve@patch:resolve@npm%3A1.17.0#~builtin::version=1.17.0&hash=c3c19d"
dependencies:
@@ -12325,7 +9948,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.8.1#~builtin":
+"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin":
version: 1.22.1
resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d"
dependencies:
@@ -12338,15 +9961,6 @@ __metadata:
languageName: node
linkType: hard
-"responselike@npm:^1.0.2":
- version: 1.0.2
- resolution: "responselike@npm:1.0.2"
- dependencies:
- lowercase-keys: ^1.0.0
- checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd
- languageName: node
- linkType: hard
-
"responselike@npm:^2.0.0":
version: 2.0.1
resolution: "responselike@npm:2.0.1"
@@ -12366,22 +9980,6 @@ __metadata:
languageName: node
linkType: hard
-"resumer@npm:~0.0.0":
- version: 0.0.0
- resolution: "resumer@npm:0.0.0"
- dependencies:
- through: ~2.3.4
- checksum: 21b1c257aac24840643fae9bc99ca6447a71a0039e7c6dcf64d0ead447ce511eff158d529f1b6258ad12668e66ee3e49ff14932d2b88a3bd578f483e79708104
- languageName: node
- linkType: hard
-
-"ret@npm:~0.1.10":
- version: 0.1.15
- resolution: "ret@npm:0.1.15"
- checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151
- languageName: node
- linkType: hard
-
"retry@npm:0.13.1":
version: 0.13.1
resolution: "retry@npm:0.13.1"
@@ -12414,7 +10012,7 @@ __metadata:
languageName: node
linkType: hard
-"rimraf@npm:^2.2.8, rimraf@npm:^2.6.3":
+"rimraf@npm:^2.2.8":
version: 2.7.1
resolution: "rimraf@npm:2.7.1"
dependencies:
@@ -12453,7 +10051,18 @@ __metadata:
languageName: node
linkType: hard
-"rlp@npm:^2.0.0, rlp@npm:^2.2.1, rlp@npm:^2.2.2, rlp@npm:^2.2.3, rlp@npm:^2.2.4":
+"rlp@npm:^2.0.0":
+ version: 2.2.7
+ resolution: "rlp@npm:2.2.7"
+ dependencies:
+ bn.js: ^5.2.0
+ bin:
+ rlp: bin/rlp
+ checksum: 3db4dfe5c793f40ac7e0be689a1f75d05e6f2ca0c66189aeb62adab8c436b857ab4420a419251ee60370d41d957a55698fc5e23ab1e1b41715f33217bc4bb558
+ languageName: node
+ linkType: hard
+
+"rlp@npm:^2.2.3, rlp@npm:^2.2.4":
version: 2.2.6
resolution: "rlp@npm:2.2.6"
dependencies:
@@ -12471,15 +10080,6 @@ __metadata:
languageName: node
linkType: hard
-"run-parallel-limit@npm:^1.1.0":
- version: 1.1.0
- resolution: "run-parallel-limit@npm:1.1.0"
- dependencies:
- queue-microtask: ^1.2.2
- checksum: 672c3b87e7f939c684b9965222b361421db0930223ed1e43ebf0e7e48ccc1a022ea4de080bef4d5468434e2577c33b7681e3f03b7593fdc49ad250a55381123c
- languageName: node
- linkType: hard
-
"run-parallel@npm:^1.1.9":
version: 1.2.0
resolution: "run-parallel@npm:1.2.0"
@@ -12489,10 +10089,19 @@ __metadata:
languageName: node
linkType: hard
-"rustbn.js@npm:~0.2.0":
+"rust-verkle-wasm@npm:^0.0.1":
+ version: 0.0.1
+ resolution: "rust-verkle-wasm@npm:0.0.1"
+ checksum: 24258e935d50b69d25d25d958ba4515b01470458ed7c42466cbc657104e826173827b838501eea1b94c71fd6c01fccd04829f0cc85cbad5d5c5d968c6d6df59e
+ languageName: node
+ linkType: hard
+
+"rustbn-wasm@npm:^0.2.0":
version: 0.2.0
- resolution: "rustbn.js@npm:0.2.0"
- checksum: 2148e7ba34e70682907ee29df4784639e6eb025481b2c91249403b7ec57181980161868d9aa24822a5075dd1bb5a180dfedc77309e5f0d27b6301f9b563af99a
+ resolution: "rustbn-wasm@npm:0.2.0"
+ dependencies:
+ "@scure/base": ^1.1.1
+ checksum: 9cf89ce88a9d161bce8ea2516b3037fe97e1debb2e9b86d6f3cd133e2c120c844644d37c61c27ae00475e49595a397e61559431875a61c5c52a04c40ba658872
languageName: node
linkType: hard
@@ -12505,6 +10114,18 @@ __metadata:
languageName: node
linkType: hard
+"safe-array-concat@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "safe-array-concat@npm:1.1.2"
+ dependencies:
+ call-bind: ^1.0.7
+ get-intrinsic: ^1.2.4
+ has-symbols: ^1.0.3
+ isarray: ^2.0.5
+ checksum: a3b259694754ddfb73ae0663829e396977b99ff21cbe8607f35a469655656da8e271753497e59da8a7575baa94d2e684bea3e10ddd74ba046c0c9b4418ffa0c4
+ languageName: node
+ linkType: hard
+
"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
@@ -12519,15 +10140,6 @@ __metadata:
languageName: node
linkType: hard
-"safe-event-emitter@npm:^1.0.1":
- version: 1.0.1
- resolution: "safe-event-emitter@npm:1.0.1"
- dependencies:
- events: ^3.0.0
- checksum: 2a15094bd28b0966571693f219b5a846949ae24f7ba87c6024f0ed552bef63ebe72970a784b85b77b1f03f1c95e78fabe19306d44538dbc4a3a685bed31c18c4
- languageName: node
- linkType: hard
-
"safe-regex-test@npm:^1.0.0":
version: 1.0.0
resolution: "safe-regex-test@npm:1.0.0"
@@ -12539,12 +10151,14 @@ __metadata:
languageName: node
linkType: hard
-"safe-regex@npm:^1.1.0":
- version: 1.1.0
- resolution: "safe-regex@npm:1.1.0"
+"safe-regex-test@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "safe-regex-test@npm:1.0.3"
dependencies:
- ret: ~0.1.10
- checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5
+ call-bind: ^1.0.6
+ es-errors: ^1.3.0
+ is-regex: ^1.1.4
+ checksum: 6c7d392ff1ae7a3ae85273450ed02d1d131f1d2c76e177d6b03eb88e6df8fa062639070e7d311802c1615f351f18dc58f9454501c58e28d5ffd9b8f502ba6489
languageName: node
linkType: hard
@@ -12579,13 +10193,6 @@ __metadata:
languageName: node
linkType: hard
-"scrypt-js@npm:2.0.4":
- version: 2.0.4
- resolution: "scrypt-js@npm:2.0.4"
- checksum: 679e8940953ebbef40863bfcc58f1d3058d4b7af0ca9bd8062d8213c30e14db59c6ebfc82a85fbd3b90b6d46b708be4c53b9c4bb200b6f50767dc08a846315a9
- languageName: node
- linkType: hard
-
"scrypt-js@npm:3.0.1, scrypt-js@npm:^3.0.0, scrypt-js@npm:^3.0.1":
version: 3.0.1
resolution: "scrypt-js@npm:3.0.1"
@@ -12593,15 +10200,6 @@ __metadata:
languageName: node
linkType: hard
-"scryptsy@npm:^1.2.1":
- version: 1.2.1
- resolution: "scryptsy@npm:1.2.1"
- dependencies:
- pbkdf2: ^3.0.3
- checksum: e09cf253b0974171bbcb77fa46405bb07cb8e241e2851fc5f23b38526a33105f0f7748a4d60027642f40bd4518ada30b1dce5005c05d17a25cbcefad371d4259
- languageName: node
- linkType: hard
-
"scryptsy@npm:^2.1.0":
version: 2.1.0
resolution: "scryptsy@npm:2.1.0"
@@ -12621,13 +10219,6 @@ __metadata:
languageName: node
linkType: hard
-"seedrandom@npm:3.0.1":
- version: 3.0.1
- resolution: "seedrandom@npm:3.0.1"
- checksum: a8f5bd0e918c4d4b59afd6f5dbd28f5ab8d5f118ee59892c3712f581de51574ac6622aa38fa2d03476b661f8407e98d6ff32af3d7cfdb02c90d046e7f5f91952
- languageName: node
- linkType: hard
-
"semaphore-async-await@npm:^1.5.1":
version: 1.5.1
resolution: "semaphore-async-await@npm:1.5.1"
@@ -12635,14 +10226,14 @@ __metadata:
languageName: node
linkType: hard
-"semaphore@npm:>=1.0.1, semaphore@npm:^1.0.3, semaphore@npm:^1.1.0":
+"semaphore@npm:>=1.0.1":
version: 1.1.0
resolution: "semaphore@npm:1.1.0"
checksum: d2445d232ad9959048d4748ef54eb01bc7b60436be2b42fb7de20c4cffacf70eafeeecd3772c1baf408cfdce3805fa6618a4389590335671f18cde54ef3cfae4
languageName: node
linkType: hard
-"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.3.0, semver@npm:^5.5.0, semver@npm:^5.5.1, semver@npm:^5.6.0, semver@npm:^5.7.0":
+"semver@npm:^5.5.0, semver@npm:^5.5.1, semver@npm:^5.7.0":
version: 5.7.1
resolution: "semver@npm:5.7.1"
bin:
@@ -12671,6 +10262,17 @@ __metadata:
languageName: node
linkType: hard
+"semver@npm:^7.5.2, semver@npm:^7.5.4":
+ version: 7.6.0
+ resolution: "semver@npm:7.6.0"
+ dependencies:
+ lru-cache: ^6.0.0
+ bin:
+ semver: bin/semver.js
+ checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c
+ languageName: node
+ linkType: hard
+
"semver@npm:~5.4.1":
version: 5.4.1
resolution: "semver@npm:5.4.1"
@@ -12742,29 +10344,29 @@ __metadata:
languageName: node
linkType: hard
-"set-immediate-shim@npm:^1.0.1":
- version: 1.0.1
- resolution: "set-immediate-shim@npm:1.0.1"
- checksum: 5085c84039d1e5eee73d2bf48ce765fcec76159021d0cc7b40e23bcdf62cb6d450ffb781e3c62c1118425242c48eae96df712cba0a20a437e86b0d4a15d51a11
- languageName: node
- linkType: hard
-
-"set-value@npm:^2.0.0, set-value@npm:^2.0.1":
- version: 2.0.1
- resolution: "set-value@npm:2.0.1"
+"set-function-length@npm:^1.2.1":
+ version: 1.2.2
+ resolution: "set-function-length@npm:1.2.2"
dependencies:
- extend-shallow: ^2.0.1
- is-extendable: ^0.1.1
- is-plain-object: ^2.0.3
- split-string: ^3.0.1
- checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601
+ define-data-property: ^1.1.4
+ es-errors: ^1.3.0
+ function-bind: ^1.1.2
+ get-intrinsic: ^1.2.4
+ gopd: ^1.0.1
+ has-property-descriptors: ^1.0.2
+ checksum: a8248bdacdf84cb0fab4637774d9fb3c7a8e6089866d04c817583ff48e14149c87044ce683d7f50759a8c50fb87c7a7e173535b06169c87ef76f5fb276dfff72
languageName: node
linkType: hard
-"setimmediate@npm:1.0.4":
- version: 1.0.4
- resolution: "setimmediate@npm:1.0.4"
- checksum: 1d3726183ade73fa1c83bd562b05ae34e97802229d5b9292cde7ed03846524f04eb0fdd2131cc159103e3a7afb7c4e958b35bf960e3c4846fa50d94a3278be6f
+"set-function-name@npm:^2.0.1":
+ version: 2.0.2
+ resolution: "set-function-name@npm:2.0.2"
+ dependencies:
+ define-data-property: ^1.1.4
+ es-errors: ^1.3.0
+ functions-have-names: ^1.2.3
+ has-property-descriptors: ^1.0.2
+ checksum: d6229a71527fd0404399fc6227e0ff0652800362510822a291925c9d7b48a1ca1a468b11b281471c34cd5a2da0db4f5d7ff315a61d26655e77f6e971e6d0c80f
languageName: node
linkType: hard
@@ -12876,6 +10478,13 @@ __metadata:
languageName: node
linkType: hard
+"signal-exit@npm:^4.0.1":
+ version: 4.1.0
+ resolution: "signal-exit@npm:4.1.0"
+ checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549
+ languageName: node
+ linkType: hard
+
"simple-concat@npm:^1.0.0":
version: 1.0.1
resolution: "simple-concat@npm:1.0.1"
@@ -12894,20 +10503,6 @@ __metadata:
languageName: node
linkType: hard
-"slash@npm:^1.0.0":
- version: 1.0.0
- resolution: "slash@npm:1.0.0"
- checksum: 4b6e21b1fba6184a7e2efb1dd173f692d8a845584c1bbf9dc818ff86f5a52fc91b413008223d17cc684604ee8bb9263a420b1182027ad9762e35388434918860
- languageName: node
- linkType: hard
-
-"slash@npm:^2.0.0":
- version: 2.0.0
- resolution: "slash@npm:2.0.0"
- checksum: 512d4350735375bd11647233cb0e2f93beca6f53441015eea241fe784d8068281c3987fbaa93e7ef1c38df68d9c60013045c92837423c69115297d6169aa85e6
- languageName: node
- linkType: hard
-
"slash@npm:^3.0.0":
version: 3.0.0
resolution: "slash@npm:3.0.0"
@@ -12944,42 +10539,6 @@ __metadata:
languageName: node
linkType: hard
-"snapdragon-node@npm:^2.0.1":
- version: 2.1.1
- resolution: "snapdragon-node@npm:2.1.1"
- dependencies:
- define-property: ^1.0.0
- isobject: ^3.0.0
- snapdragon-util: ^3.0.1
- checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd
- languageName: node
- linkType: hard
-
-"snapdragon-util@npm:^3.0.1":
- version: 3.0.1
- resolution: "snapdragon-util@npm:3.0.1"
- dependencies:
- kind-of: ^3.2.0
- checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7
- languageName: node
- linkType: hard
-
-"snapdragon@npm:^0.8.1":
- version: 0.8.2
- resolution: "snapdragon@npm:0.8.2"
- dependencies:
- base: ^0.11.1
- debug: ^2.2.0
- define-property: ^0.2.5
- extend-shallow: ^2.0.1
- map-cache: ^0.2.2
- source-map: ^0.5.6
- source-map-resolve: ^0.5.0
- use: ^3.1.0
- checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312
- languageName: node
- linkType: hard
-
"socks-proxy-agent@npm:^7.0.0":
version: 7.0.0
resolution: "socks-proxy-agent@npm:7.0.0"
@@ -13040,45 +10599,14 @@ __metadata:
languageName: node
linkType: hard
-"solc@npm:^0.4.20":
- version: 0.4.26
- resolution: "solc@npm:0.4.26"
- dependencies:
- fs-extra: ^0.30.0
- memorystream: ^0.3.1
- require-from-string: ^1.1.0
- semver: ^5.3.0
- yargs: ^4.7.1
- bin:
- solcjs: solcjs
- checksum: 041da7ff725c19023ef34a17f83b3303971d2e62bcea9d0fd3c7af728d6f40ff7cdf2b806d0208a3336d3c9be18c321955e1712ab39ee57390ba00d512def946
- languageName: node
- linkType: hard
-
-"solc@npm:^0.6.3":
- version: 0.6.12
- resolution: "solc@npm:0.6.12"
- dependencies:
- command-exists: ^1.2.8
- commander: 3.0.2
- 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
- bin:
- solcjs: solcjs
- checksum: 1e2bf927f3ef4f3b195b7619ff64f715916d94dc59091a8a710e47bdd4b18e0bd92b55ea43a04ce7fabce9ad7a3e4e73ccaf127a50ebbf963a9de9046576e3b6
- languageName: node
- linkType: hard
-
-"solhint@npm:^2.0.0":
- version: 2.3.1
- resolution: "solhint@npm:2.3.1"
+"solhint@npm:^3.3.7":
+ version: 3.3.7
+ resolution: "solhint@npm:3.3.7"
dependencies:
+ "@solidity-parser/parser": ^0.14.1
ajv: ^6.6.1
antlr4: 4.7.1
+ ast-parents: 0.0.1
chalk: ^2.4.2
commander: 2.18.0
cosmiconfig: ^5.0.7
@@ -13095,49 +10623,54 @@ __metadata:
optional: true
bin:
solhint: solhint.js
- checksum: d8a8fe8ab903dbebadda043b21ee87425f371c2c88bc01a201926f04dd38b8d5439d7831287db5892d75ca2ecfdba6c2b782d1367cc7ba1fbe115f3b22143a44
+ checksum: 140a4660b691ea78aa7de19aca2123991fb4f9bc7be574e1573ae428b356e12919805df56c2892ddbdd031a4a4db477a81425ad85aac6672f3fb73f4887c2abb
languageName: node
linkType: hard
-"solhint@npm:^3.3.7":
- version: 3.3.7
- resolution: "solhint@npm:3.3.7"
+"solhint@npm:^3.4.0":
+ version: 3.6.2
+ resolution: "solhint@npm:3.6.2"
dependencies:
- "@solidity-parser/parser": ^0.14.1
- ajv: ^6.6.1
- antlr4: 4.7.1
- ast-parents: 0.0.1
- chalk: ^2.4.2
- commander: 2.18.0
- cosmiconfig: ^5.0.7
- eslint: ^5.6.0
- fast-diff: ^1.1.2
- glob: ^7.1.3
- ignore: ^4.0.6
- js-yaml: ^3.12.0
- lodash: ^4.17.11
- prettier: ^1.14.3
- semver: ^6.3.0
+ "@solidity-parser/parser": ^0.16.0
+ ajv: ^6.12.6
+ antlr4: ^4.11.0
+ ast-parents: ^0.0.1
+ chalk: ^4.1.2
+ commander: ^10.0.0
+ cosmiconfig: ^8.0.0
+ fast-diff: ^1.2.0
+ glob: ^8.0.3
+ ignore: ^5.2.4
+ js-yaml: ^4.1.0
+ lodash: ^4.17.21
+ pluralize: ^8.0.0
+ prettier: ^2.8.3
+ semver: ^7.5.2
+ strip-ansi: ^6.0.1
+ table: ^6.8.1
+ text-table: ^0.2.0
dependenciesMeta:
prettier:
optional: true
bin:
solhint: solhint.js
- checksum: 140a4660b691ea78aa7de19aca2123991fb4f9bc7be574e1573ae428b356e12919805df56c2892ddbdd031a4a4db477a81425ad85aac6672f3fb73f4887c2abb
+ checksum: 96c2ab3c1444624facb45b929682c65d83019f392c7331463a45e8ed61f08122e24b6709a721b6086ddfb0d5e3c3d4281f175f74eb308415072917556bdeba22
languageName: node
linkType: hard
-"solidity-ast@npm:^0.4.15":
- version: 0.4.20
- resolution: "solidity-ast@npm:0.4.20"
- checksum: 8630f74a8cb08ae0506248a8ada59a6248c41969406e6bb183a10e882fb0f78ded87c51b34d19717ea368be6a9a620d97dd4352eb1b10bc6c6425dc43c46f650
+"solidity-ast@npm:^0.4.51":
+ version: 0.4.56
+ resolution: "solidity-ast@npm:0.4.56"
+ dependencies:
+ array.prototype.findlast: ^1.2.2
+ checksum: 124cd54dc187860c83f4e8a3cbc41f890fbd0aaad4695356763034bdc782046eac414b161b7f354e423e075dba303d6bef213682df8932fee5d143d52135cd4e
languageName: node
linkType: hard
-"solidity-comments-extractor@npm:^0.0.7":
- version: 0.0.7
- resolution: "solidity-comments-extractor@npm:0.0.7"
- checksum: a5cedf2310709969bc1783a6c336171478536f2f0ea96ad88437e0ef1e8844c0b37dd75591b0a824ec9c30640ea7e31b5f03128e871e6235bef3426617ce96c4
+"solidity-comments-extractor@npm:^0.0.8":
+ version: 0.0.8
+ resolution: "solidity-comments-extractor@npm:0.0.8"
+ checksum: ad025fc968e2d744b4270710c2f7f55b43d8046ab3f155fd880a7768d6fd163a93ea98f62be3b1115a29ba815bd8b5736bb5ffd1feff79083eca1bf273108d07
languageName: node
linkType: hard
@@ -13173,38 +10706,6 @@ __metadata:
languageName: node
linkType: hard
-"source-map-resolve@npm:^0.5.0":
- version: 0.5.3
- resolution: "source-map-resolve@npm:0.5.3"
- dependencies:
- atob: ^2.1.2
- decode-uri-component: ^0.2.0
- resolve-url: ^0.2.1
- source-map-url: ^0.4.0
- urix: ^0.1.0
- checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae
- languageName: node
- linkType: hard
-
-"source-map-support@npm:0.5.12":
- version: 0.5.12
- resolution: "source-map-support@npm:0.5.12"
- dependencies:
- buffer-from: ^1.0.0
- source-map: ^0.6.0
- checksum: abf93e6201f54bd5713d6f6d5aa32b3752d750ce3c68044733295622ea0c346177505a615e87c073a1e0ad9b1d17b87a58f81152a31d6459658e4e9c17132db6
- languageName: node
- linkType: hard
-
-"source-map-support@npm:^0.4.15":
- version: 0.4.18
- resolution: "source-map-support@npm:0.4.18"
- dependencies:
- source-map: ^0.5.6
- checksum: 669aa7e992fec586fac0ba9a8dea8ce81b7328f92806335f018ffac5709afb2920e3870b4e56c68164282607229f04b8bbcf5d0e5c845eb1b5119b092e7585c0
- languageName: node
- linkType: hard
-
"source-map-support@npm:^0.5.13, source-map-support@npm:^0.5.6":
version: 0.5.21
resolution: "source-map-support@npm:0.5.21"
@@ -13215,20 +10716,6 @@ __metadata:
languageName: node
linkType: hard
-"source-map-url@npm:^0.4.0":
- version: 0.4.1
- resolution: "source-map-url@npm:0.4.1"
- checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c
- languageName: node
- linkType: hard
-
-"source-map@npm:^0.5.6, source-map@npm:^0.5.7":
- version: 0.5.7
- resolution: "source-map@npm:0.5.7"
- checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d
- languageName: node
- linkType: hard
-
"source-map@npm:^0.6.0, source-map@npm:^0.6.1":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
@@ -13245,49 +10732,6 @@ __metadata:
languageName: node
linkType: hard
-"spdx-correct@npm:^3.0.0":
- version: 3.1.1
- resolution: "spdx-correct@npm:3.1.1"
- dependencies:
- spdx-expression-parse: ^3.0.0
- spdx-license-ids: ^3.0.0
- checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6
- languageName: node
- linkType: hard
-
-"spdx-exceptions@npm:^2.1.0":
- version: 2.3.0
- resolution: "spdx-exceptions@npm:2.3.0"
- checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0
- languageName: node
- linkType: hard
-
-"spdx-expression-parse@npm:^3.0.0":
- version: 3.0.1
- resolution: "spdx-expression-parse@npm:3.0.1"
- dependencies:
- spdx-exceptions: ^2.1.0
- spdx-license-ids: ^3.0.0
- checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde
- languageName: node
- linkType: hard
-
-"spdx-license-ids@npm:^3.0.0":
- version: 3.0.7
- resolution: "spdx-license-ids@npm:3.0.7"
- checksum: b52a88aebc19b4c69049349939e1948014c4d10f52a11870431fc1cc6551de411d19e4570f5f1df2d8b7089bec921df9017a3d5199ae2468b2b432171945278e
- languageName: node
- linkType: hard
-
-"split-string@npm:^3.0.1, split-string@npm:^3.0.2":
- version: 3.1.0
- resolution: "split-string@npm:3.1.0"
- dependencies:
- extend-shallow: ^3.0.0
- checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c
- languageName: node
- linkType: hard
-
"sprintf-js@npm:~1.0.2":
version: 1.0.3
resolution: "sprintf-js@npm:1.0.3"
@@ -13334,16 +10778,6 @@ __metadata:
languageName: node
linkType: hard
-"static-extend@npm:^0.1.1":
- version: 0.1.2
- resolution: "static-extend@npm:0.1.2"
- dependencies:
- define-property: ^0.2.5
- object-copy: ^0.1.0
- checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c
- languageName: node
- linkType: hard
-
"statuses@npm:2.0.1":
version: 2.0.1
resolution: "statuses@npm:2.0.1"
@@ -13351,30 +10785,6 @@ __metadata:
languageName: node
linkType: hard
-"stealthy-require@npm:^1.1.1":
- version: 1.1.1
- resolution: "stealthy-require@npm:1.1.1"
- checksum: 6805b857a9f3a6a1079fc6652278038b81011f2a5b22cbd559f71a6c02087e6f1df941eb10163e3fdc5391ab5807aa46758d4258547c1f5ede31e6d9bfda8dd3
- languageName: node
- linkType: hard
-
-"stream-to-pull-stream@npm:^1.7.1":
- version: 1.7.3
- resolution: "stream-to-pull-stream@npm:1.7.3"
- dependencies:
- looper: ^3.0.0
- pull-stream: ^3.2.3
- checksum: 2b878e3b3d5f435802866bfec8897361b9de4ce69f77669da1103cfc45f54833e7c183922468f30c046d375a1642f5a4801a808a8da0d3927c5de41d42a59bc0
- languageName: node
- linkType: hard
-
-"streamsearch@npm:^1.1.0":
- version: 1.1.0
- resolution: "streamsearch@npm:1.1.0"
- checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942
- languageName: node
- linkType: hard
-
"strict-uri-encode@npm:^1.0.0":
version: 1.1.0
resolution: "strict-uri-encode@npm:1.1.0"
@@ -13389,18 +10799,7 @@ __metadata:
languageName: node
linkType: hard
-"string-width@npm:^1.0.1":
- version: 1.0.2
- resolution: "string-width@npm:1.0.2"
- dependencies:
- code-point-at: ^1.0.0
- is-fullwidth-code-point: ^1.0.0
- strip-ansi: ^3.0.0
- checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e
- languageName: node
- linkType: hard
-
-"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
+"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3":
version: 4.2.3
resolution: "string-width@npm:4.2.3"
dependencies:
@@ -13411,7 +10810,7 @@ __metadata:
languageName: node
linkType: hard
-"string-width@npm:^1.0.2 || 2, string-width@npm:^2.1.0, string-width@npm:^2.1.1":
+"string-width@npm:^1.0.2 || 2, string-width@npm:^2.1.0":
version: 2.1.1
resolution: "string-width@npm:2.1.1"
dependencies:
@@ -13432,14 +10831,26 @@ __metadata:
languageName: node
linkType: hard
-"string.prototype.trim@npm:~1.2.1":
- version: 1.2.4
- resolution: "string.prototype.trim@npm:1.2.4"
+"string-width@npm:^5.0.1, string-width@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "string-width@npm:5.1.2"
dependencies:
- call-bind: ^1.0.2
- define-properties: ^1.1.3
- es-abstract: ^1.18.0-next.2
- checksum: 81b9c5ebe9b24c16be560f02d13f98cb6000e638998e883bbab97fe3518dfbf16464ff76fd66979b5bce6ad689b468dad62afb36b5fbf8461a730c665b51b2de
+ eastasianwidth: ^0.2.0
+ emoji-regex: ^9.2.2
+ strip-ansi: ^7.0.1
+ checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193
+ languageName: node
+ linkType: hard
+
+"string.prototype.trim@npm:^1.2.9":
+ version: 1.2.9
+ resolution: "string.prototype.trim@npm:1.2.9"
+ dependencies:
+ call-bind: ^1.0.7
+ define-properties: ^1.2.1
+ es-abstract: ^1.23.0
+ es-object-atoms: ^1.0.0
+ checksum: ea2df6ec1e914c9d4e2dc856fa08228e8b1be59b59e50b17578c94a66a176888f417264bb763d4aac638ad3b3dad56e7a03d9317086a178078d131aa293ba193
languageName: node
linkType: hard
@@ -13454,6 +10865,17 @@ __metadata:
languageName: node
linkType: hard
+"string.prototype.trimend@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "string.prototype.trimend@npm:1.0.8"
+ dependencies:
+ call-bind: ^1.0.7
+ define-properties: ^1.2.1
+ es-object-atoms: ^1.0.0
+ checksum: cc3bd2de08d8968a28787deba9a3cb3f17ca5f9f770c91e7e8fa3e7d47f079bad70fadce16f05dda9f261788be2c6e84a942f618c3bed31e42abc5c1084f8dfd
+ languageName: node
+ linkType: hard
+
"string.prototype.trimstart@npm:^1.0.5":
version: 1.0.5
resolution: "string.prototype.trimstart@npm:1.0.5"
@@ -13465,6 +10887,17 @@ __metadata:
languageName: node
linkType: hard
+"string.prototype.trimstart@npm:^1.0.8":
+ version: 1.0.8
+ resolution: "string.prototype.trimstart@npm:1.0.8"
+ dependencies:
+ call-bind: ^1.0.7
+ define-properties: ^1.2.1
+ es-object-atoms: ^1.0.0
+ checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96
+ languageName: node
+ linkType: hard
+
"string_decoder@npm:^1.1.1":
version: 1.3.0
resolution: "string_decoder@npm:1.3.0"
@@ -13490,12 +10923,12 @@ __metadata:
languageName: node
linkType: hard
-"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1":
- version: 3.0.1
- resolution: "strip-ansi@npm:3.0.1"
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "strip-ansi@npm:6.0.1"
dependencies:
- ansi-regex: ^2.0.0
- checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465
+ ansi-regex: ^5.0.1
+ checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
languageName: node
linkType: hard
@@ -13517,21 +10950,12 @@ __metadata:
languageName: node
linkType: hard
-"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
- version: 6.0.1
- resolution: "strip-ansi@npm:6.0.1"
- dependencies:
- ansi-regex: ^5.0.1
- checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
- languageName: node
- linkType: hard
-
-"strip-bom@npm:^2.0.0":
- version: 2.0.0
- resolution: "strip-bom@npm:2.0.0"
+"strip-ansi@npm:^7.0.1":
+ version: 7.1.0
+ resolution: "strip-ansi@npm:7.1.0"
dependencies:
- is-utf8: ^0.2.0
- checksum: 08efb746bc67b10814cd03d79eb31bac633393a782e3f35efbc1b61b5165d3806d03332a97f362822cf0d4dd14ba2e12707fcff44fe1c870c48a063a0c9e4944
+ ansi-regex: ^6.0.1
+ checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d
languageName: node
linkType: hard
@@ -13583,13 +11007,6 @@ __metadata:
languageName: node
linkType: hard
-"supports-color@npm:^2.0.0":
- version: 2.0.0
- resolution: "supports-color@npm:2.0.0"
- checksum: 602538c5812b9006404370b5a4b885d3e2a1f6567d314f8b4a41974ffe7d08e525bf92ae0f9c7030e3b4c78e4e34ace55d6a67a74f1571bc205959f5972f88f0
- languageName: node
- linkType: hard
-
"supports-color@npm:^3.1.0":
version: 3.2.3
resolution: "supports-color@npm:3.2.3"
@@ -13643,26 +11060,6 @@ __metadata:
languageName: node
linkType: hard
-"sync-request@npm:^6.0.0":
- version: 6.1.0
- resolution: "sync-request@npm:6.1.0"
- dependencies:
- http-response-object: ^3.0.1
- sync-rpc: ^1.2.1
- then-request: ^6.0.0
- checksum: cc8438a6749f62fb501d022fae0e3af3ac4a9983f889f929c8721b328a1c3408b98ca218aad886785a02be2c34bd75eb1a5a2608bd1fcee3c8c099391ff53a11
- languageName: node
- linkType: hard
-
-"sync-rpc@npm:^1.2.1":
- version: 1.3.6
- resolution: "sync-rpc@npm:1.3.6"
- dependencies:
- get-port: ^3.1.0
- checksum: 4340974fb5641c2cadb9df18d6b791ed2327f28cf6d8a00c99ebc2278e37391e3f5e237596da2ff83d14d2147594c6f5b3b98a93b9327644db425d239dea172f
- languageName: node
- linkType: hard
-
"table-layout@npm:^1.0.2":
version: 1.0.2
resolution: "table-layout@npm:1.0.2"
@@ -13700,28 +11097,16 @@ __metadata:
languageName: node
linkType: hard
-"tape@npm:^4.6.3":
- version: 4.13.3
- resolution: "tape@npm:4.13.3"
- dependencies:
- deep-equal: ~1.1.1
- defined: ~1.0.0
- dotignore: ~0.1.2
- for-each: ~0.3.3
- function-bind: ~1.1.1
- glob: ~7.1.6
- has: ~1.0.3
- inherits: ~2.0.4
- is-regex: ~1.0.5
- minimist: ~1.2.5
- object-inspect: ~1.7.0
- resolve: ~1.17.0
- resumer: ~0.0.0
- string.prototype.trim: ~1.2.1
- through: ~2.3.8
- bin:
- tape: bin/tape
- checksum: a4f6870076519ac6a95dc536ff797f8bab0df71e7e6609771af44ec7674829f760ba0b76021bda8dfbb6660bf4b21931a4090a4cce97ad5a55bc4670701ff757
+"table@npm:^6.8.1":
+ version: 6.8.2
+ resolution: "table@npm:6.8.2"
+ dependencies:
+ ajv: ^8.0.1
+ lodash.truncate: ^4.4.2
+ slice-ansi: ^4.0.0
+ string-width: ^4.2.3
+ strip-ansi: ^6.0.1
+ checksum: 61188652f53a980d1759ca460ca8dea5c5322aece3210457e7084882f053c2b6a870041295e08a82cb1d676e31b056406845d94b0abf3c79a4b104777bec413b
languageName: node
linkType: hard
@@ -13754,23 +11139,6 @@ __metadata:
languageName: node
linkType: hard
-"test-value@npm:^2.1.0":
- version: 2.1.0
- resolution: "test-value@npm:2.1.0"
- dependencies:
- array-back: ^1.0.3
- typical: ^2.6.0
- checksum: ce41ef4100c9ac84630e78d1ca06706714587faf255e44296ace1fc7bf5b888c160b8c0229d31467252a3b2b57197965194391f6ee0c54f33e0b8e3af3a33a0c
- languageName: node
- linkType: hard
-
-"testrpc@npm:0.0.1":
- version: 0.0.1
- resolution: "testrpc@npm:0.0.1"
- checksum: e27778552df2d0b938b062fdf41d44557f0eb3de75903cb90b87909f55a82a6345dd13e40d1498e718272b4e5225872dca66da73646c35df1031486bb0ed0fda
- languageName: node
- linkType: hard
-
"text-table@npm:^0.2.0":
version: 0.2.0
resolution: "text-table@npm:0.2.0"
@@ -13778,36 +11146,7 @@ __metadata:
languageName: node
linkType: hard
-"then-request@npm:^6.0.0":
- version: 6.0.2
- resolution: "then-request@npm:6.0.2"
- dependencies:
- "@types/concat-stream": ^1.6.0
- "@types/form-data": 0.0.33
- "@types/node": ^8.0.0
- "@types/qs": ^6.2.31
- caseless: ~0.12.0
- concat-stream: ^1.6.0
- form-data: ^2.2.0
- http-basic: ^8.1.1
- http-response-object: ^3.0.1
- promise: ^8.0.0
- qs: ^6.4.0
- checksum: a24a4fc95dd8591966bf3752f024f5cd4d53c2b2c29b23b4e40c3322df6a432d939bc17b589d8e9d760b90e92ab860f6f361a4dfcfe3542019e1615fb51afccc
- languageName: node
- linkType: hard
-
-"through2@npm:^2.0.3":
- version: 2.0.5
- resolution: "through2@npm:2.0.5"
- dependencies:
- readable-stream: ~2.3.6
- xtend: ~4.0.1
- checksum: beb0f338aa2931e5660ec7bf3ad949e6d2e068c31f4737b9525e5201b824ac40cac6a337224856b56bd1ddd866334bbfb92a9f57cd6f66bc3f18d3d86fc0fe50
- languageName: node
- linkType: hard
-
-"through@npm:^2.3.6, through@npm:~2.3.4, through@npm:~2.3.8":
+"through@npm:^2.3.6":
version: 2.3.8
resolution: "through@npm:2.3.8"
checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd
@@ -13830,48 +11169,6 @@ __metadata:
languageName: node
linkType: hard
-"tmp@npm:0.1.0":
- version: 0.1.0
- resolution: "tmp@npm:0.1.0"
- dependencies:
- rimraf: ^2.6.3
- checksum: 6bab8431de9d245d4264bd8cd6bb216f9d22f179f935dada92a11d1315572c8eb7c3334201e00594b4708608bd536fad3a63bfb037e7804d827d66aa53a1afcd
- languageName: node
- linkType: hard
-
-"to-fast-properties@npm:^1.0.3":
- version: 1.0.3
- resolution: "to-fast-properties@npm:1.0.3"
- checksum: bd0abb58c4722851df63419de3f6d901d5118f0440d3f71293ed776dd363f2657edaaf2dc470e3f6b7b48eb84aa411193b60db8a4a552adac30de9516c5cc580
- languageName: node
- linkType: hard
-
-"to-object-path@npm:^0.3.0":
- version: 0.3.0
- resolution: "to-object-path@npm:0.3.0"
- dependencies:
- kind-of: ^3.0.2
- checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70
- languageName: node
- linkType: hard
-
-"to-readable-stream@npm:^1.0.0":
- version: 1.0.0
- resolution: "to-readable-stream@npm:1.0.0"
- checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5
- languageName: node
- linkType: hard
-
-"to-regex-range@npm:^2.1.0":
- version: 2.1.1
- resolution: "to-regex-range@npm:2.1.1"
- dependencies:
- is-number: ^3.0.0
- repeat-string: ^1.6.1
- checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320
- languageName: node
- linkType: hard
-
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
@@ -13881,18 +11178,6 @@ __metadata:
languageName: node
linkType: hard
-"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2":
- version: 3.0.2
- resolution: "to-regex@npm:3.0.2"
- dependencies:
- define-property: ^2.0.2
- extend-shallow: ^3.0.2
- regex-not: ^1.0.2
- safe-regex: ^1.1.0
- checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4
- languageName: node
- linkType: hard
-
"toidentifier@npm:1.0.1":
version: 1.0.1
resolution: "toidentifier@npm:1.0.1"
@@ -13900,7 +11185,7 @@ __metadata:
languageName: node
linkType: hard
-"tough-cookie@npm:^2.3.3, tough-cookie@npm:~2.5.0":
+"tough-cookie@npm:~2.5.0":
version: 2.5.0
resolution: "tough-cookie@npm:2.5.0"
dependencies:
@@ -13917,13 +11202,6 @@ __metadata:
languageName: node
linkType: hard
-"trim-right@npm:^1.0.1":
- version: 1.0.1
- resolution: "trim-right@npm:1.0.1"
- checksum: 9120af534e006a7424a4f9358710e6e707887b6ccf7ea69e50d6ac6464db1fe22268400def01752f09769025d480395159778153fb98d4a2f6f40d4cf5d4f3b6
- languageName: node
- linkType: hard
-
"ts-command-line-args@npm:^2.2.0":
version: 2.3.1
resolution: "ts-command-line-args@npm:2.3.1"
@@ -13938,22 +11216,6 @@ __metadata:
languageName: node
linkType: hard
-"ts-essentials@npm:^1.0.0":
- version: 1.0.4
- resolution: "ts-essentials@npm:1.0.4"
- checksum: 2e19bbe51203707ca732dcc6c3f238b2cf22bb9213d26ae0246c02325fb3e5f17c32505ac79c1bd538b7951a798155b07422e263a95cb295070a48233e45a1b5
- languageName: node
- linkType: hard
-
-"ts-essentials@npm:^6.0.3":
- version: 6.0.7
- resolution: "ts-essentials@npm:6.0.7"
- peerDependencies:
- typescript: ">=3.7.0"
- checksum: b47a1793df9ea997d50d2cc9155433952b189cfca0c534a6f3f3dce6aa782a37574d2179dee6d55ed918835aa17addda49619ff2bd2eb3e60e331db3ce30a79b
- languageName: node
- linkType: hard
-
"ts-essentials@npm:^7.0.1":
version: 7.0.3
resolution: "ts-essentials@npm:7.0.3"
@@ -13963,25 +11225,6 @@ __metadata:
languageName: node
linkType: hard
-"ts-generator@npm:^0.1.1":
- version: 0.1.1
- resolution: "ts-generator@npm:0.1.1"
- dependencies:
- "@types/mkdirp": ^0.5.2
- "@types/prettier": ^2.1.1
- "@types/resolve": ^0.0.8
- chalk: ^2.4.1
- glob: ^7.1.2
- mkdirp: ^0.5.1
- prettier: ^2.1.2
- resolve: ^1.8.1
- ts-essentials: ^1.0.0
- bin:
- ts-generator: dist/cli/run.js
- checksum: 3add2e76afd7a4d9d9aee1ff26477ee4e8b4cc740b35787f9ea780c11aefc88e6c7833837eacc12b944c1883680639dc9cc47fe173eff95c62112f3a41132146
- languageName: node
- linkType: hard
-
"ts-mocha@npm:^10.0.0":
version: 10.0.0
resolution: "ts-mocha@npm:10.0.0"
@@ -14074,13 +11317,27 @@ __metadata:
languageName: node
linkType: hard
-"tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3":
+"tslib@npm:2.4.0":
+ version: 2.4.0
+ resolution: "tslib@npm:2.4.0"
+ checksum: 8c4aa6a3c5a754bf76aefc38026134180c053b7bd2f81338cb5e5ebf96fefa0f417bff221592bf801077f5bf990562f6264fecbc42cd3309b33872cb6fc3b113
+ languageName: node
+ linkType: hard
+
+"tslib@npm:^1.11.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3":
version: 1.14.1
resolution: "tslib@npm:1.14.1"
checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd
languageName: node
linkType: hard
+"tslib@npm:^2.3.1, tslib@npm:^2.6.2":
+ version: 2.6.2
+ resolution: "tslib@npm:2.6.2"
+ checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad
+ languageName: node
+ linkType: hard
+
"tsort@npm:0.0.1":
version: 0.0.1
resolution: "tsort@npm:0.0.1"
@@ -14108,7 +11365,7 @@ __metadata:
languageName: node
linkType: hard
-"tweetnacl-util@npm:^0.15.0, tweetnacl-util@npm:^0.15.1":
+"tweetnacl-util@npm:^0.15.1":
version: 0.15.1
resolution: "tweetnacl-util@npm:0.15.1"
checksum: ae6aa8a52cdd21a95103a4cc10657d6a2040b36c7a6da7b9d3ab811c6750a2d5db77e8c36969e75fdee11f511aa2b91c552496c6e8e989b6e490e54aca2864fc
@@ -14122,7 +11379,7 @@ __metadata:
languageName: node
linkType: hard
-"tweetnacl@npm:^1.0.0, tweetnacl@npm:^1.0.3":
+"tweetnacl@npm:^1.0.3":
version: 1.0.3
resolution: "tweetnacl@npm:1.0.3"
checksum: e4a57cac188f0c53f24c7a33279e223618a2bfb5fea426231991652a13247bea06b081fd745d71291fcae0f4428d29beba1b984b1f1ce6f66b06a6d1ab90645c
@@ -14147,7 +11404,7 @@ __metadata:
languageName: node
linkType: hard
-"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5":
+"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8":
version: 4.0.8
resolution: "type-detect@npm:4.0.8"
checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15
@@ -14199,26 +11456,9 @@ __metadata:
languageName: node
linkType: hard
-"typechain@npm:^3.0.0":
- version: 3.0.0
- resolution: "typechain@npm:3.0.0"
- dependencies:
- command-line-args: ^4.0.7
- debug: ^4.1.1
- fs-extra: ^7.0.0
- js-sha3: ^0.8.0
- lodash: ^4.17.15
- ts-essentials: ^6.0.3
- ts-generator: ^0.1.1
- bin:
- typechain: ./dist/cli/cli.js
- checksum: a38aff5e89c41e20e2c3a1f7b5f04666dbc94b5592eba70ba7d1e0aeb49089d22ed3d35e55a0b0d1f0bfdcea9818157fa4ee3854ef818f46f6aa899520fe7c25
- languageName: node
- linkType: hard
-
-"typechain@npm:^8.1.0":
- version: 8.1.0
- resolution: "typechain@npm:8.1.0"
+"typechain@npm:^8.3.2":
+ version: 8.3.2
+ resolution: "typechain@npm:8.3.2"
dependencies:
"@types/prettier": ^2.1.1
debug: ^4.3.1
@@ -14234,7 +11474,59 @@ __metadata:
typescript: ">=4.3.0"
bin:
typechain: dist/cli/cli.js
- checksum: d8e05c4437d5ba54fd5dea28c20884c2aa259e911c6ffc9d1768a229633c661f378439e4b0a1a21f33372e8ed82adc324583381cde16f199af9440792a95da88
+ checksum: 146a1896fa93403404be78757790b0f95b5457efebcca16b61622e09c374d555ef4f837c1c4eedf77e03abc50276d96a2f33064ec09bb802f62d8cc2b13fce70
+ languageName: node
+ linkType: hard
+
+"typed-array-buffer@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "typed-array-buffer@npm:1.0.2"
+ dependencies:
+ call-bind: ^1.0.7
+ es-errors: ^1.3.0
+ is-typed-array: ^1.1.13
+ checksum: 02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b
+ languageName: node
+ linkType: hard
+
+"typed-array-byte-length@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "typed-array-byte-length@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.7
+ for-each: ^0.3.3
+ gopd: ^1.0.1
+ has-proto: ^1.0.3
+ is-typed-array: ^1.1.13
+ checksum: f65e5ecd1cf76b1a2d0d6f631f3ea3cdb5e08da106c6703ffe687d583e49954d570cc80434816d3746e18be889ffe53c58bf3e538081ea4077c26a41055b216d
+ languageName: node
+ linkType: hard
+
+"typed-array-byte-offset@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "typed-array-byte-offset@npm:1.0.2"
+ dependencies:
+ available-typed-arrays: ^1.0.7
+ call-bind: ^1.0.7
+ for-each: ^0.3.3
+ gopd: ^1.0.1
+ has-proto: ^1.0.3
+ is-typed-array: ^1.1.13
+ checksum: c8645c8794a621a0adcc142e0e2c57b1823bbfa4d590ad2c76b266aa3823895cf7afb9a893bf6685e18454ab1b0241e1a8d885a2d1340948efa4b56add4b5f67
+ languageName: node
+ linkType: hard
+
+"typed-array-length@npm:^1.0.6":
+ version: 1.0.6
+ resolution: "typed-array-length@npm:1.0.6"
+ dependencies:
+ call-bind: ^1.0.7
+ for-each: ^0.3.3
+ gopd: ^1.0.1
+ has-proto: ^1.0.3
+ is-typed-array: ^1.1.13
+ possible-typed-array-names: ^1.0.0
+ checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c
languageName: node
linkType: hard
@@ -14247,13 +11539,6 @@ __metadata:
languageName: node
linkType: hard
-"typedarray@npm:^0.0.6":
- version: 0.0.6
- resolution: "typedarray@npm:0.0.6"
- checksum: 33b39f3d0e8463985eeaeeacc3cb2e28bc3dfaf2a5ed219628c0b629d5d7b810b0eb2165f9f607c34871d5daa92ba1dc69f49051cf7d578b4cbd26c340b9d1b1
- languageName: node
- linkType: hard
-
"typescript@npm:^4.7.4":
version: 4.7.4
resolution: "typescript@npm:4.7.4"
@@ -14274,36 +11559,6 @@ __metadata:
languageName: node
linkType: hard
-"typewise-core@npm:^1.2, typewise-core@npm:^1.2.0":
- version: 1.2.0
- resolution: "typewise-core@npm:1.2.0"
- checksum: c21e83544546d1aba2f17377c25ae0eb571c2153b2e3705932515bef103dbe43e05d2286f238ad139341b1000da40583115a44cb5e69a2ef408572b13dab844b
- languageName: node
- linkType: hard
-
-"typewise@npm:^1.0.3":
- version: 1.0.3
- resolution: "typewise@npm:1.0.3"
- dependencies:
- typewise-core: ^1.2.0
- checksum: eb3452b1387df8bf8e3b620720d240425a50ce402d7c064c21ac4b5d88c551ee4d1f26cd649b8a17a6d06f7a3675733de841723f8e06bb3edabfeacc4924af4a
- languageName: node
- linkType: hard
-
-"typewiselite@npm:~1.0.0":
- version: 1.0.0
- resolution: "typewiselite@npm:1.0.0"
- checksum: 2e13a652c041680e9e37501129715f97c2ff2b8f52b5e82acd9355c070ca7c126633ff96d2ad03945254c271c0d1cf9f4956090c93ad750717e00d100cbd0c87
- languageName: node
- linkType: hard
-
-"typical@npm:^2.6.0, typical@npm:^2.6.1":
- version: 2.6.1
- resolution: "typical@npm:2.6.1"
- checksum: 6af04fefe50d90d3471f058b2cdc0f49b7436bdd605cd00acea7965926ff388a5a7d692ef144f45fccee6f8e896c065702ecc44b69057e2ce88c09e897c7d3a4
- languageName: node
- linkType: hard
-
"typical@npm:^4.0.0":
version: 4.0.0
resolution: "typical@npm:4.0.0"
@@ -14346,19 +11601,12 @@ __metadata:
languageName: node
linkType: hard
-"underscore@npm:1.9.1":
- version: 1.9.1
- resolution: "underscore@npm:1.9.1"
- checksum: bee6f587661a6a9ca2f77e611896141e0287af51d8ca6034b11d0d4163ddbdd181a9720078ddbe94d265b7694f4880bc7f4c2ad260cfb8985ee2f9adcf13df03
- languageName: node
- linkType: hard
-
-"undici@npm:^5.4.0":
- version: 5.20.0
- resolution: "undici@npm:5.20.0"
+"undici@npm:^5.14.0":
+ version: 5.28.4
+ resolution: "undici@npm:5.28.4"
dependencies:
- busboy: ^1.6.0
- checksum: 25412a785b2bd0b12f0bb0ec47ef00aa7a611ca0e570cb7af97cffe6a42e0d78e4b15190363a43771e9002defc3c6647c1b2d52201b3f64e2196819db4d150d3
+ "@fastify/busboy": ^2.0.0
+ checksum: a8193132d84540e4dc1895ecc8dbaa176e8a49d26084d6fbe48a292e28397cd19ec5d13bc13e604484e76f94f6e334b2bdc740d5f06a6e50c44072818d0c19f9
languageName: node
linkType: hard
@@ -14369,18 +11617,6 @@ __metadata:
languageName: node
linkType: hard
-"union-value@npm:^1.0.0":
- version: 1.0.1
- resolution: "union-value@npm:1.0.1"
- dependencies:
- arr-union: ^3.1.0
- get-value: ^2.0.6
- is-extendable: ^0.1.1
- set-value: ^2.0.1
- checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba
- languageName: node
- linkType: hard
-
"unique-filename@npm:^2.0.0":
version: 2.0.1
resolution: "unique-filename@npm:2.0.1"
@@ -14413,13 +11649,6 @@ __metadata:
languageName: node
linkType: hard
-"unorm@npm:^1.3.3":
- version: 1.6.0
- resolution: "unorm@npm:1.6.0"
- checksum: 9a86546256a45f855b6cfe719086785d6aada94f63778cecdecece8d814ac26af76cb6da70130da0a08b8803bbf0986e56c7ec4249038198f3de02607fffd811
- languageName: node
- linkType: hard
-
"unpipe@npm:1.0.0, unpipe@npm:~1.0.0":
version: 1.0.0
resolution: "unpipe@npm:1.0.0"
@@ -14434,16 +11663,15 @@ __metadata:
"@ensdomains/address-encoder": ^0.2.22
"@ensdomains/ens-contracts": ^0.0.21
"@ethereumjs/tx": ^4.0.1
- "@nomiclabs/hardhat-ethers": ^2.2.1
- "@nomiclabs/hardhat-etherscan": ^3.1.0
- "@nomiclabs/hardhat-solhint": ^2.0.1
- "@nomiclabs/hardhat-waffle": ^2.0.1
+ "@nomicfoundation/hardhat-chai-matchers": ^2.0.6
+ "@nomicfoundation/hardhat-ethers": ^3.0.0
+ "@nomicfoundation/hardhat-verify": ^1.1.0
+ "@nomiclabs/hardhat-solhint": ^3.0.1
"@openzeppelin/contracts-upgradeable": ^4.7.3
- "@openzeppelin/hardhat-defender": ^1.8.1
- "@openzeppelin/hardhat-upgrades": ^1.20.0
- "@openzeppelin/upgrades-core": ^1.19.1
- "@typechain/ethers-v5": ^10.1.0
- "@typechain/hardhat": ^6.1.2
+ "@openzeppelin/hardhat-upgrades": ^2.0.0
+ "@openzeppelin/upgrades-core": ^1.32.5
+ "@typechain/ethers-v6": ^0.5.0
+ "@typechain/hardhat": ^9.1.0
"@types/bip39": ^3.0.0
"@types/chai": ^4.3.3
"@types/debug": ^4.1.7
@@ -14468,44 +11696,36 @@ __metadata:
eslint-plugin-mocha-no-only: ^1.1.1
eslint-plugin-node: ^11.1.0
eslint-plugin-promise: ^6.1.1
- ethereum-waffle: 3.4.4
+ ethereumjs-block: ^1.7.1
+ ethereumjs-common: ^1.5.2
+ ethereumjs-tx: ^1.3.7
ethereumjs-util: ^7.1.0
- ethers: ^5.7.2
- ganache: ^7.4.0
- hardhat: ^2.11.2
+ ethers: ^6.1.0
+ ganache: ^7.9.2
+ hardhat: ~2.20.0
hardhat-abi-exporter: ^2.2.1
- hardhat-contract-sizer: ^2.6.1
- hardhat-gas-reporter: ^1.0.9
- hardhat-tracer: ^2.3.2
+ hardhat-contract-sizer: ^2.10.0
+ hardhat-gas-reporter: ^2.1.1
+ hardhat-tracer: ^2.8.1
hdkey: ^2.0.1
husky: ^8.0.1
lodash.merge: ^4.6.2
merkle-patricia-tree: ^4.0.0
mocha: ^10.0.0
prettier: ^2.3.0
- prettier-plugin-solidity: ^1.0.0-beta.24
+ prettier-plugin-solidity: ^1.3.1
solhint: ^3.3.7
solidity-coverage: ^0.8.4
tar: ^6.1.9
ts-mocha: ^10.0.0
ts-node: ^10.9.1
- typechain: ^8.1.0
+ typechain: ^8.3.2
typescript: ^4.7.4
web3: ^1.7.4
yargs: ^17.6.0
languageName: unknown
linkType: soft
-"unset-value@npm:^1.0.0":
- version: 1.0.0
- resolution: "unset-value@npm:1.0.0"
- dependencies:
- has-value: ^0.3.1
- isobject: ^3.0.0
- checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29
- languageName: node
- linkType: hard
-
"uri-js@npm:^4.2.2":
version: 4.4.1
resolution: "uri-js@npm:4.4.1"
@@ -14515,13 +11735,6 @@ __metadata:
languageName: node
linkType: hard
-"urix@npm:^0.1.0":
- version: 0.1.0
- resolution: "urix@npm:0.1.0"
- checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3
- languageName: node
- linkType: hard
-
"url-parse-lax@npm:^1.0.0":
version: 1.0.0
resolution: "url-parse-lax@npm:1.0.0"
@@ -14531,15 +11744,6 @@ __metadata:
languageName: node
linkType: hard
-"url-parse-lax@npm:^3.0.0":
- version: 3.0.0
- resolution: "url-parse-lax@npm:3.0.0"
- dependencies:
- prepend-http: ^2.0.0
- checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217
- languageName: node
- linkType: hard
-
"url-set-query@npm:^1.0.0":
version: 1.0.0
resolution: "url-set-query@npm:1.0.0"
@@ -14554,23 +11758,6 @@ __metadata:
languageName: node
linkType: hard
-"url@npm:^0.11.0":
- version: 0.11.0
- resolution: "url@npm:0.11.0"
- dependencies:
- punycode: 1.3.2
- querystring: 0.2.0
- checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90
- languageName: node
- linkType: hard
-
-"use@npm:^3.1.0":
- version: 3.1.1
- resolution: "use@npm:3.1.1"
- checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33
- languageName: node
- linkType: hard
-
"utf-8-validate@npm:5.0.7, utf-8-validate@npm:^5.0.2":
version: 5.0.7
resolution: "utf-8-validate@npm:5.0.7"
@@ -14581,7 +11768,17 @@ __metadata:
languageName: node
linkType: hard
-"utf8@npm:3.0.0, utf8@npm:^3.0.0":
+"utf-8-validate@npm:6.0.3":
+ version: 6.0.3
+ resolution: "utf-8-validate@npm:6.0.3"
+ dependencies:
+ node-gyp: latest
+ node-gyp-build: ^4.3.0
+ checksum: 5e21383c81ff7469c1912119ca69d07202d944c73ddd8a54b84dddcc546b939054e5101c78c294e494d206fe93bd43428adc635a0660816b3ec9c8ec89286ac4
+ languageName: node
+ linkType: hard
+
+"utf8@npm:3.0.0":
version: 3.0.0
resolution: "utf8@npm:3.0.0"
checksum: cb89a69ad9ab393e3eae9b25305b3ff08bebca9adc839191a34f90777eb2942f86a96369d2839925fea58f8f722f7e27031d697f10f5f39690f8c5047303e62d
@@ -14595,20 +11792,7 @@ __metadata:
languageName: node
linkType: hard
-"util.promisify@npm:^1.0.0":
- version: 1.1.1
- resolution: "util.promisify@npm:1.1.1"
- dependencies:
- call-bind: ^1.0.0
- define-properties: ^1.1.3
- for-each: ^0.3.3
- has-symbols: ^1.0.1
- object.getownpropertydescriptors: ^2.1.1
- checksum: ea371c30b90576862487ae4efd7182aa5855019549a4019d82629acc2709e8ccb0f38944403eebec622fff8ebb44ac3f46a52d745d5f543d30606132a4905f96
- languageName: node
- linkType: hard
-
-"util@npm:^0.12.0, util@npm:^0.12.5":
+"util@npm:^0.12.0":
version: 0.12.5
resolution: "util@npm:0.12.5"
dependencies:
@@ -14628,13 +11812,6 @@ __metadata:
languageName: node
linkType: hard
-"uuid@npm:2.0.1":
- version: 2.0.1
- resolution: "uuid@npm:2.0.1"
- checksum: e129e494e33cededdfc2cefbd63da966344b873bbfd3373a311b0acc2e7ab53d68b2515879444898867d84b863e44939e852484b9f3a54c4fd86d985a7dadb8d
- languageName: node
- linkType: hard
-
"uuid@npm:8.3.2, uuid@npm:^8.3.2":
version: 8.3.2
resolution: "uuid@npm:8.3.2"
@@ -14669,16 +11846,6 @@ __metadata:
languageName: node
linkType: hard
-"validate-npm-package-license@npm:^3.0.1":
- version: 3.0.4
- resolution: "validate-npm-package-license@npm:3.0.4"
- dependencies:
- spdx-correct: ^3.0.0
- spdx-expression-parse: ^3.0.0
- checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad
- languageName: node
- linkType: hard
-
"varint@npm:^5.0.0":
version: 5.0.2
resolution: "varint@npm:5.0.2"
@@ -14704,15 +11871,24 @@ __metadata:
languageName: node
linkType: hard
-"web3-bzz@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-bzz@npm:1.2.11"
+"viem@npm:2.7.14":
+ version: 2.7.14
+ resolution: "viem@npm:2.7.14"
dependencies:
- "@types/node": ^12.12.6
- got: 9.6.0
- swarm-js: ^0.1.40
- underscore: 1.9.1
- checksum: 45136e7282819260357efdcdf6d81cb7b733b212aa1e46f1bbcaff70a33a2e3f6558936e6e1fc3bf75bb4c3220f844fc6b9d5bfaaa68a2f6ed0e8c0b02c97523
+ "@adraffy/ens-normalize": 1.10.0
+ "@noble/curves": 1.2.0
+ "@noble/hashes": 1.3.2
+ "@scure/bip32": 1.3.2
+ "@scure/bip39": 1.2.1
+ abitype: 1.0.0
+ isows: 1.0.3
+ ws: 8.13.0
+ peerDependencies:
+ typescript: ">=5.0.4"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: a6bfb53a579345e92dfaadd47d38112a981284a645df45a6e7f68daff75a23d7af5458c7ee34fd36f9e7279ae3b5fc8165aea63d5323cec58ebe366b5fefe256
languageName: node
linkType: hard
@@ -14727,48 +11903,13 @@ __metadata:
languageName: node
linkType: hard
-"web3-core-helpers@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-core-helpers@npm:1.2.11"
- dependencies:
- underscore: 1.9.1
- web3-eth-iban: 1.2.11
- web3-utils: 1.2.11
- checksum: dac2ab85b8bec8251647d40f1dc5fcf30b2245de6d216328c51c9d619d12a567906c5bf8b542846552a56bf969edcfcb16fb67e3780461195df85cd506591f68
- languageName: node
- linkType: hard
-
"web3-core-helpers@npm:1.8.1":
version: 1.8.1
resolution: "web3-core-helpers@npm:1.8.1"
dependencies:
web3-eth-iban: 1.8.1
web3-utils: 1.8.1
- checksum: b06f69ad5b6155261f1160c740ffc993cc9fbbe270697cdd5bf708da2df42e8aa4fb5fba37a5c9d4c91c6ddf5f4ecd9272d317809a1acb92621d15ad29f61f7c
- languageName: node
- linkType: hard
-
-"web3-core-helpers@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-core-helpers@npm:1.8.2"
- dependencies:
- web3-eth-iban: 1.8.2
- web3-utils: 1.8.2
- checksum: 6575b26587aad005fb17658938fa07bc9769019e3451960130a00ac83500c27c35708eafd1382d9cc0a2ea0e39ca220d83a2ff28430ef67ea009768f3cbce03d
- languageName: node
- linkType: hard
-
-"web3-core-method@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-core-method@npm:1.2.11"
- dependencies:
- "@ethersproject/transactions": ^5.0.0-beta.135
- underscore: 1.9.1
- web3-core-helpers: 1.2.11
- web3-core-promievent: 1.2.11
- web3-core-subscriptions: 1.2.11
- web3-utils: 1.2.11
- checksum: 7533c5b8c42df49969b9c95a2c9cb0abcd55a304ef4b276a5cc43673d27ffd9767a0caabe09271979b5afd0f788a51416f7018bc704d734ad78846c68dba15a7
+ checksum: b06f69ad5b6155261f1160c740ffc993cc9fbbe270697cdd5bf708da2df42e8aa4fb5fba37a5c9d4c91c6ddf5f4ecd9272d317809a1acb92621d15ad29f61f7c
languageName: node
linkType: hard
@@ -14785,28 +11926,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-core-method@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-core-method@npm:1.8.2"
- dependencies:
- "@ethersproject/transactions": ^5.6.2
- web3-core-helpers: 1.8.2
- web3-core-promievent: 1.8.2
- web3-core-subscriptions: 1.8.2
- web3-utils: 1.8.2
- checksum: 99ef07865a9dc09615bd0fb1dab7a35851e24b5541f3daeda4f668911ad2540395a8bb358e52273740696bb159858d8c8e295f850afc6ab30d6c7a8be20b0223
- languageName: node
- linkType: hard
-
-"web3-core-promievent@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-core-promievent@npm:1.2.11"
- dependencies:
- eventemitter3: 4.0.4
- checksum: bd3661978f252ec0033881b32a5d4dec1bfeb7fb0f018d77c077c77b60c0f965215dcbd54c5fcbef739441dd7efbdbd6c9b20e275e05f5b4d2cee762937d95cc
- languageName: node
- linkType: hard
-
"web3-core-promievent@npm:1.8.1":
version: 1.8.1
resolution: "web3-core-promievent@npm:1.8.1"
@@ -14816,28 +11935,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-core-promievent@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-core-promievent@npm:1.8.2"
- dependencies:
- eventemitter3: 4.0.4
- checksum: 41ee45b313e735e205cf76de5255bbc013eb82c62474b3b4a282a2ca756114898bf4d40b1cb423ef487979d89dd282728d93d9b1afad1040cc449de3aba297f7
- languageName: node
- linkType: hard
-
-"web3-core-requestmanager@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-core-requestmanager@npm:1.2.11"
- dependencies:
- underscore: 1.9.1
- web3-core-helpers: 1.2.11
- web3-providers-http: 1.2.11
- web3-providers-ipc: 1.2.11
- web3-providers-ws: 1.2.11
- checksum: 84898bfec26319d06ccf7ae63821b7fbea8efc8a76015921530cc4eb85db39598c16598f1e51f95ed79146d7defafe7b924b5c6f6927fb2a153d01eb0862182c
- languageName: node
- linkType: hard
-
"web3-core-requestmanager@npm:1.8.1":
version: 1.8.1
resolution: "web3-core-requestmanager@npm:1.8.1"
@@ -14851,30 +11948,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-core-requestmanager@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-core-requestmanager@npm:1.8.2"
- dependencies:
- util: ^0.12.5
- web3-core-helpers: 1.8.2
- web3-providers-http: 1.8.2
- web3-providers-ipc: 1.8.2
- web3-providers-ws: 1.8.2
- checksum: 6a7374aade4dd32232fef929be5f2b2e4e0830cf7071d44343f3735a52ea0b4e64b4959297a3d1237716742406dafa61d16d5123d3c5288b21df00e06ea4555d
- languageName: node
- linkType: hard
-
-"web3-core-subscriptions@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-core-subscriptions@npm:1.2.11"
- dependencies:
- eventemitter3: 4.0.4
- underscore: 1.9.1
- web3-core-helpers: 1.2.11
- checksum: 7c8c07ea79fc9cf4ecb15ea37c5db38cc38e4b0545247d9ccc7ff6f4257565c03bcee569695a93abe02b8a98a6a9c227df880911ae324c0c6218a9571a3811f6
- languageName: node
- linkType: hard
-
"web3-core-subscriptions@npm:1.8.1":
version: 1.8.1
resolution: "web3-core-subscriptions@npm:1.8.1"
@@ -14885,31 +11958,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-core-subscriptions@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-core-subscriptions@npm:1.8.2"
- dependencies:
- eventemitter3: 4.0.4
- web3-core-helpers: 1.8.2
- checksum: e4bc9b4e62f4c5357e9111fe73edc4c880e2c3ad1476fbbd2d63851f05c3e60485aca9f524a5c1bd317953a68f8012f3c45343603b9785b131c6cbda0b46864d
- languageName: node
- linkType: hard
-
-"web3-core@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-core@npm:1.2.11"
- dependencies:
- "@types/bn.js": ^4.11.5
- "@types/node": ^12.12.6
- bignumber.js: ^9.0.0
- web3-core-helpers: 1.2.11
- web3-core-method: 1.2.11
- web3-core-requestmanager: 1.2.11
- web3-utils: 1.2.11
- checksum: 1793affddb4fa811f9781dc644b4017d95c6084a21bb866e0dc626f6d48bfc29eacf02237608b587ca49094e9342da878b64173510d99a6e9171f7a697e8cb36
- languageName: node
- linkType: hard
-
"web3-core@npm:1.8.1":
version: 1.8.1
resolution: "web3-core@npm:1.8.1"
@@ -14925,21 +11973,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-core@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-core@npm:1.8.2"
- dependencies:
- "@types/bn.js": ^5.1.0
- "@types/node": ^12.12.6
- bignumber.js: ^9.0.0
- web3-core-helpers: 1.8.2
- web3-core-method: 1.8.2
- web3-core-requestmanager: 1.8.2
- web3-utils: 1.8.2
- checksum: 362405c7b3646723724ebc134426ff7809cadc66eee1cf411c05d2d46a1c57e211c5d32d7da936d36e94f20e9afe54ad3a921fa7d90b77410fab8ef1a6203f7a
- languageName: node
- linkType: hard
-
"web3-eth-abi@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth-abi@npm:1.8.1"
@@ -14950,16 +11983,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-eth-abi@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-eth-abi@npm:1.8.2"
- dependencies:
- "@ethersproject/abi": ^5.6.3
- web3-utils: 1.8.2
- checksum: d593b42c5a63afaba88b947245594769df6aa1a2b2cba5a43fddb8e77791fc38da3238673d713d2ddfc3fc4aac91f7ec529bbc3ad8ea4e02995919a0c89cbb88
- languageName: node
- linkType: hard
-
"web3-eth-accounts@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth-accounts@npm:1.8.1"
@@ -14979,24 +12002,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-eth-accounts@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-eth-accounts@npm:1.8.2"
- dependencies:
- "@ethereumjs/common": 2.5.0
- "@ethereumjs/tx": 3.3.2
- eth-lib: 0.2.8
- ethereumjs-util: ^7.1.5
- scrypt-js: ^3.0.1
- uuid: ^9.0.0
- web3-core: 1.8.2
- web3-core-helpers: 1.8.2
- web3-core-method: 1.8.2
- web3-utils: 1.8.2
- checksum: 74e179a235b02553c862fc24ccf68be8999e4d67e931e94ee9bb969f9a850a82a8a0125e2004db587acb44cf80dda4ca04e196c0330f2c0b9a1f8af290fc813c
- languageName: node
- linkType: hard
-
"web3-eth-contract@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth-contract@npm:1.8.1"
@@ -15013,22 +12018,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-eth-contract@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-eth-contract@npm:1.8.2"
- dependencies:
- "@types/bn.js": ^5.1.0
- web3-core: 1.8.2
- web3-core-helpers: 1.8.2
- web3-core-method: 1.8.2
- web3-core-promievent: 1.8.2
- web3-core-subscriptions: 1.8.2
- web3-eth-abi: 1.8.2
- web3-utils: 1.8.2
- checksum: 7fc9111e350be1b1f3337deb258a88eb29e7ebfe7d3f1bae96fb7e925f991f2f18b69983ab16f9780e3447453bf42d891194499d3b875c11711a8f8c6a6751a4
- languageName: node
- linkType: hard
-
"web3-eth-ens@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth-ens@npm:1.8.1"
@@ -15045,32 +12034,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-eth-ens@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-eth-ens@npm:1.8.2"
- dependencies:
- content-hash: ^2.5.2
- eth-ens-namehash: 2.0.8
- web3-core: 1.8.2
- web3-core-helpers: 1.8.2
- web3-core-promievent: 1.8.2
- web3-eth-abi: 1.8.2
- web3-eth-contract: 1.8.2
- web3-utils: 1.8.2
- checksum: 4f1ec5a7006031ec0bce38204c88a2d43890809965f1b581964bb8c90f16d87dbbbbffd456de2d38dbe845001a6968de6160a9051a1c64b02d5a3acf109d8b0d
- languageName: node
- linkType: hard
-
-"web3-eth-iban@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-eth-iban@npm:1.2.11"
- dependencies:
- bn.js: ^4.11.9
- web3-utils: 1.2.11
- checksum: 1c28b3ad2cad2af0a76b051fe2c05ed933476eaa99f2c245862f66d4e3d56e60ad26cf55120513f78648ab1ff2b8a6b751e63448cdb01b53b542334bf148286f
- languageName: node
- linkType: hard
-
"web3-eth-iban@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth-iban@npm:1.8.1"
@@ -15081,30 +12044,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-eth-iban@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-eth-iban@npm:1.8.2"
- dependencies:
- bn.js: ^5.2.1
- web3-utils: 1.8.2
- checksum: 915cb79d90a5bbca4694df1a29583ea52ba4482fee95534a3ec28632a3e196dd01f50bb38ad8cbeb65abd109b76afda9b207675cb6a8184f633902afb4cbfbb5
- languageName: node
- linkType: hard
-
-"web3-eth-personal@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-eth-personal@npm:1.2.11"
- dependencies:
- "@types/node": ^12.12.6
- web3-core: 1.2.11
- web3-core-helpers: 1.2.11
- web3-core-method: 1.2.11
- web3-net: 1.2.11
- web3-utils: 1.2.11
- checksum: a754a16aaed1e97baf963f594b69c83bc4c1cf3f5b181b18720ce292583b4a1b70c7a5c22433679c3e66166773bb43731535d085db3bcfc72af48290553f5122
- languageName: node
- linkType: hard
-
"web3-eth-personal@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth-personal@npm:1.8.1"
@@ -15119,40 +12058,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-eth-personal@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-eth-personal@npm:1.8.2"
- dependencies:
- "@types/node": ^12.12.6
- web3-core: 1.8.2
- web3-core-helpers: 1.8.2
- web3-core-method: 1.8.2
- web3-net: 1.8.2
- web3-utils: 1.8.2
- checksum: e3104c554f4f2b37acb4ad7e2515921a5e9c96181ee78924e07c8fb38f61afa01100c3a8f5df65139062f43066a030a7da14829b71d9d0619b58e3a220a067f7
- languageName: node
- linkType: hard
-
-"web3-eth@npm:1.2.11":
- version: 1.8.2
- resolution: "web3-eth@npm:1.8.2"
- dependencies:
- web3-core: 1.8.2
- web3-core-helpers: 1.8.2
- web3-core-method: 1.8.2
- web3-core-subscriptions: 1.8.2
- web3-eth-abi: 1.8.2
- web3-eth-accounts: 1.8.2
- web3-eth-contract: 1.8.2
- web3-eth-ens: 1.8.2
- web3-eth-iban: 1.8.2
- web3-eth-personal: 1.8.2
- web3-net: 1.8.2
- web3-utils: 1.8.2
- checksum: cadf3dc062faba4cf9dfefe02fa2b9ffade49b337e7c46be96c1b38d5440112770b8a868449b14a89550dd474698b950e8b1b9f1b2bdb2f15332a6396dd0a4ed
- languageName: node
- linkType: hard
-
"web3-eth@npm:1.8.1":
version: 1.8.1
resolution: "web3-eth@npm:1.8.1"
@@ -15173,17 +12078,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-net@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-net@npm:1.2.11"
- dependencies:
- web3-core: 1.2.11
- web3-core-method: 1.2.11
- web3-utils: 1.2.11
- checksum: 76a99815699674709b869b60bf950d20167b999fe93f7d091b01ce3fd0e3dd9c30ef3519156c04eb01703791c049b19b295e6901dd41d208ea600149961f7ee6
- languageName: node
- linkType: hard
-
"web3-net@npm:1.8.1":
version: 1.8.1
resolution: "web3-net@npm:1.8.1"
@@ -15195,55 +12089,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-net@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-net@npm:1.8.2"
- dependencies:
- web3-core: 1.8.2
- web3-core-method: 1.8.2
- web3-utils: 1.8.2
- checksum: 1c0bd619806936c6118a2b13ceebc3d7d985e4ed320b9287a248d44ac5cd16d7e339b98fa5eff62840825d0bc716d237943edfc6a695f503cd0195d035c9a522
- languageName: node
- linkType: hard
-
-"web3-provider-engine@npm:14.2.1":
- version: 14.2.1
- resolution: "web3-provider-engine@npm:14.2.1"
- dependencies:
- async: ^2.5.0
- backoff: ^2.5.0
- clone: ^2.0.0
- cross-fetch: ^2.1.0
- eth-block-tracker: ^3.0.0
- eth-json-rpc-infura: ^3.1.0
- eth-sig-util: ^1.4.2
- ethereumjs-block: ^1.2.2
- ethereumjs-tx: ^1.2.0
- ethereumjs-util: ^5.1.5
- ethereumjs-vm: ^2.3.4
- json-rpc-error: ^2.0.0
- json-stable-stringify: ^1.0.1
- promise-to-callback: ^1.0.0
- readable-stream: ^2.2.9
- request: ^2.85.0
- semaphore: ^1.0.3
- ws: ^5.1.1
- xhr: ^2.2.0
- xtend: ^4.0.1
- checksum: 45441e22633184bd5f6ea645e20f99c8002b3b64d3e564cd9d0f65bad7f0755ad2cdf9a88fcac9585e908aacea28cc6e80c0939498ee4f4c6c49107d16e011bf
- languageName: node
- linkType: hard
-
-"web3-providers-http@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-providers-http@npm:1.2.11"
- dependencies:
- web3-core-helpers: 1.2.11
- xhr2-cookies: 1.1.0
- checksum: 64760032d68826865de084c31d81be70bebc54cd82138ef724da13b60f7b341d4c0c6716912616b928680756ea6f2cef42be7d16fa9dd143a09ac55701232193
- languageName: node
- linkType: hard
-
"web3-providers-http@npm:1.8.1":
version: 1.8.1
resolution: "web3-providers-http@npm:1.8.1"
@@ -15256,29 +12101,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-providers-http@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-providers-http@npm:1.8.2"
- dependencies:
- abortcontroller-polyfill: ^1.7.3
- cross-fetch: ^3.1.4
- es6-promise: ^4.2.8
- web3-core-helpers: 1.8.2
- checksum: 5f95ca0be78d7f8e96dec128a78b7a3b49d42143be77fede874f35b0c3ce3f0422e56ec3a21171be0df7adce1c1df06ee2b23f5ba8d673b411a62edf5acd4843
- languageName: node
- linkType: hard
-
-"web3-providers-ipc@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-providers-ipc@npm:1.2.11"
- dependencies:
- oboe: 2.1.4
- underscore: 1.9.1
- web3-core-helpers: 1.2.11
- checksum: 0fab2f824e4c7f080fee26b76c9c8448eb51abfd285a04f3c9efe92c3b9a8742096804ec02f56bc8297e375ea12f0f2205bb6c0ae376c44c005cdfeec65d0b7e
- languageName: node
- linkType: hard
-
"web3-providers-ipc@npm:1.8.1":
version: 1.8.1
resolution: "web3-providers-ipc@npm:1.8.1"
@@ -15289,28 +12111,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-providers-ipc@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-providers-ipc@npm:1.8.2"
- dependencies:
- oboe: 2.1.5
- web3-core-helpers: 1.8.2
- checksum: d143064e96223ca79cb751c5e1f10bb48c3181ec87d7f61127e05eb733c67075c98de4126db793b3cf36102dda39f3e9d63927e592c43373158373c17a8e252b
- languageName: node
- linkType: hard
-
-"web3-providers-ws@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-providers-ws@npm:1.2.11"
- dependencies:
- eventemitter3: 4.0.4
- underscore: 1.9.1
- web3-core-helpers: 1.2.11
- websocket: ^1.0.31
- checksum: 4a4c591c2bd9724748e9dba124e59048b91239aa7cd435394f2a1d8e7914132920a17e56bc646f46912844fcfbbc38333b7023ebec298af36106ec4814d2ff5c
- languageName: node
- linkType: hard
-
"web3-providers-ws@npm:1.8.1":
version: 1.8.1
resolution: "web3-providers-ws@npm:1.8.1"
@@ -15322,29 +12122,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-providers-ws@npm:1.8.2":
- version: 1.8.2
- resolution: "web3-providers-ws@npm:1.8.2"
- dependencies:
- eventemitter3: 4.0.4
- web3-core-helpers: 1.8.2
- websocket: ^1.0.32
- checksum: 45fb8e29b3111e0fea4ed6f83e28895d3b6bf151811a65002a04bc39c52b5e70324db4c35f00f842637e225a9d451519e4714f51c7cd518be52784dd0632bf8d
- languageName: node
- linkType: hard
-
-"web3-shh@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-shh@npm:1.2.11"
- dependencies:
- web3-core: 1.2.11
- web3-core-method: 1.2.11
- web3-core-subscriptions: 1.2.11
- web3-net: 1.2.11
- checksum: 64c4a1f03bc3975a2baff9fa6d89a0050a06f179f1ec4d6e28f480b761d0efe56a9a79a5a320821e1dd503e82d44e73dd69b883b9e69d96cced3f979e0a3f4ff
- languageName: node
- linkType: hard
-
"web3-shh@npm:1.8.1":
version: 1.8.1
resolution: "web3-shh@npm:1.8.1"
@@ -15357,22 +12134,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-utils@npm:1.2.11":
- version: 1.2.11
- resolution: "web3-utils@npm:1.2.11"
- dependencies:
- bn.js: ^4.11.9
- eth-lib: 0.2.8
- ethereum-bloom-filters: ^1.0.6
- ethjs-unit: 0.1.6
- number-to-bn: 1.7.0
- randombytes: ^2.1.0
- underscore: 1.9.1
- utf8: 3.0.0
- checksum: 1e43235963d5176e447b20b201a66fabccbe7bd4ef8bbb2edfa5ea80a41e8202a8e8f3db128b2a1662855a627a52d100e3207b81a739b937b5b3b4f9114c008f
- languageName: node
- linkType: hard
-
"web3-utils@npm:1.8.1":
version: 1.8.1
resolution: "web3-utils@npm:1.8.1"
@@ -15388,21 +12149,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-utils@npm:1.8.2, web3-utils@npm:^1.0.0-beta.31":
- version: 1.8.2
- resolution: "web3-utils@npm:1.8.2"
- dependencies:
- bn.js: ^5.2.1
- ethereum-bloom-filters: ^1.0.6
- ethereumjs-util: ^7.1.0
- ethjs-unit: 0.1.6
- number-to-bn: 1.7.0
- randombytes: ^2.1.0
- utf8: 3.0.0
- checksum: a6cda086d7bde4939fc55be8f1dc5040b4cacd9205ac2ac07f37d14305214679e030af7814a3e97f6fabf2901e3452cd0dc8ce7c1cdd8bce4d0d4bae72c50ad9
- languageName: node
- linkType: hard
-
"web3-utils@npm:^1.3.6":
version: 1.10.2
resolution: "web3-utils@npm:1.10.2"
@@ -15419,21 +12165,6 @@ __metadata:
languageName: node
linkType: hard
-"web3@npm:1.2.11":
- version: 1.2.11
- resolution: "web3@npm:1.2.11"
- dependencies:
- web3-bzz: 1.2.11
- web3-core: 1.2.11
- web3-eth: 1.2.11
- web3-eth-personal: 1.2.11
- web3-net: 1.2.11
- web3-shh: 1.2.11
- web3-utils: 1.2.11
- checksum: c4fa6ddaddc2de31c561590eb3703e9446c0a9bd87155f536fd72c3c22337056bbd045baf36fec6152e58ae67e552fffad29e794030cd87634becb99a079e91f
- languageName: node
- linkType: hard
-
"web3@npm:^1.7.4":
version: 1.8.1
resolution: "web3@npm:1.8.1"
@@ -15456,21 +12187,7 @@ __metadata:
languageName: node
linkType: hard
-"websocket@npm:1.0.32":
- version: 1.0.32
- resolution: "websocket@npm:1.0.32"
- dependencies:
- bufferutil: ^4.0.1
- debug: ^2.2.0
- es5-ext: ^0.10.50
- typedarray-to-buffer: ^3.1.5
- utf-8-validate: ^5.0.2
- yaeti: ^0.0.6
- checksum: a29777a1942bf802f955782c7cf948797d19731a911b81adb957873e74b1d5356c621f217a972b075ecf04417a76897ea98dbfc19394007c4cf5e97cd4d494ac
- languageName: node
- linkType: hard
-
-"websocket@npm:^1.0.31, websocket@npm:^1.0.32":
+"websocket@npm:^1.0.32":
version: 1.0.34
resolution: "websocket@npm:1.0.34"
dependencies:
@@ -15484,13 +12201,6 @@ __metadata:
languageName: node
linkType: hard
-"whatwg-fetch@npm:^2.0.4":
- version: 2.0.4
- resolution: "whatwg-fetch@npm:2.0.4"
- checksum: de7c65a68d7d62e2f144a6b30293370b3ad82b65ebcd68f2ac8e8bbe7ede90febd98ba9486b78c1cbc950e0e8838fa5c2727f939899ab3fc7b71a04be52d33a5
- languageName: node
- linkType: hard
-
"whatwg-url@npm:^5.0.0":
version: 5.0.0
resolution: "whatwg-url@npm:5.0.0"
@@ -15514,13 +12224,6 @@ __metadata:
languageName: node
linkType: hard
-"which-module@npm:^1.0.0":
- version: 1.0.0
- resolution: "which-module@npm:1.0.0"
- checksum: 98434f7deb36350cb543c1f15612188541737e1f12d39b23b1c371dff5cf4aa4746210f2bdec202d5fe9da8682adaf8e3f7c44c520687d30948cfc59d5534edb
- languageName: node
- linkType: hard
-
"which-module@npm:^2.0.0":
version: 2.0.0
resolution: "which-module@npm:2.0.0"
@@ -15528,6 +12231,19 @@ __metadata:
languageName: node
linkType: hard
+"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15":
+ version: 1.1.15
+ resolution: "which-typed-array@npm:1.1.15"
+ dependencies:
+ available-typed-arrays: ^1.0.7
+ call-bind: ^1.0.7
+ for-each: ^0.3.3
+ gopd: ^1.0.1
+ has-tostringtag: ^1.0.2
+ checksum: 65227dcbfadf5677aacc43ec84356d17b5500cb8b8753059bb4397de5cd0c2de681d24e1a7bd575633f976a95f88233abfd6549c2105ef4ebd58af8aa1807c75
+ languageName: node
+ linkType: hard
+
"which-typed-array@npm:^1.1.2":
version: 1.1.8
resolution: "which-typed-array@npm:1.1.8"
@@ -15582,12 +12298,12 @@ __metadata:
languageName: node
linkType: hard
-"window-size@npm:^0.2.0":
- version: 0.2.0
- resolution: "window-size@npm:0.2.0"
- bin:
- window-size: cli.js
- checksum: a85e2acf156cfa194301294809867bdadd8a48ee5d972d9fa8e3e1b3420a1d0201b13ac8eb0348a0d14bbf2c3316565b6a749749c2384c5d286caf8a064c4f90
+"widest-line@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "widest-line@npm:3.1.0"
+ dependencies:
+ string-width: ^4.0.0
+ checksum: 03db6c9d0af9329c37d74378ff1d91972b12553c7d72a6f4e8525fe61563fa7adb0b9d6e8d546b7e059688712ea874edd5ded475999abdeedf708de9849310e0
languageName: node
linkType: hard
@@ -15622,13 +12338,14 @@ __metadata:
languageName: node
linkType: hard
-"wrap-ansi@npm:^2.0.0":
- version: 2.1.0
- resolution: "wrap-ansi@npm:2.1.0"
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "wrap-ansi@npm:7.0.0"
dependencies:
- string-width: ^1.0.1
- strip-ansi: ^3.0.1
- checksum: 2dacd4b3636f7a53ee13d4d0fe7fa2ed9ad81e9967e17231924ea88a286ec4619a78288de8d41881ee483f4449ab2c0287cde8154ba1bd0126c10271101b2ee3
+ ansi-styles: ^4.0.0
+ string-width: ^4.1.0
+ strip-ansi: ^6.0.0
+ checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b
languageName: node
linkType: hard
@@ -15643,14 +12360,14 @@ __metadata:
languageName: node
linkType: hard
-"wrap-ansi@npm:^7.0.0":
- version: 7.0.0
- resolution: "wrap-ansi@npm:7.0.0"
+"wrap-ansi@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "wrap-ansi@npm:8.1.0"
dependencies:
- ansi-styles: ^4.0.0
- string-width: ^4.1.0
- strip-ansi: ^6.0.0
- checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b
+ ansi-styles: ^6.1.0
+ string-width: ^5.0.1
+ strip-ansi: ^7.0.1
+ checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238
languageName: node
linkType: hard
@@ -15685,6 +12402,36 @@ __metadata:
languageName: node
linkType: hard
+"ws@npm:8.13.0":
+ version: 8.13.0
+ resolution: "ws@npm:8.13.0"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ">=5.0.2"
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c
+ languageName: node
+ linkType: hard
+
+"ws@npm:8.5.0":
+ version: 8.5.0
+ resolution: "ws@npm:8.5.0"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: 76f2f90e40344bf18fd544194e7067812fb1372b2a37865678d8f12afe4b478ff2ebc0c7c0aff82cd5e6b66fc43d889eec0f1865c2365d8f7a66d92da7744a77
+ languageName: node
+ linkType: hard
+
"ws@npm:^3.0.0":
version: 3.3.3
resolution: "ws@npm:3.3.3"
@@ -15696,15 +12443,6 @@ __metadata:
languageName: node
linkType: hard
-"ws@npm:^5.1.1":
- version: 5.2.2
- resolution: "ws@npm:5.2.2"
- dependencies:
- async-limiter: ~1.0.0
- checksum: 3da93525921e6098aa9b6a370745ef3de9bb3f00427ecbb4755b671fce4810eb21cc1c80847fb639635ac72f0bb08d49b83a4a74896daf2f79e864d8cead1e13
- languageName: node
- linkType: hard
-
"ws@npm:^7.4.6":
version: 7.5.1
resolution: "ws@npm:7.5.1"
@@ -15744,16 +12482,7 @@ __metadata:
languageName: node
linkType: hard
-"xhr2-cookies@npm:1.1.0":
- version: 1.1.0
- resolution: "xhr2-cookies@npm:1.1.0"
- dependencies:
- cookiejar: ^2.1.1
- checksum: 6a9fc45f3490cc53e6a308bd7164dab07ecb94f6345e78951ed4a1e8f8c4c7707a1b039a6b4ef7c9d611d9465d6f94d7d4260c43bc34eed8d6f9210a775eb719
- languageName: node
- linkType: hard
-
-"xhr@npm:^2.0.4, xhr@npm:^2.2.0, xhr@npm:^2.3.3":
+"xhr@npm:^2.0.4, xhr@npm:^2.3.3":
version: 2.6.0
resolution: "xhr@npm:2.6.0"
dependencies:
@@ -15765,14 +12494,7 @@ __metadata:
languageName: node
linkType: hard
-"xmlhttprequest@npm:1.8.0":
- version: 1.8.0
- resolution: "xmlhttprequest@npm:1.8.0"
- checksum: c891cf0d7884b4f5cce835aa01f1965727cd352cbd2d7a2e0605bf11ec99ae2198364cca54656ec8b2581a5704dee6c2bf9911922a0ff2a71b613455d32e81b7
- languageName: node
- linkType: hard
-
-"xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:^4.0.2, xtend@npm:~4.0.0, xtend@npm:~4.0.1":
+"xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:^4.0.2, xtend@npm:~4.0.0":
version: 4.0.2
resolution: "xtend@npm:4.0.2"
checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a
@@ -15788,13 +12510,6 @@ __metadata:
languageName: node
linkType: hard
-"y18n@npm:^3.2.1":
- version: 3.2.2
- resolution: "y18n@npm:3.2.2"
- checksum: 6154fd7544f8bbf5b18cdf77692ed88d389be49c87238ecb4e0d6a5276446cd2a5c29cc4bdbdddfc7e4e498b08df9d7e38df4a1453cf75eecfead392246ea74a
- languageName: node
- linkType: hard
-
"y18n@npm:^4.0.0":
version: 4.0.3
resolution: "y18n@npm:4.0.3"
@@ -15816,7 +12531,7 @@ __metadata:
languageName: node
linkType: hard
-"yallist@npm:^3.0.0, yallist@npm:^3.0.2, yallist@npm:^3.0.3":
+"yallist@npm:^3.0.0, yallist@npm:^3.0.3":
version: 3.1.1
resolution: "yallist@npm:3.1.1"
checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d
@@ -15847,16 +12562,6 @@ __metadata:
languageName: node
linkType: hard
-"yargs-parser@npm:^2.4.1":
- version: 2.4.1
- resolution: "yargs-parser@npm:2.4.1"
- dependencies:
- camelcase: ^3.0.0
- lodash.assign: ^4.0.6
- checksum: f57946a93a9e0986fccbc7999a3fc8179d4693e4551ef0ace3d599c38ec004a3783efb9eed9fa5d738b30db1cfa1d3a07f4dd6ae060cfce6fe61c3ae7b7a347b
- languageName: node
- linkType: hard
-
"yargs-parser@npm:^20.2.2":
version: 20.2.7
resolution: "yargs-parser@npm:20.2.7"
@@ -15942,28 +12647,6 @@ __metadata:
languageName: node
linkType: hard
-"yargs@npm:^4.7.1":
- version: 4.8.1
- resolution: "yargs@npm:4.8.1"
- dependencies:
- cliui: ^3.2.0
- decamelize: ^1.1.1
- get-caller-file: ^1.0.1
- lodash.assign: ^4.0.3
- os-locale: ^1.4.0
- read-pkg-up: ^1.0.1
- require-directory: ^2.1.1
- require-main-filename: ^1.0.1
- set-blocking: ^2.0.0
- string-width: ^1.0.1
- which-module: ^1.0.0
- window-size: ^0.2.0
- y18n: ^3.2.1
- yargs-parser: ^2.4.1
- checksum: 5d0a45dceaf8cff1c6a7164b2c944755a09cced3cb1d585bbc79ffed758ef9f9b54ead0879e3dacfc696ccd15fec9e6e29183c24517d7f578b47cd0614a3851d
- languageName: node
- linkType: hard
-
"yn@npm:3.1.1":
version: 3.1.1
resolution: "yn@npm:3.1.1"