diff --git a/.eslintrc b/.eslintrc index dc33deb71..e1391109b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -27,6 +27,7 @@ "@typescript-eslint/no-explicit-any": 0, "@typescript-eslint/camelcase": 0, "@typescript-eslint/explicit-function-return-type": 0, - "@typescript-eslint/no-var-requires": 0 + "@typescript-eslint/no-var-requires": 0, + "@typescript-eslint/ban-ts-comment": 0 } } diff --git a/.husky/pre-commit b/.husky/pre-commit index f37a20cb6..ddb0fdc45 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -yarn pretty:check && yarn lint:check +yarn lint:check && yarn pretty:check diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..da2d3988d --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +14 \ No newline at end of file diff --git a/README.md b/README.md index 711f21249..f14bb9de5 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :---------------------------- | | [`@airswap/swap`](/source/swap) | [![npm](https://img.shields.io/npm/v/@airswap/swap)](https://www.npmjs.com/package/@airswap/swap) | Atomic Token Swap | | [`@airswap/swap-erc20`](/source/swap-erc20) | [![npm](https://img.shields.io/npm/v/@airswap/swap-erc20)](https://www.npmjs.com/package/@airswap/swap-erc20) | Atomic Token Swap (ERC20) | -| [`@airswap/maker-registry`](/source/maker-registry) | [![npm](https://img.shields.io/npm/v/@airswap/maker-registry)](https://www.npmjs.com/package/@airswap/maker-registry) | Maker Discovery | +| [`@airswap/registry`](/source/registry) | [![npm](https://img.shields.io/npm/v/@airswap/registry)](https://www.npmjs.com/package/@airswap/registry) | Server Discovery | | [`@airswap/indexer-registry`](/source/indexer-registry) | [![npm](https://img.shields.io/npm/v/@airswap/indexer-registry)](https://www.npmjs.com/package/@airswap/indexer-registry) | Indexer Discovery | | [`@airswap/staking`](/source/staking) | [![npm](https://img.shields.io/npm/v/@airswap/staking)](https://www.npmjs.com/package/@airswap/staking) | Staking for Participants | | [`@airswap/pool`](/source/pool) | [![npm](https://img.shields.io/npm/v/@airswap/pool)](https://www.npmjs.com/package/@airswap/pool) | Rewards Pool for Participants | @@ -45,6 +45,49 @@ | `yarn lint:fix` | Run eslint for all JavaScript code. | | `yarn pretty:fix` | Run prettier for all JavaScript code. | +## Branching + +Flow for contracts and associated tools: +Branch from Develop; Merge Feature → Develop → Beta → Main + +Flow for tool updates (not contracts): +Branch from Main; Merge Feature → Main → Develop + +## Versioning + +- Major versions include breaking changes. +- Minor versions do not include breaking changes and may include additional functionality. +- Dependencies on fellow @airswap packages should use caret semver. + +## Process + +**Regular development process for a complete release** + +1. New work and features are cut from and merged to "develop" + + 1. Cut feature branches from develop + 2. Merge feature branches into develop (Squash and Merge) + +2. Merge "develop" into "beta" to publish beta packages. (Semver: x.x.x-beta.x) + + 1. Merge develop into beta (Merge Commit): this will publish NPM with "beta" tag. + 2. Tag beta release from beta branch. (x.x.x-beta.x) + 3. Share tagged release with auditors if auditing. + +3. Merge "develop" into "main" to publish latest packages. (Semver: x.x.x) + + 1. Merge develop into main (Merge Commit): this will publish NPM with "latest" tag. + 2. Merge main into beta: this will update the beta with latest. + 3. Tag release from main branch. (x.x.x) + +Each `deploys.js` must be limited to contracts deployed from that package version. + +**Individual package features or patches** + +1. Cut a feature or fix branch from main. +2. Merge fix into main (Squash and Merge): this will publish to NPM with "latest" tag. +3. Merge main into develop. + ## Deploying and Verifying Each package has commands `yarn deploy` and `yarn verify`. Each command takes a `--network` flag. For example: diff --git a/hardhat.config.js b/hardhat.config.js index 6a8ad4e66..e32e865a0 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -5,62 +5,77 @@ require('@nomiclabs/hardhat-waffle') require('@nomiclabs/hardhat-etherscan') require('solidity-coverage') +const { ChainIds, apiUrls, explorerUrls } = require('@airswap/constants') + /** * @type import('hardhat/config').HardhatUserConfig */ module.exports = { networks: { goerli: { - url: 'https://goerli.infura.io/v3/' + process.env.INFURA_API_KEY, + url: apiUrls[ChainIds.GOERLI] + process.env.INFURA_API_KEY, accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, mainnet: { - url: 'https://mainnet.infura.io/v3/' + process.env.INFURA_API_KEY, + url: apiUrls[ChainIds.MAINNET] + process.env.INFURA_API_KEY, accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, bsctestnet: { - url: 'https://data-seed-prebsc-1-s1.binance.org:8545/', + url: apiUrls[ChainIds.BSCTESTNET], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, bsc: { - url: 'https://bsc-dataseed.binance.org/', + url: apiUrls[ChainIds.BSC], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, fuji: { - url: 'https://api.avax-test.network/ext/bc/C/rpc', + url: apiUrls[ChainIds.FUJI], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, avalanche: { - url: 'https://api.avax.network/ext/bc/C/rpc', + url: apiUrls[ChainIds.AVALANCHE], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, mumbai: { - url: 'https://rpc-mumbai.maticvigil.com', + url: apiUrls[ChainIds.MUMBAI], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, polygon: { - url: 'https://polygon-rpc.com/', + url: apiUrls[ChainIds.POLYGON], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, arbitrum: { - url: 'https://arb1.arbitrum.io/rpc', + url: apiUrls[ChainIds.ARBITRUM], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, arbitrumgoerli: { - url: 'https://goerli-rollup.arbitrum.io/rpc', + url: apiUrls[ChainIds.ARBITRUMGOERLI], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, rsk: { - url: 'https://public-node.rsk.co', + url: apiUrls[ChainIds.RSK], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, rsktestnet: { - url: 'https://public-node.testnet.rsk.co/', + url: apiUrls[ChainIds.RSKTESTNET], + accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, + }, + linea: { + url: apiUrls[ChainIds.LINEA], accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : undefined, }, }, solidity: { compilers: [ + { + version: '0.5.16', + settings: { + optimizer: { + enabled: true, + runs: 999999, + }, + }, + }, { version: '0.8.17', settings: { @@ -85,22 +100,31 @@ module.exports = { avalancheFujiTestnet: process.env.SNOWTRACE_API_KEY, polygonMumbai: process.env.POLYGONSCAN_API_KEY, rsk: process.env.BLOCKSCOUT_API_KEY, + linea: process.env.BLOCKSCOUT_API_KEY, }, customChains: [ { network: 'rsk', chainId: 30, urls: { - apiURL: 'https://blockscout.com/rsk/mainnet/api', - browserURL: 'https://blockscout.com/rsk/mainnet', + apiURL: apiUrls[ChainIds.RSK], + browserURL: explorerUrls[ChainIds.RSK], + }, + }, + { + network: 'linea', + chainId: 59140, + urls: { + apiURL: apiUrls[ChainIds.LINEA], + browserURL: explorerUrls[ChainIds.LINEA], }, }, { network: 'arbitrumGoerli', chainId: 421613, urls: { - apiURL: 'https://api-goerli.arbiscan.io/api', - browserURL: 'https://goerli.arbiscan.io', + apiURL: apiUrls[ChainIds.ARBITRUMGOERLI], + browserURL: explorerUrls[ChainIds.ARBITRUMGOERLI], }, }, ], diff --git a/package.json b/package.json index c697c6add..eb33aed05 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "compile": "lerna run compile", "lint:check": "yarn eslint . --ext .js,.ts", "lint:fix": "yarn eslint . --ext .js,.ts --fix", - "test": "yarn compile && lerna run test:unit", + "test": "lerna run test:unit", "prepare": "husky install", "pretty:check": "prettier --check \"./**/*.sol\" \"./**/*.ts\" \"./**/*.js\"", "pretty:fix": "prettier --write \"./**/*.sol\" \"./**/*.ts\" \"./**/*.js\"" @@ -28,8 +28,10 @@ "@nomiclabs/hardhat-waffle": "^2.0.3", "@typechain/ethers-v5": "^10.2.0", "@typechain/hardhat": "^6.1.5", - "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.45.1", + "@types/mocha": "^10.0.1", + "@types/node": "^18.15.11", + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", "chai": "^4.3.6", "dotenv": "^16.0.1", "eslint": "^8.20.0", @@ -39,18 +41,17 @@ "ethers": "^5.6.9", "hardhat": "^2.12.7", "husky": "^8.0.1", - "lerna": "^5.2.0", - "nx": "^14.4.3", + "lerna": "^6.6.1", + "mocha": "^10.2.0", + "nx": "^15.9.2", "prettier": "^2.8.4", "prettier-plugin-solidity": "^1.1.2", "solidity-coverage": "^0.8.2", + "ts-node": "^10.9.1", "typechain": "^8.1.1", - "typescript": "^4.8.4" + "typescript": "^5.0.4" }, "engines": { - "node": ">=14" - }, - "volta": { - "node": "16.15.1" + "node": ">= 14" } } diff --git a/source/balances/README.md b/source/balances/README.md new file mode 100644 index 000000000..2b03417b0 --- /dev/null +++ b/source/balances/README.md @@ -0,0 +1,35 @@ +# BalanceChecker + +[AirSwap](https://www.airswap.io/) is a peer-to-peer trading network for Ethereum tokens. This package contains source code and tests for a basic ERC20 balance and allowance aggregator. + +[![Discord](https://img.shields.io/discord/590643190281928738.svg)](https://discord.gg/ecQbV7H) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +![Twitter Follow](https://img.shields.io/twitter/follow/airswap?style=social) + +## Resources + +- Docs → https://docs.airswap.io/ +- Website → https://www.airswap.io/ +- Blog → https://blog.airswap.io/ +- Support → https://support.airswap.io/ + +## Usage + +:warning: This package is under active development. The [BalanceChecker](./contracts/BalanceChecker.sol) contract is deployed; see [deploys.js](./deploys.js) for latest. For all AirSwap contract deployments see [Deployed Contracts](https://docs.airswap.io/system/contract-deployments). + +## Commands + +| Command | Description | +| :------------- | :-------------------------------------- | +| `yarn` | Install dependencies | +| `yarn clean` | Delete the contract `build` folder | +| `yarn compile` | Compile all contracts to `build` folder | +| `yarn test` | Run all contract tests in `test` folder | + +## Running Tests + +:bulb: Prior to testing locally, run `yarn compile` in the `airswap-protocols` project root to build required artifacts. Then run an instance of `ganache-cli` before running `yarn test` in another shell from the root repository. + +``` +yarn ganache +``` diff --git a/source/balances/contracts/BalanceChecker.sol b/source/balances/contracts/BalanceChecker.sol new file mode 100644 index 000000000..10bde221d --- /dev/null +++ b/source/balances/contracts/BalanceChecker.sol @@ -0,0 +1,215 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.17; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; + +/** + * @title BalanceChecker: Batch ERC-20 allowance and balance calls + */ +contract BalanceChecker is Ownable { + using SafeERC20 for IERC20; + using Address for address; + + /** + * @notice Check the token balances of a wallet for multiple tokens + * @dev return array and will fail if large token arrays are inputted + * @dev Returns array of token balances in base units + * @param userAddress address + * @param tokenAddresses address[] + * @return uint256[] token balance array if possible + */ + function walletBalances( + address userAddress, + address[] calldata tokenAddresses + ) external view returns (uint256[] memory) { + require(tokenAddresses.length > 0); + uint256[] memory balances = new uint256[](tokenAddresses.length); + + for (uint256 i = 0; i < tokenAddresses.length; i++) { + if (tokenAddresses[i] != address(0x0)) { + balances[i] = tokenBalance(userAddress, tokenAddresses[i]); + } else { + balances[i] = userAddress.balance; + } + } + return balances; + } + + /** + * @notice Check the token allowances of a wallet for multiple tokens + * @dev return array and will fail if large token arrays are inputted + * @dev Returns array of token allowances in base units + * @param userAddress address + * @param spenderAddress address + * @param tokenAddresses address[] + * @return uint256[] token allowances array if possible + */ + function walletAllowances( + address userAddress, + address spenderAddress, + address[] calldata tokenAddresses + ) external view returns (uint256[] memory) { + require(tokenAddresses.length > 0); + uint256[] memory allowances = new uint256[](tokenAddresses.length); + + for (uint256 i = 0; i < tokenAddresses.length; i++) { + allowances[i] = tokenAllowance( + userAddress, + spenderAddress, + tokenAddresses[i] + ); + } + return allowances; + } + + /** + * @notice Check the token allowances of multiple wallets for multiple tokens + * @dev return array and will fail if large arrays are inputted + * @dev Returns array of token allowances in base units + * @param userAddresses address[] + * @param spenderAddress address + * @param tokenAddresses address[] + * @return uint256[] token allowances array if possible + */ + function allAllowancesForManyAccounts( + address[] calldata userAddresses, + address spenderAddress, + address[] calldata tokenAddresses + ) external view returns (uint256[] memory) { + uint256[] memory allowances = new uint256[]( + tokenAddresses.length * userAddresses.length + ); + + for (uint256 user = 0; user < userAddresses.length; user++) { + for (uint256 token = 0; token < tokenAddresses.length; token++) { + allowances[(user * tokenAddresses.length) + token] = tokenAllowance( + userAddresses[user], + spenderAddress, + tokenAddresses[token] + ); + } + } + return allowances; + } + + /** + * @notice Check the token balances of multiple wallets for multiple tokens + * @dev return array and will fail if large arrays are inputted + * @dev Returns array of token balances in base units + * @param userAddresses address[] + * @param tokenAddresses address[] + * @return uint256[] token allowances array if possible + */ + function allBalancesForManyAccounts( + address[] calldata userAddresses, + address[] calldata tokenAddresses + ) external view returns (uint256[] memory) { + uint256[] memory balances = new uint256[]( + tokenAddresses.length * userAddresses.length + ); + for (uint256 user = 0; user < userAddresses.length; user++) { + for (uint256 token = 0; token < tokenAddresses.length; token++) { + if (tokenAddresses[token] != address(0x0)) { + // ETH address in Etherdelta config + balances[(user * tokenAddresses.length) + token] = tokenBalance( + userAddresses[user], + tokenAddresses[token] + ); + } else { + balances[(user * tokenAddresses.length) + token] = userAddresses[user] + .balance; + } + } + } + return balances; + } + + /** + * @notice Self-destruct contract for clean-up + */ + function destruct(address payable recipientAddress) public onlyOwner { + selfdestruct(recipientAddress); + } + + /** + * @notice Allow owner to withdraw ether from contract + */ + function withdraw() public onlyOwner { + (bool success, ) = address(owner()).call{ value: address(this).balance }( + "" + ); + require(success, "ETH_WITHDRAW_FAILED"); + } + + /** + * @notice Allow owner to withdraw stuck tokens from contract + * @param tokenAddress address + * @param amount uint256 + */ + function withdrawToken( + address tokenAddress, + uint256 amount + ) public onlyOwner { + require(tokenAddress != address(0x0)); //use withdraw for ETH + IERC20(tokenAddress).safeTransfer(msg.sender, amount); + } + + /** + * @notice Check the token allowance of a wallet in a token contract + * @dev return 0 on returns 0 on invalid spender contract or non-contract address + * @param userAddress address + * @param spenderAddress address Specified address to spend + * @param tokenAddress address + * @return uint256 token allowance if possible + */ + function tokenAllowance( + address userAddress, + address spenderAddress, + address tokenAddress + ) public view returns (uint256) { + if (tokenAddress.isContract()) { + IERC20 token = IERC20(tokenAddress); + // Check if allowance succeeds as a call else returns 0. + (bool success, ) = address(token).staticcall( + abi.encodeWithSelector( + token.allowance.selector, + userAddress, + spenderAddress + ) + ); + if (success) { + return token.allowance(userAddress, spenderAddress); + } + return 0; + } + return 0; + } + + /** + * @notice Check the token balance of a wallet in a token contract + * @dev return 0 on returns 0 on invalid spender contract or non-contract address + * @param userAddress address + * @param tokenAddress address + * @return uint256 token balance if possible + */ + function tokenBalance( + address userAddress, + address tokenAddress + ) public view returns (uint256) { + if (tokenAddress.isContract()) { + IERC20 token = IERC20(tokenAddress); + // Check if balanceOf succeeds. + (bool success, ) = address(token).staticcall( + abi.encodeWithSelector(token.balanceOf.selector, userAddress) + ); + if (success) { + return token.balanceOf(userAddress); + } + return 0; + } + return 0; + } +} diff --git a/source/balances/deploys.js b/source/balances/deploys.js new file mode 100644 index 000000000..90c49b3e5 --- /dev/null +++ b/source/balances/deploys.js @@ -0,0 +1,14 @@ +module.exports = { + 1: '0x21486E4427031F10fBE45F47AAd6f729014d42a4', + 4: '0x2B1c6b0cB9673Efc83d177f72c0daF52A33F120C', + 5: '0x755Aa03f420A62560E90502D7da23A73C301dad4', + 30: '0xEAa610106E67Fe191b0f33cF9B8C900Fed1Ba4BA', + 31: '0x9e9c21C4747B078712D2bb49A279A043973BE9a0', + 42: '0xe25b7504856bfb230b7c32BC87047479815cbc70', + 56: '0x4f850F83BB5678E1deBA0B8F4bcBA9813Ef08dCa', + 97: '0x4f850F83BB5678E1deBA0B8F4bcBA9813Ef08dCa', + 137: '0x132F13C3896eAB218762B9e46F55C9c478905849', + 43113: '0x87D02f7C95b6bC3C9220Fd8fBE1042aCAd590102', + 43114: '0x8fd3121013A07C57f0D69646E86E7a4880b467b7', + 80001: '0x132F13C3896eAB218762B9e46F55C9c478905849', +} diff --git a/source/indexer-registry/hardhat.config.js b/source/balances/hardhat.config.js similarity index 100% rename from source/indexer-registry/hardhat.config.js rename to source/balances/hardhat.config.js diff --git a/source/indexer-registry/package.json b/source/balances/package.json similarity index 65% rename from source/indexer-registry/package.json rename to source/balances/package.json index 08a6524e4..9612ae916 100644 --- a/source/indexer-registry/package.json +++ b/source/balances/package.json @@ -1,36 +1,31 @@ { - "name": "@airswap/indexer-registry", + "name": "@airswap/balances", "version": "4.0.0", - "description": "AirSwap: Indexer Registry", + "description": "Batch balance and allowance calls", "license": "MIT", "repository": { "type": "git", "url": "https://github.com/airswap/airswap-protocols" }, - "files": [ - "./build", - "./typechain", - "./deploys.js" - ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf ./cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test ./test/unit.js", + "test:unit": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@openzeppelin/contracts": "^4.8.1" - }, - "publishConfig": { - "access": "public" + "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { "@airswap/constants": "^4.0.0", "@airswap/utils": "^4.0.0", "prompt-confirm": "^2.0.4" + }, + "publishConfig": { + "access": "public" } -} +} \ No newline at end of file diff --git a/source/indexer-registry/scripts/deploy.js b/source/balances/scripts/deploy.js similarity index 63% rename from source/indexer-registry/scripts/deploy.js rename to source/balances/scripts/deploy.js index 069cb355f..30a8c886b 100644 --- a/source/indexer-registry/scripts/deploy.js +++ b/source/balances/scripts/deploy.js @@ -3,8 +3,8 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const { chainNames } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') -const registryDeploys = require('../deploys.js') +const { getReceiptUrl } = require('@airswap/utils') +const swapDeploys = require('../deploys.js') async function main() { await run('compile') @@ -19,19 +19,21 @@ async function main() { const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { - const registryFactory = await ethers.getContractFactory('IndexerRegistry') - const registryContract = await registryFactory.deploy() + const balanceCheckerFactory = await ethers.getContractFactory( + 'BalanceChecker' + ) + const balanceCheckerContract = await balanceCheckerFactory.deploy() console.log( 'Deploying...', - getEtherscanURL(chainId, registryContract.deployTransaction.hash) + getReceiptUrl(chainId, balanceCheckerContract.deployTransaction.hash) ) - await registryContract.deployed() - console.log(`Deployed: ${registryContract.address}`) + await balanceCheckerContract.deployed() + console.log(`Deployed: ${balanceCheckerContract.address}`) - registryDeploys[chainId] = registryContract.address + swapDeploys[chainId] = balanceCheckerContract.address fs.writeFileSync( './deploys.js', - `module.exports = ${JSON.stringify(registryDeploys, null, '\t')}` + `module.exports = ${JSON.stringify(swapDeploys, null, '\t')}` ) console.log('Updated deploys.js') diff --git a/source/indexer-registry/scripts/verify.js b/source/balances/scripts/verify.js similarity index 86% rename from source/indexer-registry/scripts/verify.js rename to source/balances/scripts/verify.js index fa390c7f5..d62c5651f 100644 --- a/source/indexer-registry/scripts/verify.js +++ b/source/balances/scripts/verify.js @@ -1,7 +1,7 @@ /* eslint-disable no-console */ const { ethers, run } = require('hardhat') -const registryDeploys = require('../deploys.js') const { chainNames } = require('@airswap/constants') +const swapDeploys = require('../deploys.js') async function main() { await run('compile') @@ -12,7 +12,7 @@ async function main() { console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { - address: registryDeploys[chainId], + address: swapDeploys[chainId], constructorArguments: [], }) } diff --git a/source/indexer-registry/tsconfig.json b/source/balances/tsconfig.json similarity index 100% rename from source/indexer-registry/tsconfig.json rename to source/balances/tsconfig.json diff --git a/source/indexer-registry/README.md b/source/indexer-registry/README.md deleted file mode 100644 index 5b812c8ae..000000000 --- a/source/indexer-registry/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# IndexerRegistry - -[AirSwap](https://www.airswap.io/) is an open-source peer-to-peer trading network. - -[![Discord](https://img.shields.io/discord/590643190281928738.svg)](https://discord.gg/ecQbV7H) -[![License](https://img.shields.io/badge/License-MIT-blue)](https://opensource.org/licenses/MIT) -![Twitter Follow](https://img.shields.io/twitter/follow/airswap?style=social) - -## Resources - -- About → https://about.airswap.io/ -- Website → https://www.airswap.io/ -- Twitter → https://twitter.com/airswap -- Chat → https://chat.airswap.io/ - -## Usage - -:warning: This package may contain unaudited code. For all AirSwap contract deployments see [Deployed Contracts](https://about.airswap.io/technology/deployments). - -## Commands - -Environment variables are set in an `.env` file in the repository root. - -| Command | Description | -| :--------------- | :--------------------------------------- | -| `yarn` | Install dependencies | -| `yarn clean` | Delete the contract `build` folder | -| `yarn compile` | Compile all contracts to `build` folder | -| `yarn coverage` | Report test coverage | -| `yarn test` | Run all tests in `test` folder | -| `yarn test:unit` | Run unit tests in `test` folder | -| `yarn deploy` | Deploy on a network using --network flag | -| `yarn verify` | Verify on a network using --network flag | - -## Running Tests - -:bulb: Prior to testing locally, run `yarn compile` in the `airswap-protocols` project root to build required artifacts. diff --git a/source/indexer-registry/contracts/IndexerRegistry.sol b/source/indexer-registry/contracts/IndexerRegistry.sol deleted file mode 100644 index 27fb7f424..000000000 --- a/source/indexer-registry/contracts/IndexerRegistry.sol +++ /dev/null @@ -1,48 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; - -/** - * @title AirSwap: Indexer Registry - * @notice https://www.airswap.io/ - */ -contract IndexerRegistry { - using SafeERC20 for IERC20; - using EnumerableSet for EnumerableSet.AddressSet; - - EnumerableSet.AddressSet internal supportingStakers; - mapping(address => string) public stakerURLs; - - event Stake(address indexed account); - event Unstake(address indexed account); - event SetURL(address indexed account, string url); - - /** - * @notice Set the URL for a staker - * @param _url string value of the URL - */ - function setURL(string calldata _url) external { - if (bytes(stakerURLs[msg.sender]).length == 0) { - supportingStakers.add(msg.sender); - emit Stake(msg.sender); - } - stakerURLs[msg.sender] = _url; - emit SetURL(msg.sender, _url); - } - - /** - * @notice Return a list of all server URLs supporting a given token - * @return urls array of server URLs supporting the token - */ - function getURLs() external view returns (string[] memory urls) { - uint256 length = supportingStakers.length(); - urls = new string[](length); - for (uint256 i = 0; i < length; i++) { - urls[i] = stakerURLs[address(supportingStakers.at(i))]; - } - } -} diff --git a/source/indexer-registry/deploys.js b/source/indexer-registry/deploys.js deleted file mode 100644 index fceb82840..000000000 --- a/source/indexer-registry/deploys.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - 5: '0xC32a3c867aBAd28d977e1724f92D9684fF3d2976', -} diff --git a/source/indexer-registry/test/unit.js b/source/indexer-registry/test/unit.js deleted file mode 100644 index 518fa7aa7..000000000 --- a/source/indexer-registry/test/unit.js +++ /dev/null @@ -1,65 +0,0 @@ -const { expect } = require('chai') -const { ethers, waffle } = require('hardhat') -const { deployMockContract } = waffle -const IERC20 = require('@openzeppelin/contracts/build/contracts/IERC20.json') - -describe('IndexerRegistry Unit', () => { - let snapshotId - let deployer - let account1 - let account2 - let stakingToken - let registryFactory - let registry - - beforeEach(async () => { - snapshotId = await ethers.provider.send('evm_snapshot') - }) - - afterEach(async () => { - await ethers.provider.send('evm_revert', [snapshotId]) - }) - - before(async () => { - ;[deployer, account1, account2, token1, token2, token3] = - await ethers.getSigners() - stakingToken = await deployMockContract(deployer, IERC20.abi) - registryFactory = await ethers.getContractFactory('IndexerRegistry') - registry = await registryFactory.deploy() - await registry.deployed() - }) - - describe('Set URL', async () => { - it('successful setting of url', async () => { - await stakingToken.mock.transferFrom.returns(true) - await expect(registry.connect(account1).setURL('www.noneURL.com')) - .to.emit(registry, 'SetURL') - .withArgs(account1.address, 'www.noneURL.com') - - const urls = await registry.getURLs() - expect(urls.length).to.equal(1) - expect(urls[0]).to.equal('www.noneURL.com') - }) - - it('successful changing of url, check by staker', async () => { - await stakingToken.mock.transferFrom.returns(true) - await registry.connect(account1).setURL('www.noneURL.com') - await registry.connect(account1).setURL('www.TheCatsMeow.com') - - const urls = await registry.getURLs() - expect(urls.length).to.equal(1) - expect(urls[0]).to.equal('www.TheCatsMeow.com') - }) - - it('successful fetching of multiple urls', async () => { - await stakingToken.mock.transferFrom.returns(true) - await registry.connect(account1).setURL('www.noneURL.com') - await registry.connect(account2).setURL('www.TheCatsMeow.com') - - const urls = await registry.getURLs() - expect(urls.length).to.equal(2) - expect(urls[0]).to.equal('www.noneURL.com') - expect(urls[1]).to.equal('www.TheCatsMeow.com') - }) - }) -}) diff --git a/source/maker-registry/.npmignore b/source/maker-registry/.npmignore deleted file mode 100644 index a814035d1..000000000 --- a/source/maker-registry/.npmignore +++ /dev/null @@ -1,12 +0,0 @@ -node_modules -yarn-error.log -lerna-debug.log -.DS_Store -*.swp -*.orig -coverage.json -coverage -test -scripts -cache -.env \ No newline at end of file diff --git a/source/maker-registry/LICENSE b/source/maker-registry/LICENSE deleted file mode 100644 index 25fb212c5..000000000 --- a/source/maker-registry/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright 2023 AirSwap - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/source/maker-registry/contracts/MakerRegistry.sol b/source/maker-registry/contracts/MakerRegistry.sol deleted file mode 100644 index 80fd10138..000000000 --- a/source/maker-registry/contracts/MakerRegistry.sol +++ /dev/null @@ -1,219 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity ^0.8.0; - -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; - -/** - * @title AirSwap: Maker Registry - * @notice https://www.airswap.io/ - */ -contract MakerRegistry { - using SafeERC20 for IERC20; - using EnumerableSet for EnumerableSet.AddressSet; - - IERC20 public immutable stakingToken; - uint256 public immutable obligationCost; - uint256 public immutable tokenCost; - mapping(address => EnumerableSet.AddressSet) internal supportedTokens; - mapping(address => EnumerableSet.AddressSet) internal supportingStakers; - mapping(address => string) public stakerURLs; - - event InitialStake(address indexed account); - event FullUnstake(address indexed account); - event AddTokens(address indexed account, address[] tokens); - event RemoveTokens(address indexed account, address[] tokens); - event SetURL(address indexed account, string url); - - /** - * @notice Constructor - * @param _stakingToken address of token used for staking - * @param _obligationCost base amount required to stake - * @param _tokenCost amount required to stake per token - */ - constructor( - IERC20 _stakingToken, - uint256 _obligationCost, - uint256 _tokenCost - ) { - stakingToken = _stakingToken; - obligationCost = _obligationCost; - tokenCost = _tokenCost; - } - - /** - * @notice Set the URL for a staker - * @param _url string value of the URL - */ - function setURL(string calldata _url) external { - stakerURLs[msg.sender] = _url; - emit SetURL(msg.sender, _url); - } - - /** - * @notice Add tokens supported by the caller - * @param tokens array of token addresses - */ - function addTokens(address[] calldata tokens) external { - uint256 length = tokens.length; - require(length > 0, "NO_TOKENS_TO_ADD"); - EnumerableSet.AddressSet storage tokenList = supportedTokens[msg.sender]; - - uint256 transferAmount = 0; - if (tokenList.length() == 0) { - transferAmount = obligationCost; - emit InitialStake(msg.sender); - } - for (uint256 i = 0; i < length; i++) { - address token = tokens[i]; - require(tokenList.add(token), "TOKEN_EXISTS"); - supportingStakers[token].add(msg.sender); - } - transferAmount += tokenCost * length; - emit AddTokens(msg.sender, tokens); - if (transferAmount > 0) { - stakingToken.safeTransferFrom(msg.sender, address(this), transferAmount); - } - } - - /** - * @notice Remove tokens supported by the caller - * @param tokens array of token addresses - */ - function removeTokens(address[] calldata tokens) external { - uint256 length = tokens.length; - require(length > 0, "NO_TOKENS_TO_REMOVE"); - EnumerableSet.AddressSet storage tokenList = supportedTokens[msg.sender]; - for (uint256 i = 0; i < length; i++) { - address token = tokens[i]; - require(tokenList.remove(token), "TOKEN_DOES_NOT_EXIST"); - supportingStakers[token].remove(msg.sender); - } - uint256 transferAmount = tokenCost * length; - if (tokenList.length() == 0) { - transferAmount += obligationCost; - emit FullUnstake(msg.sender); - } - emit RemoveTokens(msg.sender, tokens); - if (transferAmount > 0) { - stakingToken.safeTransfer(msg.sender, transferAmount); - } - } - - /** - * @notice Remove all tokens supported by the caller - */ - function removeAllTokens() external { - EnumerableSet.AddressSet storage supportedTokenList = supportedTokens[ - msg.sender - ]; - uint256 length = supportedTokenList.length(); - require(length > 0, "NO_TOKENS_TO_REMOVE"); - address[] memory tokenList = new address[](length); - - for (uint256 i = length; i > 0; ) { - i--; - address token = supportedTokenList.at(i); - tokenList[i] = token; - supportedTokenList.remove(token); - supportingStakers[token].remove(msg.sender); - } - uint256 transferAmount = obligationCost + tokenCost * length; - emit FullUnstake(msg.sender); - emit RemoveTokens(msg.sender, tokenList); - if (transferAmount > 0) { - stakingToken.safeTransfer(msg.sender, transferAmount); - } - } - - /** - * @notice Return a list of all server URLs supporting a given token - * @param token address of the token - * @return urls array of server URLs supporting the token - */ - function getURLsForToken( - address token - ) external view returns (string[] memory urls) { - EnumerableSet.AddressSet storage stakers = supportingStakers[token]; - uint256 length = stakers.length(); - urls = new string[](length); - for (uint256 i = 0; i < length; i++) { - urls[i] = stakerURLs[address(stakers.at(i))]; - } - } - - /** - * @notice Get the URLs for an array of stakers - * @param stakers array of staker addresses - * @return urls array of server URLs in the same order - */ - function getURLsForStakers( - address[] calldata stakers - ) external view returns (string[] memory urls) { - uint256 stakersLength = stakers.length; - urls = new string[](stakersLength); - for (uint256 i = 0; i < stakersLength; i++) { - urls[i] = stakerURLs[stakers[i]]; - } - } - - /** - * @notice Return whether a staker supports a given token - * @param staker account address used to stake - * @param token address of the token - * @return true if the staker supports the token - */ - function supportsToken( - address staker, - address token - ) external view returns (bool) { - return supportedTokens[staker].contains(token); - } - - /** - * @notice Return a list of all supported tokens for a given staker - * @param staker account address of the staker - * @return tokenList array of all the supported tokens - */ - function getSupportedTokens( - address staker - ) external view returns (address[] memory tokenList) { - EnumerableSet.AddressSet storage tokens = supportedTokens[staker]; - uint256 length = tokens.length(); - tokenList = new address[](length); - for (uint256 i = 0; i < length; i++) { - tokenList[i] = tokens.at(i); - } - } - - /** - * @notice Return a list of all stakers supporting a given token - * @param token address of the token - * @return stakers array of all stakers that support a given token - */ - function getStakersForToken( - address token - ) external view returns (address[] memory stakers) { - EnumerableSet.AddressSet storage stakerList = supportingStakers[token]; - uint256 length = stakerList.length(); - stakers = new address[](length); - for (uint256 i = 0; i < length; i++) { - stakers[i] = stakerList.at(i); - } - } - - /** - * @notice Return the staking balance of a given staker - * @param staker address of the account used to stake - * @return balance of the staker account - */ - function balanceOf(address staker) external view returns (uint256) { - uint256 tokenCount = supportedTokens[staker].length(); - if (tokenCount == 0) { - return 0; - } - return obligationCost + tokenCost * tokenCount; - } -} diff --git a/source/maker-registry/deploys.js b/source/maker-registry/deploys.js deleted file mode 100644 index 50a9a0e21..000000000 --- a/source/maker-registry/deploys.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - 1: '0x8F9DA6d38939411340b19401E8c54Ea1f51B8f95', - 5: '0x05545815a5579d80Bd4c380da3487EAC2c4Ce299', - 30: '0xE0EE84592b12cfcd03843DE12b58852879ee6FF5', - 31: '0x517d482F686f11b922EED764692f2b42663ce2fa', - 56: '0x9F11691FA842856E44586380b27Ac331ab7De93d', - 97: '0x05545815a5579d80Bd4c380da3487EAC2c4Ce299', - 137: '0x9F11691FA842856E44586380b27Ac331ab7De93d', - 42161: '0xaBF694A434E0fE3b951409C01aa2db50Af4D2E3A', - 43113: '0x4F290e83B414097C107F5AD483a9ae15434B43d3', - 43114: '0xE40feb39fcb941A633deC965Abc9921b3FE962b2', - 80001: '0x05545815a5579d80Bd4c380da3487EAC2c4Ce299', - 421613: '0x517d482F686f11b922EED764692f2b42663ce2fa', -} diff --git a/source/pool/deploys.js.d.ts b/source/pool/deploys.js.d.ts new file mode 100644 index 000000000..fe65925fc --- /dev/null +++ b/source/pool/deploys.js.d.ts @@ -0,0 +1 @@ +declare module '@airswap/pool/deploys.js' diff --git a/source/pool/package.json b/source/pool/package.json index 7438901c6..623a6a2f3 100644 --- a/source/pool/package.json +++ b/source/pool/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/pool", - "version": "4.0.0", + "version": "4.0.1", "description": "AirSwap: Rewards Pool", "license": "MIT", "repository": { @@ -13,18 +13,18 @@ "./deploys.js" ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf ./cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", - "test:unit": "hardhat test ./test/Pool.js", + "test:unit": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@airswap/staking": "^4.0.0", - "@openzeppelin/contracts": "^4.8.1" + "@airswap/staking": "4.0.1", + "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { "@airswap/constants": "^4.0.0", @@ -35,4 +35,4 @@ "publishConfig": { "access": "public" } -} +} \ No newline at end of file diff --git a/source/pool/scripts/deploy.js b/source/pool/scripts/deploy.js index 3719dcee5..1f487d7e0 100644 --- a/source/pool/scripts/deploy.js +++ b/source/pool/scripts/deploy.js @@ -4,7 +4,7 @@ const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const stakingDeploys = require('@airswap/staking/deploys.js') const { chainNames, stakingTokenAddresses } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') +const { getReceiptUrl } = require('@airswap/utils') const poolDeploys = require('../deploys.js') async function main() { @@ -35,7 +35,7 @@ async function main() { ) console.log( 'Deploying...', - getEtherscanURL(chainId, poolContract.deployTransaction.hash) + getReceiptUrl(chainId, poolContract.deployTransaction.hash) ) await poolContract.deployed() console.log(`Deployed: ${poolContract.address}`) diff --git a/source/pool/test/Pool.js b/source/pool/test/Pool.js index edf574225..52fc31cf9 100644 --- a/source/pool/test/Pool.js +++ b/source/pool/test/Pool.js @@ -59,7 +59,7 @@ describe('Pool Unit', () => { stakeContract = await ( await ethers.getContractFactory(STAKING.abi, STAKING.bytecode) - ).deploy(feeToken.address, 'StakedAST', 'sAST', 100, 10) + ).deploy('StakedAST', 'sAST', feeToken.address, 100, 10) await stakeContract.deployed() pool = await ( diff --git a/source/pool/test/PoolIntegration.js b/source/pool/test/PoolIntegration.js index 04110dcf2..b9be4ebe9 100644 --- a/source/pool/test/PoolIntegration.js +++ b/source/pool/test/PoolIntegration.js @@ -61,7 +61,7 @@ describe('Pool Integration', () => { stakeContract = await ( await ethers.getContractFactory(STAKING.abi, STAKING.bytecode) - ).deploy(feeToken.address, 'StakedAST', 'sAST', 100, 1) + ).deploy('StakedAST', 'sAST', feeToken.address, 100, 1) await stakeContract.deployed() pool = await ( diff --git a/source/indexer-registry/.npmignore b/source/registry/.npmignore similarity index 100% rename from source/indexer-registry/.npmignore rename to source/registry/.npmignore diff --git a/source/indexer-registry/LICENSE b/source/registry/LICENSE similarity index 100% rename from source/indexer-registry/LICENSE rename to source/registry/LICENSE diff --git a/source/maker-registry/README.md b/source/registry/README.md similarity index 100% rename from source/maker-registry/README.md rename to source/registry/README.md diff --git a/source/registry/contracts/Registry.sol b/source/registry/contracts/Registry.sol new file mode 100644 index 000000000..f5911896e --- /dev/null +++ b/source/registry/contracts/Registry.sol @@ -0,0 +1,353 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.8.17; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; + +/** + * @title AirSwap: Server URL Registry + * @notice https://www.airswap.io/ + */ +contract Registry { + using SafeERC20 for IERC20; + using EnumerableSet for EnumerableSet.AddressSet; + using EnumerableSet for EnumerableSet.Bytes32Set; + + IERC20 public immutable stakingToken; + uint256 public immutable obligationCost; + uint256 public immutable tokenCost; + mapping(address => EnumerableSet.AddressSet) internal tokensByStaker; + mapping(address => EnumerableSet.Bytes32Set) internal protocolsByStaker; + mapping(address => EnumerableSet.AddressSet) internal stakersByToken; + mapping(bytes4 => EnumerableSet.AddressSet) internal stakersByProtocol; + mapping(address => string) public stakerServerURLs; + + event InitialStake(address indexed account); + event FullUnstake(address indexed account); + event AddTokens(address indexed account, address[] tokens); + event RemoveTokens(address indexed account, address[] tokens); + event AddProtocols(address indexed account, bytes4[] protocols); + event RemoveProtocols(address indexed account, bytes4[] protocols); + event SetServerURL(address indexed account, string url); + + error NoProtocolsToAdd(); + error NoProtocolsToRemove(); + error ProtocolDoesNotExist(bytes4); + error ProtocolExists(bytes4); + error NoTokensToAdd(); + error NoTokensToRemove(); + error TokenDoesNotExist(address); + error TokenExists(address); + + /** + * @notice Constructor + * @param _stakingToken address of token used for staking + * @param _obligationCost base amount required to stake + * @param _tokenCost amount required to stake per protocol + */ + constructor( + IERC20 _stakingToken, + uint256 _obligationCost, + uint256 _tokenCost + ) { + stakingToken = _stakingToken; + obligationCost = _obligationCost; + tokenCost = _tokenCost; + } + + /** + * @notice Set the server URL for a staker + * @param _url string value of the ServerURL + */ + function setServerURL(string calldata _url) external { + stakerServerURLs[msg.sender] = _url; + emit SetServerURL(msg.sender, _url); + } + + /** + * @notice Add tokens supported by the caller + * @param _tokens array of token addresses + */ + function addTokens(address[] calldata _tokens) external { + uint256 _length = _tokens.length; + if (_length <= 0) revert NoTokensToAdd(); + EnumerableSet.AddressSet storage tokenList = tokensByStaker[msg.sender]; + + uint256 _transferAmount = 0; + if (tokenList.length() == 0) { + _transferAmount = obligationCost; + emit InitialStake(msg.sender); + } + for (uint256 i = 0; i < _length; i++) { + address _token = _tokens[i]; + if (!tokenList.add(_token)) revert TokenExists(_token); + stakersByToken[_token].add(msg.sender); + } + _transferAmount += tokenCost * _length; + emit AddTokens(msg.sender, _tokens); + if (_transferAmount > 0) { + stakingToken.safeTransferFrom(msg.sender, address(this), _transferAmount); + } + } + + /** + * @notice Remove tokens supported by the caller + * @param _tokens array of token addresses + */ + function removeTokens(address[] calldata _tokens) external { + uint256 _length = _tokens.length; + if (_length <= 0) revert NoTokensToRemove(); + EnumerableSet.AddressSet storage tokenList = tokensByStaker[msg.sender]; + for (uint256 i = 0; i < _length; i++) { + address token = _tokens[i]; + if (!tokenList.remove(token)) revert TokenDoesNotExist(token); + stakersByToken[token].remove(msg.sender); + } + uint256 _transferAmount = tokenCost * _length; + if (tokenList.length() == 0) { + _transferAmount += obligationCost; + emit FullUnstake(msg.sender); + } + emit RemoveTokens(msg.sender, _tokens); + if (_transferAmount > 0) { + stakingToken.safeTransfer(msg.sender, _transferAmount); + } + } + + /** + * @notice Remove all tokens supported by the caller + */ + function removeAllTokens() external { + EnumerableSet.AddressSet storage supportedTokenList = tokensByStaker[ + msg.sender + ]; + uint256 _length = supportedTokenList.length(); + if (_length <= 0) revert NoTokensToRemove(); + address[] memory _tokenList = new address[](_length); + + for (uint256 i = _length; i > 0; ) { + i--; + address _token = supportedTokenList.at(i); + _tokenList[i] = _token; + supportedTokenList.remove(_token); + stakersByToken[_token].remove(msg.sender); + } + uint256 _transferAmount = obligationCost + tokenCost * _length; + emit FullUnstake(msg.sender); + emit RemoveTokens(msg.sender, _tokenList); + if (_transferAmount > 0) { + stakingToken.safeTransfer(msg.sender, _transferAmount); + } + } + + /** + * @notice Return a list of all server URLs supporting a given token + * @param _token address of the token + * @return urls array of staker server URLs supporting the token + */ + function getServerURLsForToken( + address _token + ) external view returns (string[] memory urls) { + EnumerableSet.AddressSet storage stakers = stakersByToken[_token]; + uint256 _length = stakers.length(); + urls = new string[](_length); + for (uint256 i = 0; i < _length; i++) { + urls[i] = stakerServerURLs[address(stakers.at(i))]; + } + } + + /** + * @notice Return whether a staker supports a given token + * @param _staker account address used to stake + * @param _token address of the token + * @return true if the staker supports the token + */ + function supportsToken( + address _staker, + address _token + ) external view returns (bool) { + return tokensByStaker[_staker].contains(_token); + } + + /** + * @notice Return a list of all supported tokens for a given staker + * @param _staker account address of the staker + * @return tokenList array of all the supported tokens + */ + function getTokensForStaker( + address _staker + ) external view returns (address[] memory tokenList) { + EnumerableSet.AddressSet storage tokens = tokensByStaker[_staker]; + uint256 _length = tokens.length(); + tokenList = new address[](_length); + for (uint256 i = 0; i < _length; i++) { + tokenList[i] = tokens.at(i); + } + } + + /** + * @notice Return a list of all stakers supporting a given token + * @param _token address of the token + * @return _stakers array of all stakers that support a given token + */ + function getStakersForToken( + address _token + ) external view returns (address[] memory _stakers) { + EnumerableSet.AddressSet storage stakerList = stakersByToken[_token]; + uint256 _length = stakerList.length(); + _stakers = new address[](_length); + for (uint256 i = 0; i < _length; i++) { + _stakers[i] = stakerList.at(i); + } + } + + /** + * @notice Add protocols supported by the caller + * @param _protocols array of protocol addresses + */ + function addProtocols(bytes4[] calldata _protocols) external { + uint256 _length = _protocols.length; + if (_length <= 0) revert NoProtocolsToAdd(); + EnumerableSet.Bytes32Set storage _protocolList = protocolsByStaker[ + msg.sender + ]; + + for (uint256 i = 0; i < _length; i++) { + bytes4 protocol = _protocols[i]; + if (!_protocolList.add(protocol)) revert ProtocolExists(protocol); + stakersByProtocol[protocol].add(msg.sender); + } + emit AddProtocols(msg.sender, _protocols); + } + + /** + * @notice Remove protocols supported by the caller + * @param _protocols array of protocol addresses + */ + function removeProtocols(bytes4[] calldata _protocols) external { + uint256 _length = _protocols.length; + if (_length <= 0) revert NoProtocolsToRemove(); + EnumerableSet.Bytes32Set storage protocolList = protocolsByStaker[ + msg.sender + ]; + for (uint256 i = 0; i < _length; i++) { + bytes4 _protocol = _protocols[i]; + if (!protocolList.remove(_protocol)) + revert ProtocolDoesNotExist(_protocol); + stakersByProtocol[_protocol].remove(msg.sender); + } + emit RemoveProtocols(msg.sender, _protocols); + } + + /** + * @notice Remove all protocols supported by the caller + */ + function removeAllProtocols() external { + EnumerableSet.Bytes32Set storage _supportedProtocolList = protocolsByStaker[ + msg.sender + ]; + uint256 _length = _supportedProtocolList.length(); + if (_length <= 0) revert NoProtocolsToRemove(); + bytes4[] memory protocolList = new bytes4[](_length); + + for (uint256 i = _length; i > 0; ) { + i--; + bytes4 _protocol = bytes4(_supportedProtocolList.at(i)); + protocolList[i] = _protocol; + _supportedProtocolList.remove(_protocol); + stakersByProtocol[_protocol].remove(msg.sender); + } + emit RemoveProtocols(msg.sender, protocolList); + } + + /** + * @notice Return a list of all server URLs supporting a given protocol + * @param _protocol address of the protocol + * @return _urls array of staker server URLs supporting the protocol + */ + function getServerURLsForProtocol( + bytes4 _protocol + ) external view returns (string[] memory _urls) { + EnumerableSet.AddressSet storage stakers = stakersByProtocol[_protocol]; + uint256 _length = stakers.length(); + _urls = new string[](_length); + for (uint256 i = 0; i < _length; i++) { + _urls[i] = stakerServerURLs[address(stakers.at(i))]; + } + } + + /** + * @notice Get the ServerURLs for an array of stakers + * @param _stakers array of staker addresses + * @return _urls array of staker ServerURLs in the same order + */ + function getServerURLsForStakers( + address[] calldata _stakers + ) external view returns (string[] memory _urls) { + uint256 stakersLength = _stakers.length; + _urls = new string[](stakersLength); + for (uint256 i = 0; i < stakersLength; i++) { + _urls[i] = stakerServerURLs[_stakers[i]]; + } + } + + /** + * @notice Return whether a staker supports a given protocol + * @param _staker account address used to stake + * @param _protocol address of the protocol + * @return true if the staker supports the protocol + */ + function supportsProtocol( + address _staker, + bytes4 _protocol + ) external view returns (bool) { + return protocolsByStaker[_staker].contains(_protocol); + } + + /** + * @notice Return a list of all supported protocols for a given staker + * @param _staker account address of the staker + * @return _protocolList array of all the supported protocols + */ + function getProtocolsForStaker( + address _staker + ) external view returns (bytes4[] memory _protocolList) { + EnumerableSet.Bytes32Set storage _protocols = protocolsByStaker[_staker]; + uint256 _length = _protocols.length(); + _protocolList = new bytes4[](_length); + for (uint256 i = 0; i < _length; i++) { + _protocolList[i] = bytes4(_protocols.at(i)); + } + } + + /** + * @notice Return a list of all stakers supporting a given protocol + * @param _protocol address of the protocol + * @return _stakers array of all stakers that support a given protocol + */ + function getStakersForProtocol( + bytes4 _protocol + ) external view returns (address[] memory _stakers) { + EnumerableSet.AddressSet storage _stakerList = stakersByProtocol[_protocol]; + uint256 _length = _stakerList.length(); + _stakers = new address[](_length); + for (uint256 i = 0; i < _length; i++) { + _stakers[i] = _stakerList.at(i); + } + } + + /** + * @notice Return the staking balance of a given staker + * @param _staker address of the account used to stake + * @return balance of the staker account + */ + function balanceOf(address _staker) external view returns (uint256) { + uint256 _tokenCount = tokensByStaker[_staker].length(); + if (_tokenCount == 0) { + return 0; + } + return obligationCost + tokenCost * _tokenCount; + } +} diff --git a/source/registry/deploys.js b/source/registry/deploys.js new file mode 100644 index 000000000..087314c62 --- /dev/null +++ b/source/registry/deploys.js @@ -0,0 +1,5 @@ +module.exports = { + 1: '0xf5E6730c5A915b6f47AeAB0952655036aE2e73E9', + 5: '0x6787cD07B0E6934BA9c3D1eBf3866eF091697128', + 59140: '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', +} diff --git a/source/registry/deploys.js.d.ts b/source/registry/deploys.js.d.ts new file mode 100644 index 000000000..13ee47dbe --- /dev/null +++ b/source/registry/deploys.js.d.ts @@ -0,0 +1 @@ +declare module '@airswap/registry/deploys.js' diff --git a/source/maker-registry/hardhat.config.js b/source/registry/hardhat.config.js similarity index 100% rename from source/maker-registry/hardhat.config.js rename to source/registry/hardhat.config.js diff --git a/source/maker-registry/package.json b/source/registry/package.json similarity index 76% rename from source/maker-registry/package.json rename to source/registry/package.json index e42829d96..8e4f4bfd5 100644 --- a/source/maker-registry/package.json +++ b/source/registry/package.json @@ -1,7 +1,7 @@ { - "name": "@airswap/maker-registry", - "version": "4.0.1", - "description": "AirSwap: Maker Registry", + "name": "@airswap/registry", + "version": "4.0.2", + "description": "AirSwap: Server URL Registry", "license": "MIT", "repository": { "type": "git", @@ -13,7 +13,7 @@ "./deploys.js" ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf ./cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", @@ -23,7 +23,7 @@ "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@openzeppelin/contracts": "^4.8.1" + "@openzeppelin/contracts": "^4.8.3" }, "publishConfig": { "access": "public" diff --git a/source/maker-registry/scripts/deploy.js b/source/registry/scripts/deploy.js similarity index 75% rename from source/maker-registry/scripts/deploy.js rename to source/registry/scripts/deploy.js index 98310d083..8907168d3 100644 --- a/source/maker-registry/scripts/deploy.js +++ b/source/registry/scripts/deploy.js @@ -3,27 +3,29 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const { chainNames, stakingTokenAddresses } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') +const { getReceiptUrl } = require('@airswap/utils') const registryDeploys = require('../deploys.js') async function main() { await run('compile') const [deployer] = await ethers.getSigners() - console.log(`Deployer: ${deployer.address}`) - const chainId = await deployer.getChainId() const gasPrice = await deployer.getGasPrice() const stakingToken = stakingTokenAddresses[chainId] - const obligationCost = 0 - const tokenCost = 0 + const obligationCost = 1000000000 + const tokenCost = 1000000 + console.log(`\nstakingToken: ${stakingToken}`) + console.log(`obligationCost: ${obligationCost}`) + console.log(`tokenCost: ${tokenCost}\n`) + + console.log(`Deployer: ${deployer.address}`) console.log(`Deploying on ${chainNames[chainId].toUpperCase()}`) - console.log(`Staking token: ${stakingToken}`) - console.log(`Gas price: ${gasPrice / 10 ** 9} gwei`) + console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { - const registryFactory = await ethers.getContractFactory('MakerRegistry') + const registryFactory = await ethers.getContractFactory('Registry') const registryContract = await registryFactory.deploy( stakingToken, obligationCost, @@ -31,7 +33,7 @@ async function main() { ) console.log( 'Deploying...', - getEtherscanURL(chainId, registryContract.deployTransaction.hash) + getReceiptUrl(chainId, registryContract.deployTransaction.hash) ) await registryContract.deployed() console.log(`Deployed: ${registryContract.address}`) diff --git a/source/maker-registry/scripts/verify.js b/source/registry/scripts/verify.js similarity index 92% rename from source/maker-registry/scripts/verify.js rename to source/registry/scripts/verify.js index 6950bbf4e..e2e8f274f 100644 --- a/source/maker-registry/scripts/verify.js +++ b/source/registry/scripts/verify.js @@ -10,8 +10,8 @@ async function main() { const chainId = await deployer.getChainId() const stakingToken = stakingTokenAddresses[chainId] - const obligationCost = 0 - const tokenCost = 0 + const obligationCost = 1000000000 + const tokenCost = 1000000 console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { diff --git a/source/maker-registry/test/unit.js b/source/registry/test/unit.js similarity index 57% rename from source/maker-registry/test/unit.js rename to source/registry/test/unit.js index fe4fc92cb..a82fae862 100644 --- a/source/maker-registry/test/unit.js +++ b/source/registry/test/unit.js @@ -3,11 +3,14 @@ const { ethers, waffle } = require('hardhat') const { deployMockContract } = waffle const IERC20 = require('@openzeppelin/contracts/build/contracts/IERC20.json') -describe('MakerRegistry Unit', () => { +describe('Registry Unit', () => { let snapshotId let deployer let account1 let account2 + let protocol1 + let protocol2 + let protocol3 let token1 let token2 let token3 @@ -29,8 +32,11 @@ describe('MakerRegistry Unit', () => { before(async () => { ;[deployer, account1, account2, token1, token2, token3] = await ethers.getSigners() + protocol1 = '0x00000001' + protocol2 = '0x00000002' + protocol3 = '0x00000003' stakingToken = await deployMockContract(deployer, IERC20.abi) - registryFactory = await ethers.getContractFactory('MakerRegistry') + registryFactory = await ethers.getContractFactory('Registry') registry = await registryFactory.deploy( stakingToken.address, OBLIGATION_COST, @@ -50,10 +56,176 @@ describe('MakerRegistry Unit', () => { }) }) + describe('Add Protocols', async () => { + it('add an empty list of protocols fails', async () => { + await expect( + registry.connect(account1).addProtocols([]) + ).to.be.revertedWith('NoProtocolsToAdd()') + }) + + it('add a list of protocols', async () => { + await expect( + registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + ) + .to.emit(registry, 'AddProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + const protocols = await registry.getProtocolsForStaker(account1.address) + expect(protocols.length).to.equal(3) + expect(protocols[0]).to.equal(protocol1) + expect(protocols[1]).to.equal(protocol2) + expect(protocols[2]).to.equal(protocol3) + + const protocol1Stakers = await registry.getStakersForProtocol(protocol1) + const protocol2Stakers = await registry.getStakersForProtocol(protocol2) + const protocol3Stakers = await registry.getStakersForProtocol(protocol3) + expect(protocol1Stakers.length).to.equal(1) + expect(protocol2Stakers.length).to.equal(1) + expect(protocol3Stakers.length).to.equal(1) + expect(protocol1Stakers[0]).to.equal(account1.address) + expect(protocol2Stakers[0]).to.equal(account1.address) + expect(protocol3Stakers[0]).to.equal(account1.address) + + const protocol1Supported = await registry.supportsProtocol( + account1.address, + protocol1 + ) + const protocol2Supported = await registry.supportsProtocol( + account1.address, + protocol2 + ) + const protocol3Supported = await registry.supportsProtocol( + account1.address, + protocol3 + ) + expect(protocol1Supported).to.equal(true) + expect(protocol2Supported).to.equal(true) + expect(protocol3Supported).to.equal(true) + }) + + it('add a list of duplicate protocols fails', async () => { + await expect( + registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol1]) + ).to.be.revertedWith(`ProtocolExists("${protocol1}")`) + }) + + it('add a duplicate token', async () => { + await registry.connect(account1).addProtocols([protocol1, protocol2]) + await expect( + registry.connect(account1).addProtocols([protocol1]) + ).to.be.revertedWith(`ProtocolExists("${protocol1}")`) + }) + }) + + describe('Remove Protocols', async () => { + it('remove an empty list of protocols fails', async () => { + await expect( + registry.connect(account1).removeProtocols([]) + ).to.be.revertedWith('NoProtocolsToRemove()') + }) + + it('remove a list of protocols', async () => { + await registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + + await expect( + registry + .connect(account1) + .removeProtocols([protocol1, protocol2, protocol3]) + ) + .to.emit(registry, 'RemoveProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + const protocols = await registry.getProtocolsForStaker(account1.address) + expect(protocols.length).to.equal(0) + + const protocol1Stakers = await registry.getStakersForProtocol(protocol1) + const protocol2Stakers = await registry.getStakersForProtocol(protocol2) + const protocol3Stakers = await registry.getStakersForProtocol(protocol3) + expect(protocol1Stakers.length).to.equal(0) + expect(protocol2Stakers.length).to.equal(0) + expect(protocol3Stakers.length).to.equal(0) + + const protocol1Supported = await registry.supportsProtocol( + account1.address, + protocol1 + ) + const protocol2Supported = await registry.supportsProtocol( + account1.address, + protocol2 + ) + const protocol3Supported = await registry.supportsProtocol( + account1.address, + protocol3 + ) + expect(protocol1Supported).to.equal(false) + expect(protocol2Supported).to.equal(false) + expect(protocol3Supported).to.equal(false) + }) + + it('remove all protocols for a staker fails when there are no protocols to remove', async () => { + await expect( + registry.connect(account1).removeAllProtocols() + ).to.be.revertedWith('NoProtocolsToRemove()') + }) + + it('remove all protocols for a staker', async () => { + await registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + await expect(registry.connect(account1).removeAllProtocols()) + .to.emit(registry, 'RemoveProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + //NOTE: Note that there are no guarantees on the ordering of values inside the array, and it may change when more values are added or removed. + // this is why protocol1, protocol2, protocol3 are in the above order + const protocols = await registry.getProtocolsForStaker(account1.address) + expect(protocols.length).to.equal(0) + + const protocol1Stakers = await registry.getStakersForProtocol(protocol1) + const protocol2Stakers = await registry.getStakersForProtocol(protocol2) + const protocol3Stakers = await registry.getStakersForProtocol(protocol3) + expect(protocol1Stakers.length).to.equal(0) + expect(protocol2Stakers.length).to.equal(0) + expect(protocol3Stakers.length).to.equal(0) + }) + + it('remove a list of duplicate protocols fails', async () => { + await registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + + await expect( + registry + .connect(account1) + .removeProtocols([protocol1, protocol2, protocol1]) + ).to.be.revertedWith(`ProtocolDoesNotExist("${protocol1}")`) + }) + + it('remove a token already removed fails', async () => { + await registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + + await registry + .connect(account1) + .removeProtocols([protocol1, protocol2, protocol3]) + + await expect( + registry.connect(account1).removeProtocols([protocol1]) + ).to.be.revertedWith(`ProtocolDoesNotExist("${protocol1}")`) + }) + }) + describe('Add Tokens', async () => { it('add an empty list of tokens fails', async () => { await expect(registry.connect(account1).addTokens([])).to.be.revertedWith( - 'NO_TOKENS_TO_ADD' + 'NoTokensToAdd()' ) }) @@ -71,7 +243,7 @@ describe('MakerRegistry Unit', () => { token3.address, ]) - const tokens = await registry.getSupportedTokens(account1.address) + const tokens = await registry.getTokensForStaker(account1.address) expect(tokens.length).to.equal(3) expect(tokens[0]).to.equal(token1.address) expect(tokens[1]).to.equal(token2.address) @@ -119,7 +291,7 @@ describe('MakerRegistry Unit', () => { registry .connect(account1) .addTokens([token1.address, token2.address, token1.address]) - ).to.be.revertedWith('TOKEN_EXISTS') + ).to.be.revertedWith(`TokenExists("${token1.address}")`) }) it('add a duplicate token', async () => { @@ -129,7 +301,7 @@ describe('MakerRegistry Unit', () => { .addTokens([token1.address, token2.address]) await expect( registry.connect(account1).addTokens([token1.address]) - ).to.be.revertedWith('TOKEN_EXISTS') + ).to.be.revertedWith(`TokenExists("${token1.address}")`) }) }) @@ -137,7 +309,7 @@ describe('MakerRegistry Unit', () => { it('remove an empty list of tokens fails', async () => { await expect( registry.connect(account1).removeTokens([]) - ).to.be.revertedWith('NO_TOKENS_TO_REMOVE') + ).to.be.revertedWith('NoTokensToRemove()') }) it('remove a list of tokens', async () => { @@ -159,7 +331,7 @@ describe('MakerRegistry Unit', () => { token3.address, ]) - const tokens = await registry.getSupportedTokens(account1.address) + const tokens = await registry.getTokensForStaker(account1.address) expect(tokens.length).to.equal(0) const token1Stakers = await registry.getStakersForToken(token1.address) @@ -189,10 +361,10 @@ describe('MakerRegistry Unit', () => { it('remove all tokens for a staker fails when there are no tokens to remove', async () => { await expect( registry.connect(account1).removeAllTokens() - ).to.be.revertedWith('NO_TOKENS_TO_REMOVE') + ).to.be.revertedWith('NoTokensToRemove()') }) - it('remove all tokens for an staker', async () => { + it('remove all tokens for a staker', async () => { await stakingToken.mock.transfer.returns(true) await stakingToken.mock.transferFrom.returns(true) await registry @@ -208,7 +380,7 @@ describe('MakerRegistry Unit', () => { //NOTE: Note that there are no guarantees on the ordering of values inside the array, and it may change when more values are added or removed. // this is why token1, token3, token2 are in the above order - const tokens = await registry.getSupportedTokens(account1.address) + const tokens = await registry.getTokensForStaker(account1.address) expect(tokens.length).to.equal(0) const token1Stakers = await registry.getStakersForToken(token1.address) @@ -230,7 +402,7 @@ describe('MakerRegistry Unit', () => { registry .connect(account1) .removeTokens([token1.address, token2.address, token1.address]) - ).to.be.revertedWith('TOKEN_DOES_NOT_EXIST') + ).to.be.revertedWith(`TokenDoesNotExist("${token1.address}")`) }) it('remove a token already removed fails', async () => { @@ -246,7 +418,7 @@ describe('MakerRegistry Unit', () => { await expect( registry.connect(account1).removeTokens([token1.address]) - ).to.be.revertedWith('TOKEN_DOES_NOT_EXIST') + ).to.be.revertedWith(`TokenDoesNotExist("${token1.address}")`) }) }) @@ -288,27 +460,27 @@ describe('MakerRegistry Unit', () => { describe('Set URL', async () => { it('successful setting of url', async () => { - await expect(registry.connect(account1).setURL('www.noneURL.com')) - .to.emit(registry, 'SetURL') + await expect(registry.connect(account1).setServerURL('www.noneURL.com')) + .to.emit(registry, 'SetServerURL') .withArgs(account1.address, 'www.noneURL.com') - const urls = await registry.getURLsForStakers([account1.address]) + const urls = await registry.getServerURLsForStakers([account1.address]) expect(urls.length).to.equal(1) expect(urls[0]).to.equal('www.noneURL.com') }) it('successful changing of url, check by staker', async () => { - await registry.connect(account1).setURL('www.noneURL.com') - await registry.connect(account1).setURL('www.TheCatsMeow.com') + await registry.connect(account1).setServerURL('www.noneURL.com') + await registry.connect(account1).setServerURL('www.TheCatsMeow.com') - const urls = await registry.getURLsForStakers([account1.address]) + const urls = await registry.getServerURLsForStakers([account1.address]) expect(urls.length).to.equal(1) expect(urls[0]).to.equal('www.TheCatsMeow.com') }) it('successful changing of url, check by token', async () => { - await registry.connect(account1).setURL('www.noneURL.com') - await registry.connect(account1).setURL('www.TheCatsMeow.com') + await registry.connect(account1).setServerURL('www.noneURL.com') + await registry.connect(account1).setServerURL('www.TheCatsMeow.com') await stakingToken.mock.transferFrom.returns(true) await expect( @@ -323,16 +495,34 @@ describe('MakerRegistry Unit', () => { token3.address, ]) - const urls = await registry.getURLsForToken(token3.address) + const urls = await registry.getServerURLsForToken(token3.address) + expect(urls.length).to.equal(1) + expect(urls[0]).to.equal('www.TheCatsMeow.com') + }) + + it('successful changing of url, check by protocol', async () => { + await registry.connect(account1).setServerURL('www.noneURL.com') + await registry.connect(account1).setServerURL('www.TheCatsMeow.com') + + await stakingToken.mock.transferFrom.returns(true) + await expect( + registry + .connect(account1) + .addProtocols([protocol1, protocol2, protocol3]) + ) + .to.emit(registry, 'AddProtocols') + .withArgs(account1.address, [protocol1, protocol2, protocol3]) + + const urls = await registry.getServerURLsForProtocol(protocol3) expect(urls.length).to.equal(1) expect(urls[0]).to.equal('www.TheCatsMeow.com') }) it('successful fetching of multiple urls', async () => { - await registry.connect(account1).setURL('www.noneURL.com') - await registry.connect(account2).setURL('www.TheCatsMeow.com') + await registry.connect(account1).setServerURL('www.noneURL.com') + await registry.connect(account2).setServerURL('www.TheCatsMeow.com') - const urls = await registry.getURLsForStakers([ + const urls = await registry.getServerURLsForStakers([ account1.address, account2.address, ]) @@ -342,9 +532,9 @@ describe('MakerRegistry Unit', () => { }) it('successful fetching of multiple urls where one address has an empty url', async () => { - await registry.connect(account1).setURL('www.noneURL.com') + await registry.connect(account1).setServerURL('www.noneURL.com') - const urls = await registry.getURLsForStakers([ + const urls = await registry.getServerURLsForStakers([ account1.address, account2.address, ]) diff --git a/source/maker-registry/tsconfig.json b/source/registry/tsconfig.json similarity index 100% rename from source/maker-registry/tsconfig.json rename to source/registry/tsconfig.json diff --git a/source/staking/contracts/Staking.sol b/source/staking/contracts/Staking.sol index c6f1dd735..9bb541b4a 100644 --- a/source/staking/contracts/Staking.sol +++ b/source/staking/contracts/Staking.sol @@ -1,11 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/utils/math/SafeMath.sol"; +pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "@openzeppelin/contracts/utils/math/Math.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; import "./interfaces/IStaking.sol"; /** @@ -14,19 +12,18 @@ import "./interfaces/IStaking.sol"; */ contract Staking is IStaking, Ownable { using SafeERC20 for ERC20; - using SafeMath for uint256; // Token to be staked - ERC20 public immutable token; + ERC20 public immutable stakingToken; // Unstaking duration - uint256 public duration; + uint256 public stakingDuration; - // Timelock delay - uint256 private minDelay; + // Minimum delay to staking duration change + uint256 private minDurationChangeDelay; - // Timeunlock timestamp - uint256 private timeUnlock; + // Timestamp after which staking duration change is possible + uint256 private activeDurationChangeTimestamp; // Mapping of account to stakes mapping(address => Stake) internal stakes; @@ -46,29 +43,30 @@ contract Staking is IStaking, Ownable { /** * @notice Constructor - * @param _token address - * @param _name string - * @param _symbol string - * @param _duration uint256 + * @param _name string Token name for this contract + * @param _symbol string Token symbol for this contract + * @param _stakingToken address Token used for staking + * @param _stakingDuration uint256 Amount of time tokens are staked + * @param _minDurationChangeDelay uint256 Time delay for a duration change */ constructor( - ERC20 _token, string memory _name, string memory _symbol, - uint256 _duration, - uint256 _minDelay + ERC20 _stakingToken, + uint256 _stakingDuration, + uint256 _minDurationChangeDelay ) { - token = _token; + stakingToken = _stakingToken; + stakingDuration = _stakingDuration; + minDurationChangeDelay = _minDurationChangeDelay; name = _name; symbol = _symbol; - duration = _duration; - minDelay = _minDelay; } /** - * @notice Set metadata config - * @param _name string - * @param _symbol string + * @notice Set token metadata for this contract + * @param _name string Token name for this contract + * @param _symbol string Token symbol for this contract */ function setMetaData( string memory _name, @@ -80,152 +78,160 @@ contract Staking is IStaking, Ownable { /** * @dev Schedules timelock to change duration - * @param delay uint256 + * @param _delay uint256 */ - function scheduleDurationChange(uint256 delay) external onlyOwner { - require(timeUnlock == 0, "TIMELOCK_ACTIVE"); - require(delay >= minDelay, "INVALID_DELAY"); - timeUnlock = block.timestamp + delay; - emit ScheduleDurationChange(timeUnlock); + function scheduleDurationChange(uint256 _delay) external onlyOwner { + if (activeDurationChangeTimestamp != 0) revert TimelockActive(); + if (_delay < minDurationChangeDelay) revert DelayInvalid(_delay); + activeDurationChangeTimestamp = block.timestamp + _delay; + emit ScheduleDurationChange(activeDurationChangeTimestamp); } /** * @dev Cancels timelock to change duration */ function cancelDurationChange() external onlyOwner { - require(timeUnlock > 0, "TIMELOCK_INACTIVE"); - delete timeUnlock; + if (activeDurationChangeTimestamp == 0) revert TimelockInactive(); + delete activeDurationChangeTimestamp; emit CancelDurationChange(); } /** * @notice Set unstaking duration - * @param _duration uint256 + * @param _stakingDuration uint256 */ - function setDuration(uint256 _duration) external onlyOwner { - require(_duration != 0, "DURATION_INVALID"); - require(timeUnlock > 0, "TIMELOCK_INACTIVE"); - require(block.timestamp >= timeUnlock, "TIMELOCKED"); - duration = _duration; - delete timeUnlock; - emit CompleteDurationChange(_duration); + function setDuration(uint256 _stakingDuration) external onlyOwner { + if (_stakingDuration == 0) revert DurationInvalid(_stakingDuration); + if (activeDurationChangeTimestamp == 0) revert TimelockInactive(); + if (block.timestamp < activeDurationChangeTimestamp) revert Timelocked(); + stakingDuration = _stakingDuration; + delete activeDurationChangeTimestamp; + emit CompleteDurationChange(_stakingDuration); } /** * @notice Propose delegate for account - * @param delegate address + * @param _delegate address */ - function proposeDelegate(address delegate) external { - require(accountDelegates[msg.sender] == address(0), "SENDER_HAS_DELEGATE"); - require(delegateAccounts[delegate] == address(0), "DELEGATE_IS_TAKEN"); - require(stakes[delegate].balance == 0, "DELEGATE_MUST_NOT_BE_STAKED"); - proposedDelegates[msg.sender] = delegate; - emit ProposeDelegate(delegate, msg.sender); + function proposeDelegate(address _delegate) external { + if (accountDelegates[msg.sender] != address(0)) + revert SenderHasDelegate(msg.sender, _delegate); + if (delegateAccounts[_delegate] != address(0)) + revert DelegateTaken(_delegate); + if (stakes[_delegate].balance != 0) revert DelegateStaked(_delegate); + proposedDelegates[msg.sender] = _delegate; + emit ProposeDelegate(_delegate, msg.sender); } /** * @notice Set delegate for account - * @param account address + * @param _account address */ - function setDelegate(address account) external { - require(proposedDelegates[account] == msg.sender, "MUST_BE_PROPOSED"); - require(delegateAccounts[msg.sender] == address(0), "DELEGATE_IS_TAKEN"); - require(stakes[msg.sender].balance == 0, "DELEGATE_MUST_NOT_BE_STAKED"); - accountDelegates[account] = msg.sender; - delegateAccounts[msg.sender] = account; - delete proposedDelegates[account]; - emit SetDelegate(msg.sender, account); + function setDelegate(address _account) external { + if (proposedDelegates[_account] != msg.sender) + revert DelegateNotProposed(_account); + if (delegateAccounts[msg.sender] != address(0)) + revert DelegateTaken(_account); + if (stakes[msg.sender].balance != 0) revert DelegateStaked(_account); + accountDelegates[_account] = msg.sender; + delegateAccounts[msg.sender] = _account; + delete proposedDelegates[_account]; + emit SetDelegate(msg.sender, _account); } /** * @notice Unset delegate for account - * @param delegate address + * @param _delegate address */ - function unsetDelegate(address delegate) external { - require(accountDelegates[msg.sender] == delegate, "DELEGATE_NOT_SET"); + function unsetDelegate(address _delegate) external { + if (accountDelegates[msg.sender] != _delegate) + revert DelegateNotSet(_delegate); accountDelegates[msg.sender] = address(0); - delegateAccounts[delegate] = address(0); + delegateAccounts[_delegate] = address(0); } /** * @notice Stake tokens - * @param amount uint256 + * @param _amount uint256 */ - function stake(uint256 amount) external override { + function stake(uint256 _amount) external override { if (delegateAccounts[msg.sender] != address(0)) { - _stake(delegateAccounts[msg.sender], amount); + _stake(delegateAccounts[msg.sender], _amount); } else { - _stake(msg.sender, amount); + _stake(msg.sender, _amount); } } /** * @notice Unstake tokens - * @param amount uint256 + * @param _amount uint256 */ - function unstake(uint256 amount) external override { - address account; + function unstake(uint256 _amount) external override { + address _account; delegateAccounts[msg.sender] != address(0) - ? account = delegateAccounts[msg.sender] - : account = msg.sender; - _unstake(account, amount); - token.safeTransfer(account, amount); - emit Transfer(account, address(0), amount); + ? _account = delegateAccounts[msg.sender] + : _account = msg.sender; + _unstake(_account, _amount); } /** * @notice Receive stakes for an account - * @param account address + * @param _account address */ function getStakes( - address account - ) external view override returns (Stake memory accountStake) { - return stakes[account]; + address _account + ) external view override returns (Stake memory _accountStake) { + return stakes[_account]; } /** - * @notice Total balance of all accounts (ERC-20) + * @notice Get total balance of all staked accounts */ function totalSupply() external view override returns (uint256) { - return token.balanceOf(address(this)); + return stakingToken.balanceOf(address(this)); } /** - * @notice Balance of an account (ERC-20) + * @notice Get balance of an account + * @param _account address */ function balanceOf( - address account + address _account ) external view override returns (uint256 total) { - return stakes[account].balance; + return stakes[_account].balance; } /** - * @notice Decimals of underlying token (ERC-20) + * @notice Get decimals of underlying token */ function decimals() external view override returns (uint8) { - return token.decimals(); + return stakingToken.decimals(); } /** * @notice Stake tokens for an account - * @param account address - * @param amount uint256 + * @param _account address + * @param _amount uint256 */ - function stakeFor(address account, uint256 amount) public override { - _stake(account, amount); + function stakeFor(address _account, uint256 _amount) public override { + if (delegateAccounts[_account] != address(0)) { + _stake(delegateAccounts[_account], _amount); + } else { + _stake(_account, _amount); + } } /** - * @notice Available amount for an account - * @param account uint256 + * @notice Amount available to withdraw for a given account + * @param _account uint256 */ - function available(address account) public view override returns (uint256) { - Stake storage selected = stakes[account]; - uint256 _available = (block.timestamp.sub(selected.timestamp)) - .mul(selected.balance) - .div(selected.duration); - if (_available >= stakes[account].balance) { - return stakes[account].balance; + function available(address _account) public view override returns (uint256) { + Stake storage _selected = stakes[_account]; + uint256 _available = (_selected.balance * + (block.timestamp - _selected.timestamp)) / + (_selected.maturity - _selected.timestamp); + if (_available >= _selected.balance) { + return _selected.balance; } else { return _available; } @@ -233,34 +239,48 @@ contract Staking is IStaking, Ownable { /** * @notice Stake tokens for an account - * @param account address - * @param amount uint256 + * @param _account address + * @param _amount uint256 */ - function _stake(address account, uint256 amount) internal { - require(amount > 0, "AMOUNT_INVALID"); - stakes[account].duration = duration; - if (stakes[account].balance == 0) { - stakes[account].balance = amount; - stakes[account].timestamp = block.timestamp; + function _stake(address _account, uint256 _amount) internal { + if (_amount <= 0) revert AmountInvalid(_amount); + stakes[_account].duration = stakingDuration; + if (stakes[_account].balance == 0) { + stakes[_account].balance = _amount; + stakes[_account].timestamp = block.timestamp; + stakes[_account].maturity = + stakes[_account].timestamp + + stakes[_account].duration; } else { - uint256 nowAvailable = available(account); - stakes[account].balance = stakes[account].balance.add(amount); - stakes[account].timestamp = block.timestamp.sub( - nowAvailable.mul(stakes[account].duration).div(stakes[account].balance) - ); + uint256 _nowAvailable = available(_account); + stakes[_account].balance = stakes[_account].balance + _amount; + stakes[_account].timestamp = + block.timestamp - + ((_nowAvailable * stakes[_account].duration) / + stakes[_account].balance); + stakes[_account].maturity = + stakes[_account].timestamp + + stakes[_account].duration; } - token.safeTransferFrom(msg.sender, address(this), amount); - emit Transfer(address(0), account, amount); + stakingToken.safeTransferFrom(msg.sender, address(this), _amount); + emit Transfer(address(0), _account, _amount); } /** * @notice Unstake tokens - * @param account address - * @param amount uint256 + * @param _account address + * @param _amount uint256 */ - function _unstake(address account, uint256 amount) internal { - Stake storage selected = stakes[account]; - require(amount <= available(account), "AMOUNT_EXCEEDS_AVAILABLE"); - selected.balance = selected.balance.sub(amount); + function _unstake(address _account, uint256 _amount) internal { + Stake storage _selected = stakes[_account]; + if (_amount > available(_account)) revert AmountInvalid(_amount); + uint256 nowAvailable = available(_account); + _selected.balance = _selected.balance - _amount; + _selected.timestamp = + block.timestamp - + (((10000 - ((10000 * _amount) / nowAvailable)) * + (block.timestamp - _selected.timestamp)) / 10000); + stakingToken.safeTransfer(_account, _amount); + emit Transfer(_account, address(0), _amount); } } diff --git a/source/staking/contracts/interfaces/IStaking.sol b/source/staking/contracts/interfaces/IStaking.sol index 05b329638..638482ea9 100644 --- a/source/staking/contracts/interfaces/IStaking.sol +++ b/source/staking/contracts/interfaces/IStaking.sol @@ -1,12 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.17; interface IStaking { struct Stake { uint256 duration; uint256 balance; uint256 timestamp; + uint256 maturity; } // ERC-20 Transfer event @@ -27,6 +28,19 @@ interface IStaking { // Set Delegate event event SetDelegate(address indexed delegate, address indexed account); + error AmountInvalid(uint256); + error DelayInvalid(uint256); + error DelegateInvalid(address); + error DelegateNotProposed(address); + error DelegateNotSet(address); + error DelegateStaked(address); + error DelegateTaken(address); + error DurationInvalid(uint256); + error SenderHasDelegate(address sender, address delegate); + error TimelockActive(); + error Timelocked(); + error TimelockInactive(); + /** * @notice Stake tokens * @param amount uint256 @@ -54,6 +68,7 @@ interface IStaking { /** * @notice Balance of an account (ERC-20) + * @param account address */ function balanceOf(address account) external view returns (uint256); diff --git a/source/staking/deploys.js b/source/staking/deploys.js index d68d36b6d..653f1b507 100644 --- a/source/staking/deploys.js +++ b/source/staking/deploys.js @@ -1,14 +1,4 @@ module.exports = { - 1: '0x6d88B09805b90dad911E5C5A512eEDd984D6860B', - 5: '0x4A2C0926f21723C56f6899dedbBb3DAE83A4C5dF', - 30: '0xB1F80291d0EB60b75E7DF9422FB942d8FC575F4d', - 31: '0x71070c5607358fc25E3B4aaf4FB0a580c190252a', - 56: '0xDECA72bDA0cDf62d79b46B1585B380c9C6d57D9E', - 97: '0x4A2C0926f21723C56f6899dedbBb3DAE83A4C5dF', - 137: '0x71070c5607358fc25E3B4aaf4FB0a580c190252a', - 42161: '0x71070c5607358fc25E3B4aaf4FB0a580c190252a', - 43113: '0x50c13b3763075C9DA5Dfc4E88e77C3DaB4bf6af2', - 43114: '0x71070c5607358fc25E3B4aaf4FB0a580c190252a', - 80001: '0x4A2C0926f21723C56f6899dedbBb3DAE83A4C5dF', - 421613: '0xb1B586AfA8a2AaB42826Fb2Ab9896CD0c686d0F4', + 1: '0x9fc450F9AfE2833Eb44f9A1369Ab3678D3929860', + 5: '0x51F372bE64F0612532F28142cECF8F204B272622', } diff --git a/source/staking/deploys.js.d.ts b/source/staking/deploys.js.d.ts new file mode 100644 index 000000000..e1f05bafa --- /dev/null +++ b/source/staking/deploys.js.d.ts @@ -0,0 +1 @@ +declare module '@airswap/staking/deploys.js' diff --git a/source/staking/package.json b/source/staking/package.json index 5df5b417b..843e806f9 100644 --- a/source/staking/package.json +++ b/source/staking/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/staking", - "version": "4.0.0", + "version": "4.0.1", "description": "AirSwap: Stake Tokens", "license": "MIT", "repository": { @@ -13,7 +13,7 @@ "./deploys.js" ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", @@ -23,7 +23,7 @@ "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@openzeppelin/contracts": "^4.8.1" + "@openzeppelin/contracts": "^4.8.3" }, "publishConfig": { "access": "public" diff --git a/source/staking/scripts/deploy.js b/source/staking/scripts/deploy.js index 4b8fa4271..31fb738a8 100644 --- a/source/staking/scripts/deploy.js +++ b/source/staking/scripts/deploy.js @@ -3,39 +3,43 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const { chainNames, stakingTokenAddresses } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') +const { getReceiptUrl } = require('@airswap/utils') const stakingDeploys = require('../deploys.js') async function main() { await run('compile') const [deployer] = await ethers.getSigners() - console.log(`Deployer: ${deployer.address}`) - const chainId = await deployer.getChainId() const gasPrice = await deployer.getGasPrice() - const stakingToken = stakingTokenAddresses[chainId] const name = 'Staked AST' const symbol = 'sAST' - const duration = 12096000 - const minDelay = 2419200 + const stakingToken = stakingTokenAddresses[chainId] + const stakingDuration = 60 * 60 * 24 * 7 * 20 // Twenty Weeks + const minDurationChangeDelay = 60 * 60 * 24 * 7 // One Week + console.log(`\nname: ${name}`) + console.log(`symbol: ${symbol}`) + console.log(`stakingToken: ${stakingToken}`) + console.log(`stakingDuration: ${stakingDuration}`) + console.log(`minDurationChangeDelay: ${minDurationChangeDelay}\n`) + + console.log(`Deployer: ${deployer.address}`) console.log(`Deploying on ${chainNames[chainId].toUpperCase()}`) - console.log(`Staking token: ${stakingToken}`) - console.log(`Gas price: ${gasPrice / 10 ** 9} gwei`) + console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { const stakingFactory = await ethers.getContractFactory('Staking') const stakingContract = await stakingFactory.deploy( - stakingToken, name, symbol, - duration, - minDelay + stakingToken, + stakingDuration, + minDurationChangeDelay ) console.log( 'Deploying...', - getEtherscanURL(chainId, stakingContract.deployTransaction.hash) + getReceiptUrl(chainId, stakingContract.deployTransaction.hash) ) await stakingContract.deployed() console.log(`Deployed: ${stakingContract.address}`) diff --git a/source/staking/scripts/verify.js b/source/staking/scripts/verify.js index f7cdaa419..729054414 100644 --- a/source/staking/scripts/verify.js +++ b/source/staking/scripts/verify.js @@ -9,17 +9,23 @@ async function main() { console.log(`Deployer: ${deployer.address}`) const chainId = await deployer.getChainId() - const stakingToken = stakingTokenAddresses[chainId] const name = 'Staked AST' const symbol = 'sAST' - const duration = 12096000 - const minDelay = 2419200 + const stakingToken = stakingTokenAddresses[chainId] + const stakingDuration = 60 * 60 * 24 * 7 * 20 // Twenty Weeks + const minDurationChangeDelay = 60 * 60 * 24 * 7 // One Week console.log(`Contract: ${stakingDeploys[chainId]}`) console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { address: stakingDeploys[chainId], - constructorArguments: [stakingToken, name, symbol, duration, minDelay], + constructorArguments: [ + name, + symbol, + stakingToken, + stakingDuration, + minDurationChangeDelay, + ], }) } diff --git a/source/staking/test/Staking.js b/source/staking/test/Staking.js index e1d82833d..05a97091e 100644 --- a/source/staking/test/Staking.js +++ b/source/staking/test/Staking.js @@ -28,9 +28,9 @@ describe('Staking Unit', () => { token = await deployMockContract(deployer, IERC20.abi) stakingFactory = await ethers.getContractFactory('Staking') staking = await stakingFactory.deploy( - token.address, 'Staked AST', 'sAST', + token.address, DEFAULTDURATION, DEFAULTDELAY ) @@ -42,8 +42,8 @@ describe('Staking Unit', () => { const owner = await staking.owner() const name = await staking.name() const symbol = await staking.symbol() - const tokenAddress = await staking.token() - const defaultduration = await staking.duration() + const tokenAddress = await staking.stakingToken() + const defaultduration = await staking.stakingDuration() expect(owner).to.equal(deployer.address) expect(name).to.equal('Staked AST') @@ -89,12 +89,18 @@ describe('Staking Unit', () => { ) }) + it('non-owner cannot schedule a duration change', async () => { + await expect( + staking.connect(account1).scheduleDurationChange(DEFAULTDELAY) + ).to.be.revertedWith('Ownable: caller is not the owner') + }) + it('owner cannot reset unstaking duration during timelock', async () => { await staking.connect(deployer).scheduleDurationChange(DEFAULTDELAY) await expect( staking.connect(deployer).setDuration(DEFAULTDURATION) - ).to.be.revertedWith('TIMELOCKED') + ).to.be.revertedWith('Timelocked()') }) it('owner can set unstaking duration', async () => { @@ -110,14 +116,14 @@ describe('Staking Unit', () => { await staking.connect(deployer).setDuration(2 * DEFAULTDURATION) ).to.emit(staking, 'CompleteDurationChange') - const defaultduration = await staking.duration() + const defaultduration = await staking.stakingDuration() expect(defaultduration).to.equal(2 * DEFAULTDURATION) }) it('owner cannot set timelock to be less than minimum delay', async () => { await expect( staking.connect(deployer).scheduleDurationChange(0) - ).to.be.revertedWith('INVALID_DELAY') + ).to.be.revertedWith('DelayInvalid(0)') }) it('owner cannot reschedule timelock duration change', async () => { @@ -127,7 +133,7 @@ describe('Staking Unit', () => { await expect( staking.connect(deployer).scheduleDurationChange(DEFAULTDELAY) - ).to.be.revertedWith('TIMELOCK_ACTIVE') + ).to.be.revertedWith('TimelockActive()') }) it('Owner cannot set unstaking duration to zero', async () => { @@ -138,7 +144,7 @@ describe('Staking Unit', () => { await ethers.provider.send('evm_mine') await expect(staking.connect(deployer).setDuration(0)).to.be.revertedWith( - 'DURATION_INVALID' + 'DurationInvalid(0)' ) }) @@ -156,13 +162,19 @@ describe('Staking Unit', () => { await expect( staking.connect(deployer).setDuration(DEFAULTDURATION * 2) - ).to.be.revertedWith('TIMELOCK_INACTIVE') + ).to.be.revertedWith('TimelockInactive()') + }) + + it('Non-owner cannot cancel a duration change', async () => { + await expect( + staking.connect(account1).cancelDurationChange() + ).to.be.revertedWith('Ownable: caller is not the owner') }) it('Owner cannot cancel timelock before it is set', async () => { expect( staking.connect(deployer).cancelDurationChange() - ).to.be.revertedWith('TIMELOCK_INACTIVE') + ).to.be.revertedWith('TimelockInactive()') }) }) @@ -199,7 +211,7 @@ describe('Staking Unit', () => { it('unsuccessful staking when amount is 0', async () => { await expect(staking.connect(account1).stake('0')).to.be.revertedWith( - 'AMOUNT_INVALID' + 'AmountInvalid(0)' ) }) @@ -207,7 +219,7 @@ describe('Staking Unit', () => { await token.mock.transferFrom.returns(true) await staking.connect(account1).stake('100') await expect(staking.connect(account1).stake('0')).to.be.revertedWith( - 'AMOUNT_INVALID' + 'AmountInvalid(0)' ) }) @@ -259,7 +271,7 @@ describe('Staking Unit', () => { it('unsuccessful stakeFor when user staking for with an amount of 0', async () => { await expect( staking.connect(account1).stakeFor(account2.address, '0') - ).to.be.revertedWith('AMOUNT_INVALID') + ).to.be.revertedWith('AmountInvalid(0)') }) it('successful stakeFor when existing stake is not fully unstakeable', async () => { @@ -306,7 +318,7 @@ describe('Staking Unit', () => { await ethers.provider.send('evm_mine', [block['timestamp'] + 10]) await expect(staking.connect(account1).unstake('12')).to.be.revertedWith( - 'AMOUNT_EXCEEDS_AVAILABLE' + 'AmountInvalid(12)' ) }) @@ -380,6 +392,36 @@ describe('Staking Unit', () => { // every 1 block 2% is unstakeable expect(available).to.equal('10') }) + + it('the available balance should update', async () => { + await token.mock.transferFrom.returns(true) + await token.mock.transfer.returns(true) + await staking.connect(account1).stake('100') + + let block = await ethers.provider.getBlock() + await ethers.provider.send('evm_mine', [block['timestamp'] + 10]) + + await staking.connect(account1).unstake('10') + const available = await staking.available(account1.address) + expect(available).to.equal('1') + }) + + it('the previous available balance should be maintained when not entirely unstaked', async () => { + await token.mock.transferFrom.returns(true) + await token.mock.transfer.returns(true) + await staking.connect(account1).stake('100') + + let block = await ethers.provider.getBlock() + // With a duration of 100, increasing the timestamp by 10 will unlock 10% of the staked balance + await ethers.provider.send('evm_mine', [block['timestamp'] + 10]) + + // We withdraw 2 + await staking.connect(account1).unstake('2') + + // The unstaking operation mine a new block with a timestamp increased by 1 hence a new balance of 9 and not 8 + const available = await staking.available(account1.address) + expect(available).to.equal('9') + }) }) describe('Delegate', async () => { @@ -409,7 +451,7 @@ describe('Staking Unit', () => { await staking.connect(account2).setDelegate(account1.address) await expect( staking.connect(deployer).proposeDelegate(account2.address) - ).to.be.revertedWith('DELEGATE_IS_TAKEN') + ).to.be.revertedWith(`DelegateTaken("${account2.address}")`) }) it('unsuccessful delegate proposed if already delegating', async () => { @@ -417,7 +459,9 @@ describe('Staking Unit', () => { await staking.connect(account2).setDelegate(account1.address) await expect( staking.connect(account1).proposeDelegate(deployer.address) - ).to.be.revertedWith('SENDER_HAS_DELEGATE') + ).to.be.revertedWith( + `SenderHasDelegate("${account1.address}", "${deployer.address}")` + ) }) it('unsuccessful delegate set if already delegating', async () => { @@ -426,7 +470,7 @@ describe('Staking Unit', () => { await staking.connect(account2).setDelegate(account1.address) await expect( staking.connect(account2).setDelegate(deployer.address) - ).to.be.revertedWith('DELEGATE_IS_TAKEN') + ).to.be.revertedWith(`DelegateTaken("${deployer.address}")`) }) it('unsuccessful delegate set if delegate already staking', async () => { @@ -434,7 +478,7 @@ describe('Staking Unit', () => { await staking.connect(account2).stake('100') await expect( staking.connect(account1).proposeDelegate(account2.address) - ).to.be.revertedWith('DELEGATE_MUST_NOT_BE_STAKED') + ).to.be.revertedWith(`DelegateStaked("${account2.address}")`) }) it('unsuccessful delegate set if delegate stakes after proposal', async () => { @@ -443,13 +487,13 @@ describe('Staking Unit', () => { await staking.connect(account2).stake('100') await expect( staking.connect(account2).setDelegate(account1.address) - ).to.be.revertedWith('DELEGATE_MUST_NOT_BE_STAKED') + ).to.be.revertedWith(`DelegateStaked("${account1.address}")`) }) it('unsuccessful delegate set if not proposed', async () => { await expect( staking.connect(account2).setDelegate(account1.address) - ).to.be.revertedWith('MUST_BE_PROPOSED') + ).to.be.revertedWith(`DelegateNotProposed("${account1.address}")`) }) it('delegate can be removed', async () => { @@ -468,7 +512,7 @@ describe('Staking Unit', () => { it('unsuccessful delegate removed if not set as delegate', async () => { await expect( staking.connect(account1).unsetDelegate(account2.address) - ).to.be.revertedWith('DELEGATE_NOT_SET') + ).to.be.revertedWith(`DelegateNotSet("${account2.address}")`) }) it('successful staking with delegate', async () => { @@ -485,6 +529,19 @@ describe('Staking Unit', () => { expect(userStakes.timestamp).to.equal(block.timestamp) }) + it('successful staking for with delegate', async () => { + await token.mock.transferFrom.returns(true) + await staking.connect(account1).proposeDelegate(account2.address) + await staking.connect(account2).setDelegate(account1.address) + await staking.connect(account1).stakeFor(account2.address, '100') + const block = await ethers.provider.getBlock() + const userStakes = await staking + .connect(account2) + .getStakes(account1.address) + expect(userStakes.balance).to.equal(100) + expect(userStakes.timestamp).to.equal(block.timestamp) + }) + it('successful unstaking with delegate', async () => { await token.mock.transferFrom.returns(true) await token.mock.transfer.returns(true) diff --git a/source/swap-erc20/deploys.js b/source/swap-erc20/deploys.js index 60a6b0318..85f1adf19 100644 --- a/source/swap-erc20/deploys.js +++ b/source/swap-erc20/deploys.js @@ -9,6 +9,7 @@ module.exports = { 42161: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', 43113: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', 43114: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', + 59140: '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', 80001: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', 421613: '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', } diff --git a/source/swap-erc20/deploys.js.d.ts b/source/swap-erc20/deploys.js.d.ts new file mode 100644 index 000000000..6eb974286 --- /dev/null +++ b/source/swap-erc20/deploys.js.d.ts @@ -0,0 +1 @@ +declare module '@airswap/swap-erc20/deploys.js' diff --git a/source/swap-erc20/package.json b/source/swap-erc20/package.json index f0ad5bf58..ac10e3b95 100644 --- a/source/swap-erc20/package.json +++ b/source/swap-erc20/package.json @@ -13,7 +13,7 @@ "./deploys.js" ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf ./cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", @@ -23,7 +23,7 @@ "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@openzeppelin/contracts": "^4.8.1" + "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { "@airswap/constants": "^4.0.0", diff --git a/source/swap-erc20/scripts/deploy.js b/source/swap-erc20/scripts/deploy.js index 6d927f5ed..c64fecdaa 100644 --- a/source/swap-erc20/scripts/deploy.js +++ b/source/swap-erc20/scripts/deploy.js @@ -5,7 +5,7 @@ const { ethers, run } = require('hardhat') const poolDeploys = require('@airswap/pool/deploys.js') const stakingDeploys = require('@airswap/staking/deploys.js') const { chainNames } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') +const { getReceiptUrl } = require('@airswap/utils') const swapDeploys = require('../deploys.js') async function main() { @@ -40,7 +40,7 @@ async function main() { ) console.log( 'Deploying...', - getEtherscanURL(chainId, swapContract.deployTransaction.hash) + getReceiptUrl(chainId, swapContract.deployTransaction.hash) ) await swapContract.deployed() console.log(`Deployed: ${swapContract.address}`) diff --git a/source/swap/contracts/Swap.sol b/source/swap/contracts/Swap.sol index 9bd42bc20..bd52e98f2 100644 --- a/source/swap/contracts/Swap.sol +++ b/source/swap/contracts/Swap.sol @@ -32,7 +32,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { bytes32 public immutable DOMAIN_SEPARATOR; uint256 public constant FEE_DIVISOR = 10000; - uint256 internal constant MAX_ERROR_COUNT = 15; + uint256 internal constant MAX_ERROR_COUNT = 16; // Mapping of ERC165 interface ID to token adapter mapping(bytes4 => IAdapter) public adapters; @@ -121,7 +121,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { // Transfer from sender to affiliate if specified if (order.affiliateWallet != address(0)) { _transfer( - order.sender.wallet, + msg.sender, order.affiliateWallet, order.affiliateAmount, order.sender.id, @@ -135,7 +135,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { FEE_DIVISOR; if (protocolFeeAmount > 0) { _transfer( - order.sender.wallet, + msg.sender, protocolFeeWallet, protocolFeeAmount, order.sender.id, @@ -153,7 +153,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { if (royaltyAmount > 0) { if (royaltyAmount > maxRoyalty) revert RoyaltyExceedsMax(royaltyAmount); _transfer( - order.sender.wallet, + msg.sender, royaltyRecipient, royaltyAmount, order.sender.id, @@ -251,6 +251,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { * @param order Order to settle */ function check( + address senderWallet, Order calldata order ) public view returns (bytes32[] memory, uint256) { uint256 errCount; @@ -262,6 +263,13 @@ contract Swap is ISwap, Ownable2Step, EIP712 { order.s ); + if ( + order.sender.wallet != address(0) && order.sender.wallet != senderWallet + ) { + errors[errCount] = "SenderInvalid"; + errCount++; + } + if (signatory == address(0)) { errors[errCount] = "SignatureInvalid"; errCount++; @@ -325,7 +333,7 @@ contract Swap is ISwap, Ownable2Step, EIP712 { protocolFeeAmount + order.affiliateAmount; Party memory sender = Party( - order.sender.wallet, + senderWallet, order.sender.token, order.sender.kind, order.sender.id, diff --git a/source/swap/contracts/adapters/ERC1155Adapter.sol b/source/swap/contracts/adapters/ERC1155Adapter.sol index 6266e720f..21a59aa50 100644 --- a/source/swap/contracts/adapters/ERC1155Adapter.sol +++ b/source/swap/contracts/adapters/ERC1155Adapter.sol @@ -14,9 +14,11 @@ contract ERC1155Adapter is IAdapter { /** * @notice Function to wrap token transfer for different token types * @param party Party from whom swap would be made + * @dev Use call: "msg.sender" is Swap contract */ function hasAllowance(Party calldata party) external view returns (bool) { - return IERC1155(party.token).isApprovedForAll(party.wallet, address(this)); + return + IERC1155(party.token).isApprovedForAll(party.wallet, address(msg.sender)); } /** @@ -35,6 +37,7 @@ contract ERC1155Adapter is IAdapter { * @param amount uint256 Amount for ERC-1155 * @param id uint256 token ID for ERC-1155 * @param token address Contract address of token + * @dev Use delegatecall: "this" is Swap contract */ function transfer( address from, diff --git a/source/swap/contracts/adapters/ERC20Adapter.sol b/source/swap/contracts/adapters/ERC20Adapter.sol index ac4f6f040..0c847f6cf 100644 --- a/source/swap/contracts/adapters/ERC20Adapter.sol +++ b/source/swap/contracts/adapters/ERC20Adapter.sol @@ -16,10 +16,11 @@ contract ERC20Adapter is IAdapter { /** * @notice Function to wrap token transfer for different token types * @param party Party from whom swap would be made + * @dev Use call: "msg.sender" is Swap contract */ function hasAllowance(Party calldata party) external view returns (bool) { return - IERC20(party.token).allowance(party.wallet, address(this)) >= + IERC20(party.token).allowance(party.wallet, address(msg.sender)) >= party.amount; } @@ -38,6 +39,7 @@ contract ERC20Adapter is IAdapter { * @param amount uint256 Amount for ERC20 * @param id uint256 ID, must be 0 for this contract * @param token address Contract address of token + * @dev Use delegatecall: "this" is Swap contract */ function transfer( address from, diff --git a/source/swap/contracts/adapters/ERC721Adapter.sol b/source/swap/contracts/adapters/ERC721Adapter.sol index cda4edb12..8d5257216 100644 --- a/source/swap/contracts/adapters/ERC721Adapter.sol +++ b/source/swap/contracts/adapters/ERC721Adapter.sol @@ -14,9 +14,10 @@ contract ERC721Adapter is IAdapter { /** * @notice Function to wrap token transfer for different token types * @param party Party from whom swap would be made + * @dev Use call: "msg.sender" is Swap contract */ function hasAllowance(Party calldata party) external view returns (bool) { - return IERC721(party.token).isApprovedForAll(party.wallet, address(this)); + return IERC721(party.token).getApproved(party.id) == address(msg.sender); } /** @@ -34,6 +35,7 @@ contract ERC721Adapter is IAdapter { * @param amount uint256, must be 0 for this contract * @param id uint256 ID for ERC721 * @param token address Contract address of token + * @dev Use delegatecall: "this" is Swap contract */ function transfer( address from, diff --git a/source/swap/deploys-adapters.js b/source/swap/deploys-adapters.js index 9c1a2926b..15369d9b4 100644 --- a/source/swap/deploys-adapters.js +++ b/source/swap/deploys-adapters.js @@ -1,62 +1,17 @@ module.exports = { 1: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', + '0xa71c528c89f3acf049e1ce00199dac9b48a70e18', + '0xee6f8e232d27aacc65e92dbf7c034d1061b8938d', + '0xe790b7919deaf5bc84809d8bec98e07e698e9e76', ], 5: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', + '0x210b7145737388430434e966DB651E763362a35f', + '0xD2540236fD98DAeBa63Dd34C0216e78fDbF19B9c', + '0x48A0dac1bd81B0E11530108e6666ab32B567459B', ], - 30: [ + 59140: [ + '0xa9964A60A620C00150114614F745646b898cFe32', '0xCb3839A953533339273e251Dd179515b7bA9a309', '0xd82FA167727a4dc6D6F55830A2c47aBbB4b3a0F8', - '0x99568Ce6c9901097150403B7629CF426B859BC22', - ], - 31: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 56: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 97: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 137: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 42161: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 43113: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 43114: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 80001: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', - ], - 421613: [ - '0xAa7fC83C31db055261cb88e5cAa02CAFe12c8dCD', - '0x1E92FFC1c39a0a982c462f521a135a0407b21B71', - '0xa9964A60A620C00150114614F745646b898cFe32', ], } diff --git a/source/swap/deploys.js b/source/swap/deploys.js index bb67665d0..dbc3d137d 100644 --- a/source/swap/deploys.js +++ b/source/swap/deploys.js @@ -1,14 +1,5 @@ module.exports = { - 1: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 5: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 30: '0x6787cD07B0E6934BA9c3D1eBf3866eF091697128', - 31: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 56: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 97: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 137: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 42161: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 43113: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 43114: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 80001: '0xCb3839A953533339273e251Dd179515b7bA9a309', - 421613: '0xCb3839A953533339273e251Dd179515b7bA9a309', + 1: '0x6aAf11d89bb380499EB14ddDE5ac6b45a0e15bEc', + 5: '0x974B5023E5b45a222E99036c3C9604D388E2d2B7', + 59140: '0x99568Ce6c9901097150403B7629CF426B859BC22', } diff --git a/source/swap/deploys.js.d.ts b/source/swap/deploys.js.d.ts new file mode 100644 index 000000000..a3d7be66b --- /dev/null +++ b/source/swap/deploys.js.d.ts @@ -0,0 +1 @@ +declare module '@airswap/swap/deploys.js' diff --git a/source/swap/package.json b/source/swap/package.json index aae60dc99..f7450a744 100644 --- a/source/swap/package.json +++ b/source/swap/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/swap", - "version": "4.0.2", + "version": "4.0.3", "description": "AirSwap: Atomic Token Swap", "license": "MIT", "repository": { @@ -10,20 +10,23 @@ "files": [ "./build", "./typechain", - "./deploys.js" + "./deploys.js", + "./deploys-adapters.js" ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf ./cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", "test": "hardhat test", "test:unit": "hardhat test", "deploy": "hardhat run ./scripts/deploy.js", - "verify": "hardhat run ./scripts/verify.js" + "verify": "hardhat run ./scripts/verify.js", + "deploy-adapters": "hardhat run ./scripts/deploy-adapters.js", + "verify-adapters": "hardhat run ./scripts/verify-adapters.js" }, "dependencies": { - "@openzeppelin/contracts": "^4.8.1" + "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { "@airswap/constants": "^4.0.0", diff --git a/source/swap/scripts/deploy-adapters.js b/source/swap/scripts/deploy-adapters.js new file mode 100644 index 000000000..c11c92de0 --- /dev/null +++ b/source/swap/scripts/deploy-adapters.js @@ -0,0 +1,60 @@ +/* eslint-disable no-console */ +const fs = require('fs') +const Confirm = require('prompt-confirm') +const { ethers, run } = require('hardhat') +const { chainNames, ChainIds } = require('@airswap/constants') +const { getReceiptUrl } = require('@airswap/utils') +const adapterDeploys = require('../deploys-adapters.js') + +async function main() { + await run('compile') + const [deployer] = await ethers.getSigners() + const gasPrice = await deployer.getGasPrice() + const chainId = await deployer.getChainId() + if (chainId === ChainIds.HARDHAT) { + console.log('Value for --network flag is required') + return + } + + const adapters = ['ERC20Adapter', 'ERC721Adapter', 'ERC1155Adapter'] + + console.log(`\nadapters: ${JSON.stringify(adapters)}`) + + console.log(`Deployer: ${deployer.address}`) + console.log(`Deploying on ${chainNames[chainId].toUpperCase()}`) + console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) + + const prompt = new Confirm('Proceed to deploy?') + if (await prompt.run()) { + for (let i = 0; i < adapters.length; i++) { + const adapterContract = await ( + await ethers.getContractFactory(adapters[i]) + ).deploy() + console.log( + `Deploying ${adapters[i]}...`, + getReceiptUrl(chainId, adapterContract.deployTransaction.hash) + ) + await adapterContract.deployed() + adapters[i] = adapterContract.address + } + adapterDeploys[chainId] = adapters + fs.writeFileSync( + './deploys-adapters.js', + `module.exports = ${JSON.stringify(adapterDeploys, null, '\t')}` + ) + console.log('Updated deploys-adapters.js') + + console.log( + `\nVerify with "yarn verify-adapters --network ${chainNames[ + chainId + ].toLowerCase()}"\n` + ) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/source/swap/scripts/deploy.js b/source/swap/scripts/deploy.js index f2eb95d1f..402fe2c5e 100644 --- a/source/swap/scripts/deploy.js +++ b/source/swap/scripts/deploy.js @@ -3,8 +3,8 @@ const fs = require('fs') const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const poolDeploys = require('@airswap/pool/deploys.js') -const { chainNames, chainIds, tokenKinds } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') +const { chainNames, ChainIds, TokenKinds } = require('@airswap/constants') +const { getReceiptUrl } = require('@airswap/utils') const swapDeploys = require('../deploys.js') const adapterDeploys = require('../deploys-adapters.js') @@ -13,47 +13,36 @@ async function main() { const [deployer] = await ethers.getSigners() const gasPrice = await deployer.getGasPrice() const chainId = await deployer.getChainId() - if (chainId === chainIds.HARDHAT) { + if (chainId === ChainIds.HARDHAT) { console.log('Value for --network flag is required') return } - console.log(`\nNetwork: ${chainNames[chainId].toUpperCase()}`) - console.log(`Deployer: ${deployer.address}\n`) - - const protocolFeeWallet = poolDeploys[chainId] + const requiredSenderKind = TokenKinds.ERC20 const protocolFee = 7 - const adapters = ['ERC20Adapter', 'ERC721Adapter', 'ERC1155Adapter'] + const protocolFeeWallet = poolDeploys[chainId] - console.log(`adapters: ${JSON.stringify(adapters)}`) + console.log(`\nadapters: ${JSON.stringify(adapterDeploys[chainId])}`) + console.log(`requiredSenderKind: ${requiredSenderKind}`) console.log(`protocolFee: ${protocolFee}`) - console.log(`protocolFeeWallet: ${protocolFeeWallet}`) + console.log(`protocolFeeWallet: ${protocolFeeWallet}\n`) - console.log(`\nGas price: ${gasPrice / 10 ** 9} gwei`) + console.log(`Deployer: ${deployer.address}`) + console.log(`Deploying on ${chainNames[chainId].toUpperCase()}`) + console.log(`Gas price: ${gasPrice / 10 ** 9} gwei\n`) const prompt = new Confirm('Proceed to deploy?') if (await prompt.run()) { - for (let i = 0; i < adapters.length; i++) { - const adapterContract = await ( - await ethers.getContractFactory(adapters[i]) - ).deploy() - console.log( - `Deploying ${adapters[i]}...`, - getEtherscanURL(chainId, adapterContract.deployTransaction.hash) - ) - await adapterContract.deployed() - adapters[i] = adapterContract.address - } const swapFactory = await ethers.getContractFactory('Swap') const swapContract = await swapFactory.deploy( - adapters, - tokenKinds.ERC20, + adapterDeploys[chainId], + requiredSenderKind, protocolFee, protocolFeeWallet ) console.log( 'Deploying...', - getEtherscanURL(chainId, swapContract.deployTransaction.hash) + getReceiptUrl(chainId, swapContract.deployTransaction.hash) ) await swapContract.deployed() console.log(`Deployed: ${swapContract.address}`) @@ -65,12 +54,6 @@ async function main() { ) console.log('Updated deploys.js') - adapterDeploys[chainId] = adapters - fs.writeFileSync( - './deploys-adapters.js', - `module.exports = ${JSON.stringify(adapterDeploys, null, '\t')}` - ) - console.log('Updated deploys-adapters.js') console.log( `\nVerify with "yarn verify --network ${chainNames[ chainId diff --git a/source/swap/scripts/verify-adapters.js b/source/swap/scripts/verify-adapters.js new file mode 100644 index 000000000..ee482299a --- /dev/null +++ b/source/swap/scripts/verify-adapters.js @@ -0,0 +1,32 @@ +/* eslint-disable no-console */ +const { ethers, run } = require('hardhat') +const { chainNames } = require('@airswap/constants') +const adapterDeploys = require('../deploys-adapters.js') + +async function main() { + await run('compile') + const [deployer] = await ethers.getSigners() + console.log(`Deployer: ${deployer.address}`) + + const chainId = await deployer.getChainId() + + console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) + + for (let i = 0; i < adapterDeploys[chainId].length; i++) { + try { + await run('verify:verify', { + address: adapterDeploys[chainId][i], + constructorArguments: [], + }) + } catch (e) { + console.log(e) + } + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/source/swap/scripts/verify.js b/source/swap/scripts/verify.js index c1d16bba8..ffbde7b32 100644 --- a/source/swap/scripts/verify.js +++ b/source/swap/scripts/verify.js @@ -1,7 +1,7 @@ /* eslint-disable no-console */ const { ethers, run } = require('hardhat') const poolDeploys = require('@airswap/pool/deploys.js') -const { chainNames, tokenKinds } = require('@airswap/constants') +const { chainNames, TokenKinds } = require('@airswap/constants') const swapDeploys = require('../deploys.js') const adapterDeploys = require('../deploys-adapters.js') @@ -11,23 +11,17 @@ async function main() { console.log(`Deployer: ${deployer.address}`) const chainId = await deployer.getChainId() - const protocolFeeWallet = poolDeploys[chainId] + const requiredSenderKind = TokenKinds.ERC20 const protocolFee = 7 + const protocolFeeWallet = poolDeploys[chainId] console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) - for (let i = 0; i < adapterDeploys[chainId].length; i++) { - await run('verify:verify', { - address: adapterDeploys[chainId][i], - constructorArguments: [], - }) - } - await run('verify:verify', { address: swapDeploys[chainId], constructorArguments: [ adapterDeploys[chainId], - tokenKinds.ERC20, + requiredSenderKind, protocolFee, protocolFeeWallet, ], diff --git a/source/swap/test/ERC1155Adapter.js b/source/swap/test/ERC1155Adapter.js index 15ab96049..909c5a64e 100644 --- a/source/swap/test/ERC1155Adapter.js +++ b/source/swap/test/ERC1155Adapter.js @@ -2,7 +2,7 @@ const { expect } = require('chai') const { ethers, waffle } = require('hardhat') const IERC1155 = require('@openzeppelin/contracts/build/contracts/IERC1155.json') const { deployMockContract } = waffle -const { ADDRESS_ZERO, tokenKinds } = require('@airswap/constants') +const { ADDRESS_ZERO, TokenKinds } = require('@airswap/constants') let snapshotId let adapter @@ -25,7 +25,7 @@ describe('ERC1155Adapter Unit', () => { party = { wallet: ADDRESS_ZERO, token: token.address, - kind: tokenKinds.ERC1155, + kind: TokenKinds.ERC1155, id: '0', amount: '1', } @@ -33,11 +33,21 @@ describe('ERC1155Adapter Unit', () => { it('hasAllowance succeeds', async () => { await token.mock.isApprovedForAll - .withArgs(party.wallet, adapter.address) + .withArgs(party.wallet, anyone.address) .returns(true) expect(await adapter.connect(anyone).hasAllowance(party)).to.be.equal(true) }) + it('hasAllowance fails for wrong address', async () => { + await token.mock.isApprovedForAll + .withArgs(party.wallet, anyone.address) + .returns(false) + await token.mock.isApprovedForAll + .withArgs(party.wallet, deployer.address) + .returns(true) + expect(await adapter.connect(anyone).hasAllowance(party)).to.be.equal(false) + }) + it('hasBalance succeeds', async () => { await token.mock.balanceOf.returns(party.amount) expect(await adapter.hasBalance(party)).to.be.equal(true) diff --git a/source/swap/test/ERC20Adapter.js b/source/swap/test/ERC20Adapter.js index 550b7a0a1..0179b3f73 100644 --- a/source/swap/test/ERC20Adapter.js +++ b/source/swap/test/ERC20Adapter.js @@ -2,7 +2,7 @@ const { expect } = require('chai') const { ethers, waffle } = require('hardhat') const IERC20 = require('@openzeppelin/contracts/build/contracts/IERC20.json') const { deployMockContract } = waffle -const { ADDRESS_ZERO, tokenKinds } = require('@airswap/constants') +const { ADDRESS_ZERO, TokenKinds } = require('@airswap/constants') let snapshotId let adapter @@ -25,7 +25,7 @@ describe('ERC20Adapter Unit', () => { party = { wallet: ADDRESS_ZERO, token: token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, id: '0', amount: '1', } @@ -33,11 +33,21 @@ describe('ERC20Adapter Unit', () => { it('hasAllowance succeeds', async () => { await token.mock.allowance - .withArgs(party.wallet, adapter.address) + .withArgs(party.wallet, anyone.address) .returns('1') expect(await adapter.connect(anyone).hasAllowance(party)).to.be.equal(true) }) + it('hasAllowance fails for wrong address', async () => { + await token.mock.allowance + .withArgs(party.wallet, anyone.address) + .returns('0') + await token.mock.allowance + .withArgs(party.wallet, deployer.address) + .returns('1') + expect(await adapter.connect(anyone).hasAllowance(party)).to.be.equal(false) + }) + it('hasBalance succeeds', async () => { await token.mock.balanceOf.returns('1') expect(await adapter.hasBalance(party)).to.be.equal(true) diff --git a/source/swap/test/ERC721Adapter.js b/source/swap/test/ERC721Adapter.js index 63e5c8c79..6e4e062a7 100644 --- a/source/swap/test/ERC721Adapter.js +++ b/source/swap/test/ERC721Adapter.js @@ -2,7 +2,7 @@ const { expect } = require('chai') const { ethers, waffle } = require('hardhat') const IERC721 = require('@openzeppelin/contracts/build/contracts/IERC721.json') const { deployMockContract } = waffle -const { ADDRESS_ZERO, tokenKinds } = require('@airswap/constants') +const { ADDRESS_ZERO, TokenKinds } = require('@airswap/constants') let snapshotId let adapter @@ -25,19 +25,22 @@ describe('ERC721Adapter Unit', () => { party = { wallet: ADDRESS_ZERO, token: token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, id: '1', amount: '0', } }) it('hasAllowance succeeds', async () => { - await token.mock.isApprovedForAll - .withArgs(party.wallet, adapter.address) - .returns(true) + await token.mock.getApproved.withArgs(party.id).returns(anyone.address) expect(await adapter.connect(anyone).hasAllowance(party)).to.be.equal(true) }) + it('hasAllowance fails for wrong address', async () => { + await token.mock.getApproved.withArgs(party.id).returns(deployer.address) + expect(await adapter.connect(anyone).hasAllowance(party)).to.be.equal(false) + }) + it('hasBalance succeeds', async () => { await token.mock.ownerOf.returns(party.wallet) expect(await adapter.hasBalance(party)).to.be.equal(true) diff --git a/source/swap/test/Swap.js b/source/swap/test/Swap.js index b25f9daaf..b90c3e90d 100644 --- a/source/swap/test/Swap.js +++ b/source/swap/test/Swap.js @@ -5,7 +5,7 @@ const { deployMockContract } = waffle const IERC20 = require('@openzeppelin/contracts/build/contracts/IERC20.json') const IERC721 = require('@openzeppelin/contracts/build/contracts/ERC721Royalty.json') const { createOrder, createOrderSignature } = require('@airswap/utils') -const { tokenKinds, ADDRESS_ZERO } = require('@airswap/constants') +const { TokenKinds, ADDRESS_ZERO } = require('@airswap/constants') const CHAIN_ID = 31337 const PROTOCOL_FEE = '30' @@ -41,7 +41,7 @@ async function createSignedOrder(params, signatory) { signer: { wallet: signer.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, id: '0', amount: DEFAULT_AMOUNT, ...params.signer, @@ -49,7 +49,7 @@ async function createSignedOrder(params, signatory) { sender: { wallet: sender.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, id: '0', amount: DEFAULT_AMOUNT, ...params.sender, @@ -92,7 +92,7 @@ describe('Swap Unit', () => { await ethers.getContractFactory('Swap') ).deploy( [erc20adapter.address, erc721adapter.address], - tokenKinds.ERC20, + TokenKinds.ERC20, PROTOCOL_FEE, protocolFeeWallet.address ) @@ -104,7 +104,7 @@ describe('Swap Unit', () => { await expect( ( await ethers.getContractFactory('Swap') - ).deploy([], tokenKinds.ERC20, PROTOCOL_FEE, protocolFeeWallet.address) + ).deploy([], TokenKinds.ERC20, PROTOCOL_FEE, protocolFeeWallet.address) ).to.be.revertedWith('AdaptersInvalid()') }) @@ -112,7 +112,7 @@ describe('Swap Unit', () => { await expect( ( await ethers.getContractFactory('Swap') - ).deploy([], tokenKinds.ERC20, PROTOCOL_FEE, ADDRESS_ZERO) + ).deploy([], TokenKinds.ERC20, PROTOCOL_FEE, ADDRESS_ZERO) ).to.be.revertedWith('FeeWalletInvalid()') }) @@ -140,7 +140,7 @@ describe('Swap Unit', () => { await expect( ( await ethers.getContractFactory('Swap') - ).deploy([], tokenKinds.ERC20, INVALID_FEE, protocolFeeWallet.address) + ).deploy([], TokenKinds.ERC20, INVALID_FEE, protocolFeeWallet.address) ).to.be.revertedWith('FeeInvalid()') }) @@ -202,7 +202,7 @@ describe('Swap Unit', () => { { signer: { token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, id: '1', amount: '0', }, @@ -226,7 +226,7 @@ describe('Swap Unit', () => { { signer: { token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, id: '1', amount: '0', }, @@ -250,7 +250,7 @@ describe('Swap Unit', () => { { signer: { token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, id: '1', amount: '0', }, @@ -271,7 +271,7 @@ describe('Swap Unit', () => { { signer: { token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, id: '1', amount: '0', }, @@ -484,7 +484,7 @@ describe('Swap Unit', () => { ).to.be.revertedWith('SenderInvalid()') }) - it('a sender may take an order not specified for another sender', async () => { + it('a sender may take an order not specified for another sender (public order)', async () => { const order = await createSignedOrder( { sender: { @@ -559,7 +559,7 @@ describe('Swap Unit', () => { const order = await createSignedOrder( { signer: { - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, token: erc721token.address, amount: '0', id: '0', @@ -580,7 +580,7 @@ describe('Swap Unit', () => { await erc20token.mock.allowance.returns(DEFAULT_AMOUNT + PROTOCOL_FEE) await erc20token.mock.balanceOf.returns(DEFAULT_AMOUNT + PROTOCOL_FEE) const order = await createSignedOrder({}, signer) - const errors = await swap.check(order) + const errors = await swap.check(sender.address, order) expect(errors[1]).to.equal(0) }) @@ -588,7 +588,7 @@ describe('Swap Unit', () => { await erc20token.mock.allowance.returns('0') await erc20token.mock.balanceOf.returns('0') const order = await createSignedOrder({}, signer) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('SignerAllowanceLow') ) @@ -615,7 +615,7 @@ describe('Swap Unit', () => { }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('SignerTokenKindUnknown') ) @@ -628,12 +628,12 @@ describe('Swap Unit', () => { const order = await createSignedOrder( { sender: { - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, }, }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('SenderTokenInvalid') ) @@ -649,7 +649,7 @@ describe('Swap Unit', () => { await expect( swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) ).to.emit(swap, 'Swap') - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('NonceAlreadyUsed') ) @@ -663,7 +663,7 @@ describe('Swap Unit', () => { signer ) await swap.connect(signer).cancelUpTo(3) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('NonceTooLow') ) @@ -675,12 +675,42 @@ describe('Swap Unit', () => { ...order, v: '0', } - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('SignatureInvalid') ) }) + it('check sender MAY NOT take an order specified for another sender', async () => { + const order = await createSignedOrder( + { + sender: { + wallet: sender.address, + }, + }, + signer + ) + const [errors] = await swap.check(anyone.address, order) + expect(errors[0]).to.be.equal( + ethers.utils.formatBytes32String('SenderInvalid') + ) + }) + + it('check sender MAY take an order not specified for another sender', async () => { + await erc20token.mock.allowance.returns(DEFAULT_AMOUNT + PROTOCOL_FEE) + await erc20token.mock.balanceOf.returns(DEFAULT_AMOUNT + PROTOCOL_FEE) + const order = await createSignedOrder( + { + sender: { + wallet: ADDRESS_ZERO, + }, + }, + signer + ) + const errors = await swap.check(sender.address, order) + expect(errors[1]).to.equal(0) + }) + it('check with incorrect authorized signatory fails', async () => { await expect(swap.connect(signer).authorize(anyone.address)).to.emit( swap, @@ -694,7 +724,7 @@ describe('Swap Unit', () => { }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('SignatoryUnauthorized') ) @@ -709,7 +739,7 @@ describe('Swap Unit', () => { }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('Unauthorized') ) @@ -722,7 +752,7 @@ describe('Swap Unit', () => { }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('OrderExpired') ) @@ -738,7 +768,7 @@ describe('Swap Unit', () => { }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('Unauthorized') ) @@ -757,7 +787,7 @@ describe('Swap Unit', () => { }, signer ) - const errors = await swap.check(order) + const errors = await swap.check(sender.address, order) expect(errors[1]).to.equal(0) }) @@ -771,7 +801,7 @@ describe('Swap Unit', () => { }, signer ) - const [errors] = await swap.check(order) + const [errors] = await swap.check(sender.address, order) expect(errors[0]).to.be.equal( ethers.utils.formatBytes32String('AffiliateAmountInvalid') ) diff --git a/source/swap/test/SwapIntegration.js b/source/swap/test/SwapIntegration.js index 47bccd7cc..e9b41fc82 100644 --- a/source/swap/test/SwapIntegration.js +++ b/source/swap/test/SwapIntegration.js @@ -1,7 +1,7 @@ const { expect } = require('chai') const { ethers } = require('hardhat') const { createOrder, createOrderSignature } = require('@airswap/utils') -const { tokenKinds } = require('@airswap/constants') +const { TokenKinds, ADDRESS_ZERO } = require('@airswap/constants') const ERC20PresetMinterPauser = require('@openzeppelin/contracts/build/contracts/ERC20PresetMinterPauser.json') const ERC1155PresetMinterPauser = require('@openzeppelin/contracts/build/contracts/ERC1155PresetMinterPauser.json') @@ -35,7 +35,7 @@ async function createSignedOrder(params, signatory) { signer: { wallet: signer.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, id: '0', amount: DEFAULT_AMOUNT, ...params.signer, @@ -43,7 +43,7 @@ async function createSignedOrder(params, signatory) { sender: { wallet: sender.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, id: '0', amount: DEFAULT_AMOUNT, ...params.sender, @@ -113,7 +113,7 @@ describe('Swap Integration', () => { await ethers.getContractFactory('Swap') ).deploy( [erc20adapter.address, erc721adapter.address, erc1155adapter.address], - tokenKinds.ERC20, + TokenKinds.ERC20, PROTOCOL_FEE, protocolFeeWallet.address ) @@ -131,15 +131,66 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc20token.address, - kind: tokenKinds.ERC20, - amount: '1', + kind: TokenKinds.ERC20, + amount: '10000', id: '0', }, sender: { wallet: sender.address, token: erc20token2.address, - kind: tokenKinds.ERC20, - amount: '1', + kind: TokenKinds.ERC20, + amount: '10000', + id: '0', + }, + }, + signer + ) + expect(await erc20token.balanceOf(signer.address)).to.be.equal( + DEFAULT_AMOUNT + ) + expect(await erc20token2.balanceOf(sender.address)).to.be.equal( + DEFAULT_AMOUNT + ) + expect(await erc20token.balanceOf(sender.address)).to.be.equal('0') + expect(await erc20token2.balanceOf(signer.address)).to.be.equal('0') + + await expect( + swap.connect(sender).swap(sender.address, MAX_ROYALTY, order) + ).to.emit(swap, 'Swap') + + expect(await erc20token.balanceOf(signer.address)).to.be.equal( + DEFAULT_AMOUNT - order.signer.amount + ) + expect(await erc20token2.balanceOf(sender.address)).to.be.equal( + DEFAULT_AMOUNT - order.sender.amount - PROTOCOL_FEE + ) + expect(await erc20token.balanceOf(sender.address)).to.be.equal( + order.signer.amount + ) + expect(await erc20token2.balanceOf(signer.address)).to.be.equal( + order.sender.amount + ) + }) + + it('public swap ERC20 for ERC20 succeeds', async () => { + await erc20token.connect(deployer).mint(signer.address, DEFAULT_AMOUNT) + await erc20token.connect(signer).approve(swap.address, DEFAULT_AMOUNT) + await erc20token2.connect(deployer).mint(sender.address, DEFAULT_AMOUNT) + await erc20token2.connect(sender).approve(swap.address, DEFAULT_AMOUNT) + const order = await createSignedOrder( + { + signer: { + wallet: signer.address, + token: erc20token.address, + kind: TokenKinds.ERC20, + amount: '10000', + id: '0', + }, + sender: { + wallet: ADDRESS_ZERO, + token: erc20token2.address, + kind: TokenKinds.ERC20, + amount: '10000', id: '0', }, }, @@ -162,7 +213,7 @@ describe('Swap Integration', () => { DEFAULT_AMOUNT - order.signer.amount ) expect(await erc20token2.balanceOf(sender.address)).to.be.equal( - DEFAULT_AMOUNT - order.sender.amount + DEFAULT_AMOUNT - order.sender.amount - PROTOCOL_FEE ) expect(await erc20token.balanceOf(sender.address)).to.be.equal( order.signer.amount @@ -182,14 +233,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, amount: '0', id: '1', }, sender: { wallet: sender.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '1', id: '0', }, @@ -215,14 +266,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc1155token.address, - kind: tokenKinds.ERC1155, + kind: TokenKinds.ERC1155, amount: '1', id: '1', }, sender: { wallet: sender.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '1', id: '0', }, @@ -251,14 +302,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, amount: '0', id: '1', }, sender: { wallet: sender.address, token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, amount: '1', id: '0', }, @@ -284,14 +335,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, amount: '0', id: '1', }, sender: { wallet: sender.address, token: erc1155token.address, - kind: tokenKinds.ERC1155, + kind: TokenKinds.ERC1155, amount: '1', id: '1', }, @@ -315,14 +366,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '1', id: '0', }, sender: { wallet: sender.address, token: erc20token2.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '10000', id: '0', }, @@ -356,14 +407,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '1', id: '0', }, sender: { wallet: sender.address, token: erc20token2.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '10000', id: '0', }, @@ -398,14 +449,14 @@ describe('Swap Integration', () => { signer: { wallet: signer.address, token: erc721token.address, - kind: tokenKinds.ERC721, + kind: TokenKinds.ERC721, amount: '0', id: '1', }, sender: { wallet: sender.address, token: erc20token.address, - kind: tokenKinds.ERC20, + kind: TokenKinds.ERC20, amount: '1000', id: '0', }, diff --git a/source/wrapper/contracts/WETH9.sol b/source/wrapper/contracts/WETH9.sol new file mode 100644 index 000000000..ac7325b61 --- /dev/null +++ b/source/wrapper/contracts/WETH9.sol @@ -0,0 +1,80 @@ +// Copyright (C) 2015, 2016, 2017 Dapphub + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +pragma solidity >=0.4.22 <0.6; + +contract WETH9 { + string public name = "Wrapped Ether"; + string public symbol = "WETH"; + uint8 public decimals = 18; + + event Approval(address indexed src, address indexed guy, uint wad); + event Transfer(address indexed src, address indexed dst, uint wad); + event Deposit(address indexed dst, uint wad); + event Withdrawal(address indexed src, uint wad); + + mapping(address => uint) public balanceOf; + mapping(address => mapping(address => uint)) public allowance; + + function() external payable { + deposit(); + } + + function deposit() public payable { + balanceOf[msg.sender] += msg.value; + emit Deposit(msg.sender, msg.value); + } + + function withdraw(uint wad) public { + require(balanceOf[msg.sender] >= wad); + balanceOf[msg.sender] -= wad; + msg.sender.transfer(wad); + emit Withdrawal(msg.sender, wad); + } + + function totalSupply() public view returns (uint) { + return address(this).balance; + } + + function approve(address guy, uint wad) public returns (bool) { + allowance[msg.sender][guy] = wad; + emit Approval(msg.sender, guy, wad); + return true; + } + + function transfer(address dst, uint wad) public returns (bool) { + return transferFrom(msg.sender, dst, wad); + } + + function transferFrom( + address src, + address dst, + uint wad + ) public returns (bool) { + require(balanceOf[src] >= wad); + + if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) { + require(allowance[src][msg.sender] >= wad); + allowance[src][msg.sender] -= wad; + } + + balanceOf[src] -= wad; + balanceOf[dst] += wad; + + emit Transfer(src, dst, wad); + + return true; + } +} diff --git a/source/wrapper/deploys-weth.js b/source/wrapper/deploys-weth.js new file mode 100644 index 000000000..aafede436 --- /dev/null +++ b/source/wrapper/deploys-weth.js @@ -0,0 +1,15 @@ +module.exports = { + 1: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + 5: '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6', + 30: '0x967f8799af07df1534d48a95a5c9febe92c53ae0', + 31: '0x09b6ca5e4496238a1f176aea6bb607db96c2286e', + 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', + 97: '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd', + 137: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + 42161: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + 43113: '0xd9d01a9f7c810ec035c0e42cb9e80ef44d7f8692', + 43114: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', + 59140: '0x2C1b868d6596a18e32E61B901E4060C872647b6C', + 80001: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', + 421613: '0xee01c0cd76354c383b8c7b4e65ea88d00b06f36f', +} diff --git a/source/wrapper/deploys.js.d.ts b/source/wrapper/deploys.js.d.ts new file mode 100644 index 000000000..66dec78dc --- /dev/null +++ b/source/wrapper/deploys.js.d.ts @@ -0,0 +1,2 @@ +declare module '@airswap/wrapper/deploys.js' +declare module '@airswap/wrapper/deploys-weth.js' diff --git a/source/wrapper/package.json b/source/wrapper/package.json index 7bf0625d6..a6f64a252 100644 --- a/source/wrapper/package.json +++ b/source/wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/wrapper", - "version": "4.0.2", + "version": "4.0.3", "description": "AirSwap: Wrap and Unwrap Native Tokens", "license": "MIT", "repository": { @@ -10,10 +10,11 @@ "files": [ "./build", "./typechain", - "./deploys.js" + "./deploys.js", + "./deploys-weth.js" ], "scripts": { - "clean": "hardhat clean; rm -rf ./build; rm -rf ./typechain", + "clean": "rm -rf ./cache && rm -rf ./build && rm -rf ./typechain", "compile": "hardhat compile; yarn typechain", "typechain": "tsc -b", "coverage": "hardhat coverage", @@ -23,8 +24,8 @@ "verify": "hardhat run ./scripts/verify.js" }, "dependencies": { - "@airswap/swap-erc20": "^4.0.0", - "@openzeppelin/contracts": "^4.8.1" + "@airswap/swap-erc20": "4.0.2", + "@openzeppelin/contracts": "^4.8.3" }, "devDependencies": { "@airswap/constants": "^4.0.0", diff --git a/source/wrapper/scripts/deploy.js b/source/wrapper/scripts/deploy.js index e5912302a..3f7a5efb6 100644 --- a/source/wrapper/scripts/deploy.js +++ b/source/wrapper/scripts/deploy.js @@ -4,8 +4,9 @@ const Confirm = require('prompt-confirm') const { ethers, run } = require('hardhat') const swapDeploys = require('@airswap/swap-erc20/deploys.js') const wrapperDeploys = require('../deploys.js') -const { chainNames, wrappedTokenAddresses } = require('@airswap/constants') -const { getEtherscanURL } = require('@airswap/utils') +const wethDeploys = require('../deploys-weth.js') +const { chainNames } = require('@airswap/constants') +const { getReceiptUrl } = require('@airswap/utils') async function main() { await run('compile') @@ -15,7 +16,7 @@ async function main() { const chainId = await deployer.getChainId() const gasPrice = await deployer.getGasPrice() const swapAddress = swapDeploys[chainId] - const wrappedTokenAddress = wrappedTokenAddresses[chainId] + const wrappedTokenAddress = wethDeploys[chainId] console.log(`Deploying on ${chainNames[chainId].toUpperCase()}`) console.log(`Swap: ${swapAddress}`) @@ -31,7 +32,7 @@ async function main() { ) console.log( 'Deploying...', - getEtherscanURL(chainId, wrapperContract.deployTransaction.hash) + getReceiptUrl(chainId, wrapperContract.deployTransaction.hash) ) await wrapperContract.deployed() console.log(`Deployed: ${wrapperContract.address}`) diff --git a/source/wrapper/scripts/verify.js b/source/wrapper/scripts/verify.js index c872f89ce..5305805cf 100644 --- a/source/wrapper/scripts/verify.js +++ b/source/wrapper/scripts/verify.js @@ -2,7 +2,8 @@ const { ethers, run } = require('hardhat') const swapDeploys = require('@airswap/swap-erc20/deploys.js') const wrapperDeploys = require('../deploys.js') -const { chainNames, wrappedTokenAddresses } = require('@airswap/constants') +const wethDeploys = require('../deploys-weth.js') +const { chainNames } = require('@airswap/constants') async function main() { await run('compile') @@ -11,7 +12,7 @@ async function main() { const chainId = await deployer.getChainId() const swapAddress = swapDeploys[chainId] - const wrappedTokenAddress = wrappedTokenAddresses[chainId] + const wrappedTokenAddress = wethDeploys[chainId] console.log(`Verifying on ${chainNames[chainId].toUpperCase()}`) await run('verify:verify', { diff --git a/tools/constants/README.md b/tools/constants/README.md index b1b23cff2..1d387302c 100644 --- a/tools/constants/README.md +++ b/tools/constants/README.md @@ -24,7 +24,7 @@ yarn add @airswap/constants Import into your application: ```TypeScript -import { chainIds, tokenKinds, protocols } from '@airswap/constants'; +import { ChainIds, TokenKinds, protocols } from '@airswap/constants'; ``` ## Commands diff --git a/tools/constants/index.ts b/tools/constants/index.ts index 089ee32c6..779b6292e 100644 --- a/tools/constants/index.ts +++ b/tools/constants/index.ts @@ -5,134 +5,181 @@ export const DOMAIN_VERSION_SWAP = '4' export const DOMAIN_NAME_POOL = 'POOL' export const DOMAIN_VERSION_POOL = '1' export const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000' -export const MAX_LOCATORS = 10 export const MAX_APPROVAL_AMOUNT = '90071992547409910000000000' export const MIN_CONFIRMATIONS = 2 export const SECONDS_IN_DAY = 86400 -export const chainIds: Record = { - MAINNET: 1, - GOERLI: 5, - RSK: 30, - RSKTESTNET: 31, - KOVAN: 42, - BSC: 56, - BSCTESTNET: 97, - POLYGON: 137, - HARDHAT: 31337, - ARBITRUM: 42161, - ARBITRUMGOERLI: 421613, - FUJI: 43113, - AVALANCHE: 43114, - MUMBAI: 80001, +export enum ChainIds { + MAINNET = 1, + GOERLI = 5, + RSK = 30, + RSKTESTNET = 31, + BSC = 56, + BSCTESTNET = 97, + POLYGON = 137, + HARDHAT = 31337, + ARBITRUM = 42161, + LINEA = 59140, + FUJI = 43113, + AVALANCHE = 43114, + ARBITRUMGOERLI = 421613, + MUMBAI = 80001, } -export const chainNames: Record = { - 1: 'MAINNET', - 5: 'GOERLI', - 30: 'RSK', - 31: 'RSKTESTNET', - 42: 'KOVAN', - 56: 'BSC', - 97: 'BSCTESTNET', - 137: 'POLYGON', - 31337: 'HARDHAT', - 42161: 'ARBITRUM', - 43113: 'FUJI', - 43114: 'AVALANCHE', - 80001: 'MUMBAI', - 421613: 'ARBITRUMGOERLI', -} +export const mainnets: number[] = [ + ChainIds.MAINNET, + ChainIds.RSK, + ChainIds.BSC, + ChainIds.POLYGON, + ChainIds.ARBITRUM, + ChainIds.AVALANCHE, +] -export const mainnets: number[] = [1, 30, 56, 137, 42161, 43114] +export const testnets: number[] = [ + ChainIds.GOERLI, + ChainIds.RSKTESTNET, + ChainIds.BSCTESTNET, + ChainIds.MUMBAI, + ChainIds.ARBITRUMGOERLI, + ChainIds.FUJI, + ChainIds.HARDHAT, + ChainIds.LINEA, +] -export const testnets: number[] = [5, 31, 97, 31337, 80001, 421613, 43113] +export const chainNames: Record = { + [ChainIds.MAINNET]: 'Ethereum', + [ChainIds.GOERLI]: 'Goerli', + [ChainIds.RSK]: 'RSK', + [ChainIds.RSKTESTNET]: 'RSK Testnet', + [ChainIds.BSC]: 'BSC', + [ChainIds.BSCTESTNET]: 'BSC Testnet', + [ChainIds.POLYGON]: 'Polygon', + [ChainIds.HARDHAT]: 'Hardhat', + [ChainIds.ARBITRUM]: 'Arbitrum', + [ChainIds.FUJI]: 'Fuji Testnet', + [ChainIds.AVALANCHE]: 'Avalanche', + [ChainIds.LINEA]: 'Linea', + [ChainIds.MUMBAI]: 'Mumbai Testnet', + [ChainIds.ARBITRUMGOERLI]: 'Arbitrum Goerli', +} export const chainCurrencies: Record = { - 1: 'ETH', - 5: 'ETH', - 30: 'RBTC', - 31: 'tRBTC', - 42: 'ETH', - 56: 'BNB', - 97: 'BNB', - 137: 'MATIC', - 31337: 'ETH', - 42161: 'AETH', - 421613: 'AETH', - 43113: 'AVAX', - 43114: 'AVAX', - 80001: 'MATIC', + [ChainIds.MAINNET]: 'ETH', + [ChainIds.GOERLI]: 'ETH', + [ChainIds.RSK]: 'RBTC', + [ChainIds.RSKTESTNET]: 'tRBTC', + [ChainIds.BSC]: 'BNB', + [ChainIds.BSCTESTNET]: 'BNB', + [ChainIds.POLYGON]: 'MATIC', + [ChainIds.HARDHAT]: 'ETH', + [ChainIds.ARBITRUM]: 'AETH', + [ChainIds.FUJI]: 'AVAX', + [ChainIds.AVALANCHE]: 'AVAX', + [ChainIds.LINEA]: 'ETH', + [ChainIds.MUMBAI]: 'MATIC', + [ChainIds.ARBITRUMGOERLI]: 'AETH', +} + +export const apiUrls: Record = { + [ChainIds.MAINNET]: 'https://mainnet.infura.io/v3/', + [ChainIds.GOERLI]: 'https://goerli.infura.io/v3/', + [ChainIds.RSK]: 'https://public-node.rsk.co', + [ChainIds.RSKTESTNET]: 'https://public-node.testnet.rsk.co/', + [ChainIds.BSC]: 'https://bsc-dataseed.binance.org/', + [ChainIds.BSCTESTNET]: 'https://data-seed-prebsc-1-s1.binance.org:8545/', + [ChainIds.POLYGON]: 'https://polygon-rpc.com/', + [ChainIds.ARBITRUM]: 'https://arb1.arbitrum.io/rpc', + [ChainIds.FUJI]: 'https://api.avax-test.network/ext/bc/C/rpc', + [ChainIds.AVALANCHE]: 'https://api.avax.network/ext/bc/C/rpc', + [ChainIds.LINEA]: 'https://rpc.goerli.linea.build/', + [ChainIds.MUMBAI]: 'https://rpc-mumbai.maticvigil.com', + [ChainIds.ARBITRUMGOERLI]: 'https://goerli-rollup.arbitrum.io/rpc', } -export const wrappedTokenAddresses: Record = { - 1: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - 5: '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6', - 30: '0x967f8799af07df1534d48a95a5c9febe92c53ae0', - 31: '0x09b6ca5e4496238a1f176aea6bb607db96c2286e', - 42: '0xd0a1e359811322d97991e03f863a0c30c2cf029c', - 56: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', - 97: '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd', - 137: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', - 42161: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - 43113: '0xd9d01a9f7c810ec035c0e42cb9e80ef44d7f8692', - 43114: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', - 80001: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', - 421613: '0xee01c0cd76354c383b8c7b4e65ea88d00b06f36f', +export const explorerUrls: Record = { + [ChainIds.MAINNET]: 'https://etherscan.io/', + [ChainIds.GOERLI]: 'https://goerli.etherscan.io/', + [ChainIds.RSK]: 'https://blockscout.com/rsk/mainnet/', + [ChainIds.RSKTESTNET]: 'https://explorer.testnet.rsk.co/', + [ChainIds.BSC]: 'https://bscscan.com/', + [ChainIds.BSCTESTNET]: 'https://testnet.bscscan.com/', + [ChainIds.POLYGON]: 'https://polygonscan.com/', + [ChainIds.ARBITRUM]: 'https://arbiscan.io/', + [ChainIds.FUJI]: 'https://testnet.snowtrace.io/', + [ChainIds.AVALANCHE]: 'https://snowtrace.io/', + [ChainIds.LINEA]: 'https://explorer.goerli.linea.build/', + [ChainIds.MUMBAI]: 'https://mumbai.polygonscan.com/', + [ChainIds.ARBITRUMGOERLI]: 'https://goerli.arbiscan.io/', } export const stakingTokenAddresses: Record = { - 1: '0x27054b13b1b798b345b591a4d22e6562d47ea75a', - 5: '0x1a1ec25dc08e98e5e93f1104b5e5cdd298707d31', - 30: '0x71070c5607358fc25e3b4aaf4fb0a580c190252a', - 31: '0x9c7005fa2f8476e2331f45f69e0930a4c9eff0c3', - 42: '0x1a1ec25dc08e98e5e93f1104b5e5cdd298707d31', - 56: '0x1ac0d76f11875317f8a7d791db94cdd82bd02bd1', - 97: '0xd161ddcfcc0c2d823021aa26200824efa75218d1', - 137: '0x04bEa9FCE76943E90520489cCAb84E84C0198E29', - 42161: '0xa1135c2f2c7798d31459b5fdaef8613419be1008', - 43113: '0x48c427e7cEf42399e9e8300fC47875772309e995', - 43114: '0x702d0f43edd46b77ea2d48570b02c328a20a94a1', - 80001: '0xd161ddcfcc0c2d823021aa26200824efa75218d1', - 421613: '0x71070c5607358fc25e3b4aaf4fb0a580c190252a', + [ChainIds.MAINNET]: '0x27054b13b1b798b345b591a4d22e6562d47ea75a', + [ChainIds.GOERLI]: '0x1a1ec25dc08e98e5e93f1104b5e5cdd298707d31', + [ChainIds.RSK]: '0x71070c5607358fc25e3b4aaf4fb0a580c190252a', + [ChainIds.RSKTESTNET]: '0x9c7005fa2f8476e2331f45f69e0930a4c9eff0c3', + [ChainIds.BSC]: '0x1ac0d76f11875317f8a7d791db94cdd82bd02bd1', + [ChainIds.BSCTESTNET]: '0xd161ddcfcc0c2d823021aa26200824efa75218d1', + [ChainIds.POLYGON]: '0x04bEa9FCE76943E90520489cCAb84E84C0198E29', + [ChainIds.ARBITRUM]: '0xa1135c2f2c7798d31459b5fdaef8613419be1008', + [ChainIds.FUJI]: '0x48c427e7cEf42399e9e8300fC47875772309e995', + [ChainIds.AVALANCHE]: '0x702d0f43edd46b77ea2d48570b02c328a20a94a1', + [ChainIds.LINEA]: '0x2C1b868d6596a18e32E61B901E4060C872647b6C', + [ChainIds.MUMBAI]: '0xd161ddcfcc0c2d823021aa26200824efa75218d1', + [ChainIds.ARBITRUMGOERLI]: '0x71070c5607358fc25e3b4aaf4fb0a580c190252a', } -export const etherscanDomains: Record = { - 1: 'etherscan.io', - 5: 'goerli.etherscan.io', - 30: 'blockscout.com/rsk/mainnet', - 31: 'explorer.testnet.rsk.co', - 42: 'kovan.etherscan.io', - 56: 'bscscan.com', - 97: 'testnet.bscscan.com', - 137: 'polygonscan.com', - 42161: 'arbiscan.io', - 43113: 'testnet.snowtrace.io', - 43114: 'snowtrace.io', - 80001: 'mumbai.polygonscan.com', - 421613: 'goerli.arbiscan.io', +export enum Protocols { + Discovery = '0x8cd261ef', + RequestForQuoteERC20 = '0x57bb3622', + PricingERC20 = '0x8beb22c2', + LastLookERC20 = '0x2ca4c820', + StorageERC20 = '0x218893b8', +} + +export const protocolInterfaces: Record = { + [Protocols.Discovery]: [ + 'function getProtocols()', + 'function setProtocols(array(string interfaceId))', + 'function getTokens()', + 'function setTokens(array(string tokenContractAddress))', + ], + [Protocols.RequestForQuoteERC20]: [ + 'function getSignerSideOrderERC20(string chainId,string swapContractAddress,string senderAmount,string signerToken,string senderToken,string senderWallet,string proxyingFor)', + 'function getSenderSideOrderERC20(string chainId,string swapContractAddress,string signerAmount,string signerToken,string senderToken,string senderWallet,string proxyingFor)', + 'function getPricingERC20(array((string baseToken,string quoteToken)))', + 'function getAllPricingERC20()', + ], + [Protocols.LastLookERC20]: [ + 'function subscribePricingERC20(array((string baseToken,string quoteToken)))', + 'function subscribeAllPricingERC20()', + 'function unsubscribePricingERC20(array((string baseToken,string quoteToken)))', + 'function unsubscribeAllPricingERC20()', + 'function setPricingERC20(array(string baseToken,string quoteToken,string minimum,array(array((string level,string price))),array(array((string level,string price)))))', + 'function considerOrderERC20(string nonce,string expiry,string signerWallet,string signerToken,string signerAmount,string senderToken,string senderAmount,string v,string r,string s)', + ], + [Protocols.StorageERC20]: [ + 'function addOrderERC20(string nonce,string expiry,string signerWallet,string signerToken,string signerAmount,string senderToken,string senderAmount,string v,string r,string s)', + 'function getOrdersERC20()', + 'function getOrdersERC20By(string sortField,array(string senderToken),string page,string filters,string sortOrder)', + ], +} + +export const protocolNames: Record = { + [Protocols.Discovery]: 'Discovery', + [Protocols.RequestForQuoteERC20]: 'Request for Quote (ERC20)', + [Protocols.PricingERC20]: 'Pricing (ERC20)', + [Protocols.LastLookERC20]: 'Last Look (ERC20)', + [Protocols.StorageERC20]: 'Storage (ERC20)', } export enum TokenKinds { ERC20 = '0x36372b07', ERC721 = '0x80ac58cd', ERC1155 = '0xd9b67a26', - ERC777 = '0xe58e113c', - CKITTY = '0x9a20483d', -} - -export const tokenKinds = { - ERC20: TokenKinds.ERC20, - ERC721: TokenKinds.ERC721, - ERC1155: TokenKinds.ERC1155, - ERC777: TokenKinds.ERC777, - CKITTY: TokenKinds.CKITTY, } export const tokenKindNames: Record = { - '0x36372b07': 'ERC20', - '0x80ac58cd': 'ERC721', - '0xd9b67a26': 'ERC1155', - '0xe58e113c': 'ERC777', - '0x9a20483d': 'CKITTY', + [TokenKinds.ERC20]: 'ERC20', + [TokenKinds.ERC721]: 'ERC721', + [TokenKinds.ERC1155]: 'ERC1155', } diff --git a/tools/constants/package.json b/tools/constants/package.json index 07fd5e788..086b21e0f 100644 --- a/tools/constants/package.json +++ b/tools/constants/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/constants", - "version": "4.0.1", + "version": "4.0.2", "description": "AirSwap: Constants for Developers", "repository": { "type": "git", diff --git a/tools/libraries/README.md b/tools/libraries/README.md index c1108449f..9306f9051 100644 --- a/tools/libraries/README.md +++ b/tools/libraries/README.md @@ -24,7 +24,7 @@ yarn add @airswap/libraries Import into your application: ```TypeScript -import { Indexer, Maker, Swap } from '@airswap/libraries'; +import { Indexer, Server, Swap } from '@airswap/libraries'; ``` ## Commands diff --git a/tools/libraries/index.ts b/tools/libraries/index.ts index 0b643d9a5..28eb2b74b 100644 --- a/tools/libraries/index.ts +++ b/tools/libraries/index.ts @@ -1,6 +1,2 @@ -export { SwapERC20 } from './src/SwapERC20' -export { Wrapper } from './src/Wrapper' -export { MakerRegistry } from './src/MakerRegistry' -export { Maker } from './src/Maker' -export { IndexerRegistry } from './src/IndexerRegistry' -export * from './src/Indexer' +export * from './src/Contracts' +export * from './src/Server' diff --git a/tools/libraries/package.json b/tools/libraries/package.json index d99868edf..f72bc2ffd 100644 --- a/tools/libraries/package.json +++ b/tools/libraries/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/libraries", - "version": "4.0.4", + "version": "4.0.5", "description": "AirSwap: Libraries for Developers", "repository": { "type": "git", @@ -24,47 +24,36 @@ "pretty:check": "prettier --check \"./**/*.ts\" \"./**/*.js\"", "pretty:fix": "prettier --write \"./**/*.ts\" \"./**/*.js\"", "test": "yarn test:unit", - "test:unit": "yarn compile && yarn mocha -r ts-node/register test/Maker.test.ts test/Indexer.test.ts" + "test:unit": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" }, "dependencies": { + "@airswap/balances": "4.0.0", "@airswap/constants": "^4.0.0", - "@airswap/indexer-registry": "^4.0.0", "@airswap/jsonrpc-client-websocket": "0.0.1", - "@airswap/maker-registry": "^4.0.0", - "@airswap/swap-erc20": "^4.0.0", + "@airswap/registry": "4.0.2", + "@airswap/swap": "4.0.3", + "@airswap/swap-erc20": "4.0.2", "@airswap/types": "^4.0.0", "@airswap/utils": "^4.0.0", - "@airswap/wrapper": "^4.0.0", - "bignumber.js": "^9.0.0", - "browser-or-node": "^1.3.0", + "@airswap/wrapper": "4.0.3", + "browser-or-node": "^2.1.1", "ethers": "^5.6.9", - "jayson": "^3.2.0", + "jayson": "^4.0.0", "tiny-typed-emitter": "^2.1.0", - "websocket": "^1.0.34", - "ws": "7.5.9" + "websocket": "^1.0.34" }, "devDependencies": { - "@relaycorp/ws-mock": "^5.2.5", - "@types/mocha": "^10.0.1", + "@relaycorp/ws-mock": "^5.2.6", "@types/mock-require": "^2.0.0", - "@types/node": "^18.14.2", - "@typescript-eslint/eslint-plugin": "^5.52.0", - "@typescript-eslint/parser": "^5.52.0", "body-parser": "^1.20.1", - "chai": "^4.3.7", - "eslint": "^8.34.0", - "eslint-config-prettier": "^8.6.0", - "eslint-plugin-prettier": "^4.2.1", "express": "^4.18.2", "fancy-test": "^1.4.7", - "mocha": "^10.2.0", "mock-require": "^3.0.3", "mock-socket": "^9.0.3", "nock": "^12.0.1", - "prettier": "^2.8.4", "sinon": "^14.0.0", "sinon-chai": "^3.7.0", - "ts-node": "^10.9.1" + "ws": "^7.4.1" }, "publishConfig": { "access": "public" diff --git a/tools/libraries/src/Contracts.ts b/tools/libraries/src/Contracts.ts new file mode 100644 index 000000000..4d7fd2d8f --- /dev/null +++ b/tools/libraries/src/Contracts.ts @@ -0,0 +1,141 @@ +import { ethers } from 'ethers' + +import { ServerOptions } from '@airswap/types' + +import { Swap__factory } from '@airswap/swap/typechain/factories/contracts' +import { SwapERC20__factory } from '@airswap/swap-erc20/typechain/factories/contracts' +import { Wrapper__factory } from '@airswap/wrapper/typechain/factories/contracts' +import { Registry__factory } from '@airswap/registry/typechain/factories/contracts' +import { WETH9__factory } from '@airswap/wrapper/typechain/factories/contracts' + +import registryDeploys from '@airswap/registry/deploys.js' +import swapERC20Deploys from '@airswap/swap-erc20/deploys.js' +import swapDeploys from '@airswap/swap/deploys.js' +import wrapperDeploys from '@airswap/wrapper/deploys.js' +import wethDeploys from '@airswap/wrapper/deploys-weth.js' + +import BalanceChecker from '@airswap/balances/build/contracts/BalanceChecker.sol/BalanceChecker.json' +// @ts-ignore +import balancesDeploys from '@airswap/balances/deploys.js' +const balancesInterface = new ethers.utils.Interface( + JSON.stringify(BalanceChecker.abi) +) + +import { Server } from './Server' + +class Contract { + public name: string + public addresses: Record + public factory: any + public constructor( + name: string, + addresses: Record, + factory: any + ) { + this.name = name + this.addresses = addresses + this.factory = factory + } + public getAddress(chainId: number) { + return this.addresses[chainId] + } + public getContract( + providerOrSigner: ethers.providers.Provider | ethers.Signer, + chainId: number + ): ethers.Contract { + return this.factory.connect(this.addresses[chainId], providerOrSigner) + } +} + +class ServerRegistry extends Contract { + public constructor( + name: string, + addresses: Record, + factory: any + ) { + super(name, addresses, factory) + } + public async getServerURLs( + providerOrSigner: ethers.providers.Provider | ethers.Signer, + chainId: number, + protocol: string, + baseToken?: string, + quoteToken?: string + ): Promise { + const contract = Registry__factory.connect( + registryDeploys[chainId], + providerOrSigner + ) + const protocolStakers: string[] = await contract.getStakersForProtocol( + protocol + ) + const stakers = protocolStakers.filter(async (staker) => { + const tokens = await contract.getTokensForStaker(staker) + let include = false + if (!tokens.length) include = true + else if (baseToken) include = tokens.includes(baseToken) + else if (quoteToken) include = tokens.includes(quoteToken) + return include + }) + return await contract.getServerURLsForStakers(stakers) + } + public async getServers( + providerOrSigner: ethers.providers.Provider | ethers.Signer, + chainId: number, + protocol: string, + baseToken?: string, + quoteToken?: string, + options?: ServerOptions + ): Promise> { + const urls = await this.getServerURLs( + providerOrSigner, + chainId, + protocol, + baseToken, + quoteToken + ) + const serverPromises = await Promise.allSettled( + urls.map((url) => { + return Server.at(url, { + swapContract: options?.swapContract || SwapERC20.getAddress(chainId), + chainId: chainId, + initializeTimeout: options?.initializeTimeout, + }) + }) + ) + const servers: PromiseFulfilledResult[] = serverPromises.filter( + (value): value is PromiseFulfilledResult => + value.status === 'fulfilled' + ) + return servers.map((value) => value.value) + } +} + +export const Swap = new Contract('Swap', swapDeploys, Swap__factory) +export const SwapERC20 = new Contract( + 'SwapERC20', + swapERC20Deploys, + SwapERC20__factory +) +export const Wrapper = new Contract('Wrapper', wrapperDeploys, Wrapper__factory) +export const Registry = new ServerRegistry( + 'Registry', + registryDeploys, + Registry__factory +) +export const WETH = new Contract('WETH', wethDeploys, WETH9__factory) +export const Balances = new Contract( + 'Balances', + wrapperDeploys, + Wrapper__factory +) +Balances.getContract = ( + providerOrSigner: ethers.providers.Provider | ethers.Signer, + chainId: number +): ethers.Contract => { + return new ethers.Contract( + balancesDeploys[chainId], + balancesInterface, + providerOrSigner + ) +} diff --git a/tools/libraries/src/Indexer.ts b/tools/libraries/src/Indexer.ts deleted file mode 100644 index 82d464baa..000000000 --- a/tools/libraries/src/Indexer.ts +++ /dev/null @@ -1,251 +0,0 @@ -import * as url from 'url' -import { isBrowser } from 'browser-or-node' -import { Client as HttpClient } from 'jayson' -import { FullOrderERC20 } from '@airswap/types' -import { parseUrl } from '@airswap/utils' - -const REQUEST_TIMEOUT = 4000 - -export type IndexedOrderResponse = { - hash?: string | undefined - order: FullOrderERC20 - addedOn: number -} - -export type HealthCheckResponse = { - peers: string[] - registry: string - databaseOrders: number -} - -export type OrderResponse = { - orders: Record - pagination: Pagination - filters?: FiltersResponse | undefined - ordersForQuery: number -} - -export type Pagination = { - first: string - last: string - prev?: string | undefined - next?: string | undefined -} - -export function toSortOrder(key: string): SortOrder | undefined { - if (typeof key !== 'string') { - return undefined - } - if (key.toUpperCase() === SortOrder.ASC) { - return SortOrder.ASC - } - if (key.toUpperCase() === SortOrder.DESC) { - return SortOrder.DESC - } - - return undefined -} - -export type RequestFilter = { - signerTokens?: string[] - senderTokens?: string[] - minSignerAmount?: bigint - maxSignerAmount?: bigint - minSenderAmount?: bigint - maxSenderAmount?: bigint - page: number - sortField?: SortField - sortOrder?: SortOrder - maxAddedDate?: number -} - -export type FiltersResponse = { - signerToken: Record - senderToken: Record -} - -export type AmountLimitFilterResponse = { - min: string - max: string -} - -export enum SortField { - SIGNER_AMOUNT = 'SIGNER_AMOUNT', - SENDER_AMOUNT = 'SENDER_AMOUNT', -} - -export function toSortField(key: string): SortField | undefined { - if (typeof key !== 'string') { - return undefined - } - if (key.toUpperCase() === SortField.SIGNER_AMOUNT) { - return SortField.SIGNER_AMOUNT - } - if (key.toUpperCase() === SortField.SENDER_AMOUNT) { - return SortField.SENDER_AMOUNT - } - return undefined -} - -export enum SortOrder { - ASC = 'ASC', - DESC = 'DESC', -} - -export abstract class IndexedOrderError extends Error { - public code!: number - public constructor(message: string) { - super(message) - this.message = message - } -} -export class ErrorResponse { - public code: number - public message: string - public constructor(code: number, message: string) { - this.code = code - this.message = message - } -} -export class SuccessResponse { - public message: string - public constructor(message: string) { - this.message = message - } -} -export class JsonRpcResponse { - public id: string - public result: - | OrderResponse - | ErrorResponse - | SuccessResponse - | HealthCheckResponse - | undefined - private jsonrpc = '2.0' - - public constructor( - id: string, - result: - | OrderResponse - | IndexedOrderError - | SuccessResponse - | HealthCheckResponse - | undefined - ) { - this.id = id - if (result instanceof Error) { - this.result = new ErrorResponse(result.code, result.message) - } else { - this.result = result - } - } -} - -export class NodeIndexer { - private httpClient: HttpClient - - public constructor(locator: string) { - const parsedUrl = parseUrl(locator) - const options = { - protocol: parsedUrl.protocol, - hostname: parsedUrl.hostname, - port: parsedUrl.port, - timeout: REQUEST_TIMEOUT, - } - - if (isBrowser) { - const jaysonClient = require('jayson/lib/client/browser') - this.httpClient = new jaysonClient((request, callback) => { - fetch(url.format(locator), { - method: 'POST', - body: request, - headers: { - 'Content-Type': 'application/json', - }, - }) - .then((res) => { - return res.text() - }) - .then((text) => { - callback(null, text) - }) - .catch((err) => { - callback(err) - }) - }) - } else { - const jaysonClient = require('jayson/lib/client') - if (options.protocol === 'https:') { - this.httpClient = jaysonClient.https(options) - } else { - this.httpClient = jaysonClient.http(options) - } - } - } - - public async getOrdersERC20By( - requestFilter: RequestFilter, - filters = false - ): Promise { - try { - return Promise.resolve( - (await this.httpCall('getOrdersERC20', [ - { ...this.toBigIntJson(requestFilter), filters }, - ])) as OrderResponse - ) - } catch (err) { - return Promise.reject(err) - } - } - - public async getOrdersERC20(): Promise { - try { - return Promise.resolve( - (await this.httpCall('getOrdersERC20', [{}])) as OrderResponse - ) - } catch (err) { - return Promise.reject(err) - } - } - - public async addOrderERC20( - fullOrder: FullOrderERC20 - ): Promise { - try { - return Promise.resolve( - (await this.httpCall('addOrderERC20', [fullOrder])) as SuccessResponse - ) - } catch (err) { - return Promise.reject(err) - } - } - - private httpCall( - method: string, - params: Record | Array - ): Promise { - return new Promise((resolve, reject) => { - this.httpClient.request( - method, - params, - (connectionError: any, serverError: any, result: any) => { - if (connectionError) { - reject({ code: -1, message: connectionError.message }) - } else if (serverError) { - reject(serverError) - } else { - resolve(result) - } - } - ) - }) - } - - private toBigIntJson(requestFilter: RequestFilter) { - return JSON.parse( - JSON.stringify(requestFilter, (key, value) => - typeof value === 'bigint' ? value.toString() : value - ) - ) - } -} diff --git a/tools/libraries/src/IndexerRegistry.ts b/tools/libraries/src/IndexerRegistry.ts deleted file mode 100644 index 4a887663a..000000000 --- a/tools/libraries/src/IndexerRegistry.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { ethers } from 'ethers' -import type { Provider } from '@ethersproject/providers' -import { IndexerRegistry as IndexerRegistryContract } from '@airswap/indexer-registry/typechain/contracts' -import { IndexerRegistry__factory } from '@airswap/indexer-registry/typechain/factories/contracts' -import { chainIds } from '@airswap/constants' - -import * as indexersDeploys from '@airswap/indexer-registry/deploys.js' - -export class IndexerRegistry { - public chainId: number - public contract: IndexerRegistryContract - - public constructor( - chainId = chainIds.MAINNET, - signerOrProvider?: ethers.Signer | Provider - ) { - this.chainId = chainId - this.contract = IndexerRegistry__factory.connect( - IndexerRegistry.getAddress(chainId), - signerOrProvider - ) - } - public static getAddress(chainId = chainIds.MAINNET) { - if (chainId in indexersDeploys) { - return indexersDeploys[chainId] - } - throw new Error(`Wrapper deploy not found for chainId ${chainId}`) - } -} diff --git a/tools/libraries/src/MakerRegistry.ts b/tools/libraries/src/MakerRegistry.ts deleted file mode 100644 index 7c0e8ceff..000000000 --- a/tools/libraries/src/MakerRegistry.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { ethers } from 'ethers' -import type { Provider } from '@ethersproject/providers' -import { MakerRegistry as MakerRegistryContract } from '@airswap/maker-registry/typechain/contracts' -import { MakerRegistry__factory } from '@airswap/maker-registry/typechain/factories/contracts' -import { chainIds } from '@airswap/constants' - -import { Maker, MakerOptions } from './Maker' -import { SwapERC20 } from './SwapERC20' - -import * as registryDeploys from '@airswap/maker-registry/deploys.js' - -export class MakerRegistry { - public chainId: number - private contract: MakerRegistryContract - - public constructor( - chainId = chainIds.MAINNET, - signerOrProvider?: ethers.Signer | Provider - ) { - this.chainId = chainId - this.contract = MakerRegistry__factory.connect( - MakerRegistry.getAddress(chainId), - signerOrProvider - ) - } - - public static getAddress(chainId = chainIds.MAINNET): string { - if (chainId in registryDeploys) { - return registryDeploys[chainId] - } - throw new Error(`MakerRegistry deploy not found for chainId ${chainId}`) - } - - public async getMakers( - quoteToken: string, - baseToken: string, - options?: MakerOptions - ): Promise> { - const quoteTokenURLs: string[] = await this.contract.getURLsForToken( - quoteToken - ) - const baseTokenURLs: string[] = await this.contract.getURLsForToken( - baseToken - ) - const serverPromises = await Promise.allSettled( - quoteTokenURLs - .filter((value) => baseTokenURLs.includes(value)) - .map((url) => { - return Maker.at(url, { - swapContract: - options?.swapContract || SwapERC20.getAddress(this.chainId), - chainId: this.chainId, - initializeTimeout: options?.initializeTimeout, - }) - }) - ) - return serverPromises - .filter((value) => value.status === 'fulfilled') - .map((v: PromiseFulfilledResult) => v.value) - } -} diff --git a/tools/libraries/src/Maker.ts b/tools/libraries/src/Server.ts similarity index 54% rename from tools/libraries/src/Maker.ts rename to tools/libraries/src/Server.ts index 5efa30434..6b0dfd986 100644 --- a/tools/libraries/src/Maker.ts +++ b/tools/libraries/src/Server.ts @@ -10,22 +10,24 @@ import { JsonRpcErrorCodes, WebsocketReadyStates, } from '@airswap/jsonrpc-client-websocket' -import { chainIds } from '@airswap/constants' -import { parseUrl, orderERC20PropsToStrings } from '@airswap/utils' -import { OrderERC20, Pricing } from '@airswap/types' -import { SwapERC20 } from './SwapERC20' - -export type SupportedProtocolInfo = { - name: string - version: string - params?: any -} -export type MakerOptions = { - chainId?: number - swapContract?: string - initializeTimeout?: number -} +import { parseUrl, orderERC20PropsToStrings } from '@airswap/utils' +import { + FullOrder, + FullOrderERC20, + OrderERC20, + Pricing, + ServerOptions, + OrderResponse, + SupportedProtocolInfo, + RequestFilterERC20, + SortOrder, + SortField, + RequestFilter, +} from '@airswap/types' +import { ChainIds, Protocols, protocolNames } from '@airswap/constants' + +import { SwapERC20 } from './Contracts' if (!isBrowser) { JsonRpcWebsocket.setWebSocketFactory((url: string) => { @@ -35,45 +37,118 @@ if (!isBrowser) { } const REQUEST_TIMEOUT = 4000 -const PROTOCOL_NAMES = { - 'last-look-erc20': 'Last Look (ERC20)', - 'request-for-quote-erc20': 'Request for Quote (ERC20)', + +export function toSortOrder(key: string): SortOrder | undefined { + if (typeof key !== 'string') { + return undefined + } + if (key.toUpperCase() === SortOrder.ASC) { + return SortOrder.ASC + } + if (key.toUpperCase() === SortOrder.DESC) { + return SortOrder.DESC + } + + return undefined +} + +export function toSortField(key: string): SortField | undefined { + if (typeof key !== 'string') { + return undefined + } + if (key.toUpperCase() === SortField.SIGNER_AMOUNT) { + return SortField.SIGNER_AMOUNT + } + if (key.toUpperCase() === SortField.SENDER_AMOUNT) { + return SortField.SENDER_AMOUNT + } + if (key.toUpperCase() === SortField.EXPIRY) { + return SortField.EXPIRY + } + return undefined +} + +export abstract class IndexedOrderError extends Error { + public code!: number + public constructor(message: string) { + super(message) + this.message = message + } +} +export class ErrorResponse { + public code: number + public message: string + public constructor(code: number, message: string) { + this.code = code + this.message = message + } +} +export class SuccessResponse { + public message: string + public constructor(message: string) { + this.message = message + } +} +export class JsonRpcResponse { + public id: string + public result: + | OrderResponse + | ErrorResponse + | SuccessResponse + | undefined + private jsonrpc = '2.0' + + public constructor( + id: string, + result: + | OrderResponse + | IndexedOrderError + | SuccessResponse + | undefined + ) { + this.id = id + if (result instanceof Error) { + this.result = new ErrorResponse(result.code, result.message) + } else { + this.result = result + } + } } -export interface MakerEvents { +export interface ServerEvents { 'pricing-erc20': (pricing: Pricing[]) => void error: (error: JsonRpcError) => void } -export class Maker extends TypedEmitter { +export class Server extends TypedEmitter { public transportProtocol: 'websocket' | 'http' - private supportedProtocols: SupportedProtocolInfo[] - private isInitialized: boolean - private httpClient: HttpClient - private webSocketClient: JsonRpcWebsocket - private senderMaker: string - private senderWallet: string + private supportedProtocols: SupportedProtocolInfo[] = [] + private isInitialized = false + private httpClient: HttpClient | null = null + private webSocketClient: JsonRpcWebsocket | null = null + private senderServer: string | null = null + private senderWallet: string | null = null public constructor( public locator: string, - private swapContract = SwapERC20.getAddress(), - private chainId = chainIds.MAINNET + private swapContract = SwapERC20.getAddress(ChainIds.MAINNET), + private chainId = ChainIds.MAINNET ) { super() const protocol = parseUrl(locator).protocol - this.transportProtocol = protocol.startsWith('http') ? 'http' : 'websocket' + this.transportProtocol = protocol?.startsWith('http') ? 'http' : 'websocket' } public static async at( locator: string, - options?: MakerOptions - ): Promise { - const server = new Maker(locator, options?.swapContract, options?.chainId) + options?: ServerOptions + ): Promise { + const server = new Server(locator, options?.swapContract, options?.chainId) await server._init(options?.initializeTimeout) return server } - public getSupportedProtocolVersion(protocol: string): string | null { + public getSupportedProtocol(protocol: string): SupportedProtocolInfo | null { // Don't check supportedProtocols unless the server has initialized. // Important for WebSocket servers that can support either RFQ or Last Look this.requireInitialized() @@ -81,43 +156,55 @@ export class Maker extends TypedEmitter { (p) => p.name === protocol ) if (!supportedProtocolInfo) return null - return supportedProtocolInfo.version + return supportedProtocolInfo } - public supportsProtocol( - protocol: string, - requestedVersion?: string - ): boolean { - const supportedVersion = this.getSupportedProtocolVersion(protocol) - if (!supportedVersion) return false - if (!requestedVersion) return true + public supportsProtocol(protocol: string): boolean { + return !!this.getSupportedProtocol(protocol) + } - const [, wantedMajor, wantedMinor, wantedPatch] = - /(\d+)\.(\d+)\.(\d+)/.exec(requestedVersion) - const [, supportedMajor, supportedMinor, supportedPatch] = - /(\d+)\.(\d+)\.(\d+)/.exec(supportedVersion) + public getSenderWallet(): string | null { + this.requireLastLookERC20Support() + return this.senderWallet + } - if (wantedMajor !== supportedMajor) return false - if (parseInt(wantedMinor) > parseInt(supportedMinor)) return false - if (parseInt(wantedPatch) > parseInt(supportedPatch)) return false - return true + /** + * Protocols.Discovery + */ + public async getProtocols(): Promise { + return this.callRPCMethod('getProtocols', []) + } + + public async getTokens(): Promise { + return this.callRPCMethod('getTokens', []) } + /** + * Protocols.RequestForQuoteERC20 + */ public async getSignerSideOrderERC20( senderAmount: string, signerToken: string, senderToken: string, - senderWallet: string + senderWallet: string, + proxyingFor?: string ): Promise { this.requireRFQERC20Support() - return this.callRPCMethod('getSignerSideOrderERC20', { + const params: any = { chainId: String(this.chainId), swapContract: this.swapContract, senderAmount: senderAmount.toString(), signerToken, senderToken, senderWallet, - }).then((order) => { + } + if (proxyingFor) { + params.proxyingFor = proxyingFor + } + return this.callRPCMethod( + 'getSignerSideOrderERC20', + params + ).then((order) => { return orderERC20PropsToStrings(order) }) } @@ -126,21 +213,42 @@ export class Maker extends TypedEmitter { signerAmount: string | ethers.BigNumber, signerToken: string, senderToken: string, - senderWallet: string + senderWallet: string, + proxyingFor?: string ): Promise { this.requireRFQERC20Support() - return this.callRPCMethod('getSenderSideOrderERC20', { + const params: any = { chainId: String(this.chainId), swapContract: this.swapContract, signerAmount: signerAmount.toString(), signerToken, senderToken, senderWallet, - }).then((order) => { + } + if (proxyingFor) { + params.proxyingFor = proxyingFor + } + return this.callRPCMethod( + 'getSenderSideOrderERC20', + params + ).then((order) => { return orderERC20PropsToStrings(order) }) } + public async getPricingERC20( + pairs: { baseToken: string; quoteToken: string }[] + ): Promise { + return this.callRPCMethod('getPricingERC20', [pairs]) + } + + public async getAllPricingERC20(): Promise { + return this.callRPCMethod('getAllPricingERC20', []) + } + + /** + * Protocols.LastLookERC20 + */ public async subscribePricingERC20( pairs: { baseToken: string; quoteToken: string }[] ): Promise { @@ -153,6 +261,11 @@ export class Maker extends TypedEmitter { return pricing } + public async subscribeAllPricingERC20(): Promise { + this.requireLastLookERC20Support() + return this.callRPCMethod('subscribeAllPricingERC20', []) + } + public async unsubscribePricingERC20( pairs: { baseToken: string; quoteToken: string }[] ): Promise { @@ -160,24 +273,93 @@ export class Maker extends TypedEmitter { return this.callRPCMethod('unsubscribePricingERC20', [pairs]) } - public async subscribeAllPricingERC20(): Promise { + public async unsubscribeAllPricingERC20(): Promise { this.requireLastLookERC20Support() - return this.callRPCMethod('subscribeAllPricingERC20') + return this.callRPCMethod('unsubscribeAllPricingERC20', []) } - public async unsubscribeAllPricingERC20(): Promise { + public async considerOrderERC20(order: OrderERC20): Promise { this.requireLastLookERC20Support() - return this.callRPCMethod('unsubscribeAllPricingERC20') + return this.callRPCMethod('considerOrderERC20', order) } - public getSenderWallet(): string { - this.requireLastLookERC20Support() - return this.senderWallet + /** + * Protocols.StorageERC20 + */ + public async addOrderERC20( + fullOrder: FullOrderERC20 + ): Promise { + try { + return Promise.resolve( + (await this.httpCall('addOrderERC20', [fullOrder])) as SuccessResponse + ) + } catch (err) { + return Promise.reject(err) + } } - public async considerOrderERC20(order: OrderERC20): Promise { - this.requireLastLookERC20Support() - return this.callRPCMethod('considerOrderERC20', order) + public async getOrdersERC20(): Promise> { + try { + return Promise.resolve( + (await this.httpCall('getOrdersERC20', [ + {}, + ])) as OrderResponse + ) + } catch (err) { + return Promise.reject(err) + } + } + + public async getOrdersERC20By( + requestFilter: RequestFilterERC20, + filters = false + ): Promise> { + try { + return Promise.resolve( + (await this.httpCall('getOrdersERC20', [ + { ...this.toBigIntJson(requestFilter), filters }, + ])) as OrderResponse + ) + } catch (err) { + return Promise.reject(err) + } + } + + /** + * Protocols.Storage + */ + public async addOrder(order: FullOrder): Promise { + try { + return Promise.resolve( + (await this.httpCall('addOrder', [order])) as SuccessResponse + ) + } catch (err) { + return Promise.reject(err) + } + } + + public async getOrders(): Promise> { + try { + return Promise.resolve( + (await this.httpCall('getOrders', [{}])) as OrderResponse + ) + } catch (err) { + return Promise.reject(err) + } + } + + public async getOrdersBy( + requestFilter: RequestFilter + ): Promise> { + try { + return Promise.resolve( + (await this.httpCall('getOrders', [ + { ...requestFilter }, + ])) as OrderResponse + ) + } catch (err) { + return Promise.reject(err) + } } public disconnect(): void { @@ -195,7 +377,7 @@ export class Maker extends TypedEmitter { } else { this.removeAllListeners() } - delete this.webSocketClient + this.webSocketClient = null } } @@ -208,7 +390,7 @@ export class Maker extends TypedEmitter { } private _initHTTPClient(locator: string, clientOnly?: boolean) { - // clientOnly flag set when initializing client for last look `senderMaker` + // clientOnly flag set when initializing client for last look `senderServer` const parsedUrl = parseUrl(locator) const options = { protocol: parsedUrl.protocol, @@ -219,14 +401,14 @@ export class Maker extends TypedEmitter { if (!clientOnly) { this.supportedProtocols = [ - { name: 'request-for-quote-erc20', version: '2.0.0' }, + { name: Protocols.RequestForQuoteERC20, version: '2.0.0' }, ] this.isInitialized = true } if (isBrowser) { const jaysonClient = require('jayson/lib/client/browser') - this.httpClient = new jaysonClient((request, callback) => { + this.httpClient = new jaysonClient((request: any, callback: any) => { fetch(url.format(parsedUrl), { method: 'POST', body: request, @@ -234,13 +416,13 @@ export class Maker extends TypedEmitter { 'Content-Type': 'application/json', }, }) - .then((res) => { + .then((res: any) => { return res.text() }) - .then((text) => { + .then((text: any) => { callback(null, text) }) - .catch((err) => { + .catch((err: any) => { callback(err) }) }, options) @@ -272,7 +454,7 @@ export class Maker extends TypedEmitter { } ) const initTimeout = setTimeout(() => { - reject('Maker did not call setProtocols in time') + reject('Server did not call setProtocols in time') this.disconnect() }, initializeTimeout) @@ -291,38 +473,29 @@ export class Maker extends TypedEmitter { } ) - this.webSocketClient.on('setPricingERC20', this.setPricingERC20.bind(this)) - await this.webSocketClient.open() + this.webSocketClient?.on('setPricingERC20', this.setPricingERC20.bind(this)) + await this.webSocketClient?.open() await initPromise } private requireInitialized() { - if (!this.isInitialized) throw new Error('Maker not yet initialized') + if (!this.isInitialized) throw new Error('Server not yet initialized') } - private requireRFQERC20Support(version?: string) { - this.requireProtocolSupport('request-for-quote-erc20', version) + private requireRFQERC20Support() { + this.requireProtocolSupport(Protocols.RequestForQuoteERC20) } - private requireLastLookERC20Support(version?: string) { - this.requireProtocolSupport('last-look-erc20', version) + private requireLastLookERC20Support() { + this.requireProtocolSupport(Protocols.LastLookERC20) } - private requireProtocolSupport(protocol: string, version?: string) { - if (!this.supportsProtocol(protocol, version)) { - const supportedVersion = this.getSupportedProtocolVersion(protocol) - let message - if (supportedVersion) { - message = - `Maker at ${this.locator} doesn't support ` + - `${PROTOCOL_NAMES[protocol]} v${version}` + - `supported version ${supportedVersion}` - } else { - message = - `Maker at ${this.locator} doesn't ` + - `support ${PROTOCOL_NAMES[protocol]}` - } - throw new Error(message) + private requireProtocolSupport(protocol: string) { + if (!this.supportsProtocol(protocol)) { + throw new Error( + `Server at ${this.locator} doesn't ` + + `support ${protocolNames[protocol]}` + ) } } @@ -352,7 +525,9 @@ export class Maker extends TypedEmitter { if (!Array.isArray(params)) valid = false if ( valid && - !params.every((protocolInfo) => protocolInfo.version && protocolInfo.name) + !params.every( + (protocolInfo: any) => protocolInfo.version && protocolInfo.name + ) ) valid = false if (!valid) this.throwInvalidParams('setProtocols', JSON.stringify(params)) @@ -364,7 +539,7 @@ export class Maker extends TypedEmitter { if ( valid && !params.every( - (pricing) => + (pricing: Pricing) => pricing.baseToken && pricing.quoteToken && Array.isArray(pricing.bid) && @@ -386,24 +561,32 @@ export class Maker extends TypedEmitter { this.validateInitializeParams(supportedProtocols) this.supportedProtocols = supportedProtocols const lastLookERC20Support = supportedProtocols.find( - (protocol) => protocol.name === 'last-look-erc20' + (protocol) => protocol.name === Protocols.LastLookERC20 ) - if (lastLookERC20Support?.params?.senderMaker) { - this.senderMaker = lastLookERC20Support.params.senderMaker + if (lastLookERC20Support?.params?.senderServer) { + this.senderServer = lastLookERC20Support.params.senderServer // Prepare an http client for consider calls. - this._initHTTPClient(this.senderMaker, true) + this._initHTTPClient(lastLookERC20Support.params.senderServer, true) } if (lastLookERC20Support?.params?.senderWallet) { this.senderWallet = lastLookERC20Support.params.senderWallet } } + private toBigIntJson(requestFilter: RequestFilterERC20) { + return JSON.parse( + JSON.stringify(requestFilter, (key, value) => + typeof value === 'bigint' ? value.toString() : value + ) + ) + } + private httpCall( method: string, params: Record | Array ): Promise { return new Promise((resolve, reject) => { - this.httpClient.request( + this.httpClient?.request( method, params, (connectionError: any, serverError: any, result: any) => { @@ -416,7 +599,7 @@ export class Maker extends TypedEmitter { if (errors.length) { reject({ code: -1, - message: `Maker response differs from request params: ${errors}`, + message: `Server response differs from request params: ${errors}`, }) } else { resolve(result) @@ -431,8 +614,8 @@ export class Maker extends TypedEmitter { method: string, params?: Record | Array ): Promise { - const response = await this.webSocketClient.call(method, params) - return response.result as T + const response = await this.webSocketClient?.call(method, params) + return response?.result as T } /** @@ -441,11 +624,11 @@ export class Maker extends TypedEmitter { */ private async callRPCMethod( method: string, - params?: Record | Array + params: Record | Array ): Promise { if ( this.transportProtocol === 'http' || - (method === 'considerOrderERC20' && this.senderMaker) + (method === 'considerOrderERC20' && this.senderServer) ) { return this.httpCall(method, params) } else { diff --git a/tools/libraries/src/SwapERC20.ts b/tools/libraries/src/SwapERC20.ts deleted file mode 100644 index 0ceb58aa2..000000000 --- a/tools/libraries/src/SwapERC20.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { ethers, ContractTransaction } from 'ethers' -import type { Provider } from '@ethersproject/providers' -import { chainIds } from '@airswap/constants' -import { OrderERC20 } from '@airswap/types' -import { SwapERC20 as SwapContract } from '@airswap/swap-erc20/typechain/contracts' -import { SwapERC20__factory } from '@airswap/swap-erc20/typechain/factories/contracts' -import { orderERC20ToParams, checkResultToErrors } from '@airswap/utils' - -import * as swapDeploys from '@airswap/swap-erc20/deploys.js' - -export class SwapERC20 { - public chainId: number - public contract: SwapContract - - public constructor( - chainId = chainIds.MAINNET, - signerOrProvider?: ethers.Signer | Provider - ) { - this.chainId = chainId - this.contract = SwapERC20__factory.connect( - SwapERC20.getAddress(chainId), - signerOrProvider - ) - } - - public static getAddress(chainId = chainIds.MAINNET): string { - if (chainId in swapDeploys) { - return swapDeploys[chainId] - } - throw new Error(`SwapERC20 contract not found for chainId ${chainId}`) - } - - public async check( - order: OrderERC20, - senderWallet: string, - signer?: ethers.providers.JsonRpcSigner - ): Promise> { - let contract = this.contract - if (!this.contract.signer) { - if (signer === undefined) { - throw new Error('Signer must be provided') - } else { - contract = contract.connect(signer) - } - } - const [count, errors] = await contract.check( - senderWallet, - ...orderERC20ToParams(order) - ) - return checkResultToErrors(count, errors) - } - - public async swap( - order: OrderERC20, - sender?: ethers.providers.JsonRpcSigner - ): Promise { - let contract = this.contract - if (!this.contract.signer) { - if (sender === undefined) { - throw new Error('Signer must be provided') - } else { - contract = contract.connect(sender) - } - } - return await contract.swap( - sender.getAddress(), - ...orderERC20ToParams(order) - ) - } - - public async swapAnySender( - order: OrderERC20, - sender?: ethers.providers.JsonRpcSigner - ): Promise { - let contract = this.contract - if (!this.contract.signer) { - if (sender === undefined) { - throw new Error('Signer must be provided') - } else { - contract = contract.connect(sender) - } - } - return await contract.swapAnySender( - sender.getAddress(), - ...orderERC20ToParams(order) - ) - } - - public async swapLight( - order: OrderERC20, - sender?: ethers.providers.JsonRpcSigner - ): Promise { - let contract = this.contract - if (!this.contract.signer) { - if (sender === undefined) { - throw new Error('Signer must be provided') - } else { - contract = contract.connect(sender) - } - } - return await contract.swapLight(...orderERC20ToParams(order)) - } -} diff --git a/tools/libraries/src/Wrapper.ts b/tools/libraries/src/Wrapper.ts deleted file mode 100644 index 439103e07..000000000 --- a/tools/libraries/src/Wrapper.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { ContractTransaction, ethers } from 'ethers' -import type { Provider } from '@ethersproject/providers' -import { chainIds, wrappedTokenAddresses } from '@airswap/constants' -import { Wrapper as WrapperContract } from '@airswap/wrapper/typechain/contracts' -import { Wrapper__factory } from '@airswap/wrapper/typechain/factories/contracts' -import { OrderERC20 } from '@airswap/types' - -import * as wrapperDeploys from '@airswap/wrapper/deploys.js' - -export class Wrapper { - public chainId: number - public contract: WrapperContract - - public constructor( - chainId = chainIds.MAINNET, - signerOrProvider?: ethers.Signer | Provider - ) { - this.chainId = chainId - this.contract = Wrapper__factory.connect( - Wrapper.getAddress(chainId), - signerOrProvider - ) - } - - public static getAddress(chainId = chainIds.MAINNET): string { - if (chainId in wrapperDeploys) { - return wrapperDeploys[chainId] - } - throw new Error(`Wrapper deploy not found for chainId ${chainId}`) - } - - public async swap( - order: OrderERC20, - signer?: ethers.Signer - ): Promise { - let contract = this.contract - if (!this.contract.signer) { - if (signer === undefined) { - throw new Error('Signer must be provided') - } else { - contract = contract.connect(signer) - } - } - return await contract.swap( - order.nonce, - order.expiry, - order.signerWallet, - order.signerToken, - order.signerAmount, - order.senderToken, - order.senderAmount, - order.v, - order.r, - order.s, - { - value: - order.senderToken === wrappedTokenAddresses[this.chainId] - ? order.senderAmount - : 0, - } - ) - } -} diff --git a/tools/libraries/test/Indexer.test.ts b/tools/libraries/test/Indexer.test.ts deleted file mode 100644 index e2a0a1e8e..000000000 --- a/tools/libraries/test/Indexer.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { expect } from 'chai' -import { - NodeIndexer, - SortField, - SortOrder, - toSortField, - toSortOrder, -} from '../src/Indexer' -import { ethers } from 'ethers' -import express from 'express' -import bodyParser from 'body-parser' -import { Server } from 'http' -import { - createOrderERC20, - createOrderERC20Signature, - isValidFullOrderERC20, -} from '@airswap/utils' -import { ADDRESS_ZERO, chainIds } from '@airswap/constants' - -const signerPrivateKey = - '0x4934d4ff925f39f91e3729fbce52ef12f25fdf93e014e291350f7d314c1a096b' -const provider = ethers.getDefaultProvider('goerli') -const wallet = new ethers.Wallet(signerPrivateKey, provider) - -describe('toSortField', () => { - it('should match value', () => { - expect(toSortField('SENDER_AMOUNT')).to.equal(SortField.SENDER_AMOUNT) - expect(toSortField('sender_amount')).to.equal(SortField.SENDER_AMOUNT) - expect(toSortField('SIGNER_AMOUNT')).to.equal(SortField.SIGNER_AMOUNT) - expect(toSortField('signer_amount')).to.equal(SortField.SIGNER_AMOUNT) - }) - - it('should return undefined', () => { - expect(toSortField('')).to.equal(undefined) - expect(toSortField('aze')).to.equal(undefined) - }) -}) - -describe('toSortOrder', () => { - it('should match value', () => { - expect(toSortOrder('ASC')).to.equal(SortOrder.ASC) - expect(toSortOrder('asc')).to.equal(SortOrder.ASC) - expect(toSortOrder('DESC')).to.equal(SortOrder.DESC) - expect(toSortOrder('desc')).to.equal(SortOrder.DESC) - }) - - it('should return undefined', () => { - expect(toSortOrder('')).to.equal(undefined) - expect(toSortOrder('aze')).to.equal(undefined) - }) -}) - -describe('client', () => { - let app: express - let server: Server - - before(() => { - app = express() - app.use(bodyParser.json()) - server = app.listen(12435) - }) - - after(() => { - server.close() - }) - - describe('query on server Node', () => { - it('Should query on post /getOrdersERC20', async () => { - app.post('/', async (req, res) => { - expect(req.body.jsonrpc).to.equal('2.0') - expect(req.body.method).to.equal('getOrdersERC20') - expect(req.body.params).to.eql([{}]) - - const unsignedOrder = createOrderERC20({}) - const signature = await createOrderERC20Signature( - unsignedOrder, - wallet.privateKey, - ADDRESS_ZERO, - 1 - ) - res.send({ - result: { - orders: [ - { - order: { - ...unsignedOrder, - ...signature, - chainId: chainIds.MAINNET, - swapContract: ADDRESS_ZERO, - }, - }, - ], - }, - }) - }) - const result = await new NodeIndexer( - 'http://localhost:12435' - ).getOrdersERC20() - expect(isValidFullOrderERC20(result.orders[0].order)).to.be.true - }) - }) -}) diff --git a/tools/libraries/test/Maker.test.ts b/tools/libraries/test/Maker.test.ts deleted file mode 100644 index 5f78f2382..000000000 --- a/tools/libraries/test/Maker.test.ts +++ /dev/null @@ -1,392 +0,0 @@ -import { fancy } from 'fancy-test' -import chai, { expect } from 'chai' -import sinonChai from 'sinon-chai' -import { useFakeTimers } from 'sinon' - -import { createOrderERC20 } from '@airswap/utils' -import { ADDRESS_ZERO } from '@airswap/constants' - -import { Maker } from '..' -import { - addJSONRPCAssertions, - createRequest, - createResponse, - MockSocketServer, - nextEvent, -} from './test-utils' -import { OrderERC20 } from '@airswap/types' -import { JsonRpcErrorCodes } from '@airswap/jsonrpc-client-websocket' - -addJSONRPCAssertions() -declare global { - // External library defines a namespace so ignore this rule. - // eslint-disable-next-line @typescript-eslint/no-namespace - export namespace Chai { - interface Assertion { - JSONRpcRequest(method: string, params?: any): void - JSONRpcResponse(id: string, result: any): void - JSONRpcError(id: string, error: any): void - } - } -} - -const REQUEST_TIMEOUT = 4000 -const URL = 'maker.example.com' - -chai.use(sinonChai) - -function mockHttpMaker(api) { - api.post('/').reply(200, async (uri, body) => { - const params = body['params'] - let res - switch (body['method']) { - case 'getSignerSideOrderERC20': - res = createOrderERC20({ - signerToken: params.signerToken, - senderToken: params.senderToken, - senderAmount: params.senderAmount, - senderWallet: params.senderWallet, - }) - break - case 'considerOrderERC20': - res = true - break - } - return { - jsonrpc: '2.0', - id: body['id'], - result: res, - } - }) -} - -describe('HTTPMaker', () => { - fancy - .nock('https://' + URL, mockHttpMaker) - .it('Maker getSignerSideOrderERC20()', async () => { - const maker = await Maker.at(URL) - const order = await maker.getSignerSideOrderERC20( - '0', - ADDRESS_ZERO, - ADDRESS_ZERO, - ADDRESS_ZERO - ) - expect(order.signerToken).to.equal(ADDRESS_ZERO) - }) -}) - -const samplePairs = [ - { - baseToken: '0xbase1', - quoteToken: '0xquote1', - }, - { - baseToken: '0xbase2', - quoteToken: '0xquote2', - }, -] -const samplePricing = [ - { - baseToken: '0xbase1', - quoteToken: '0xquote1', - bid: [ - ['100', '0.00053'], - ['1000', '0.00061'], - ['10000', '0.0007'], - ], - ask: [ - ['100', '0.00055'], - ['1000', '0.00067'], - ['10000', '0.0008'], - ], - }, - { - baseToken: '0xbase2', - quoteToken: '0xquote2', - bid: [ - ['100', '0.00053'], - ['1000', '0.00061'], - ['10000', '0.0007'], - ], - ask: [ - ['100', '0.00055'], - ['1000', '0.00067'], - ['10000', '0.0008'], - ], - }, -] -const fakeOrder: OrderERC20 = { - nonce: '1', - expiry: '1234', - signerWallet: '0xsigner', - signerToken: '0xtokena', - signerAmount: '100', - senderToken: '0xtokenb', - senderAmount: '200', - v: 'v', - r: 'r', - s: 's', -} - -describe('WebSocketMaker', () => { - const url = `ws://maker.com:1234/` - let mockMaker: MockSocketServer - before(() => { - MockSocketServer.startMockingWebSocket() - }) - - beforeEach(async () => { - mockMaker = new MockSocketServer(url) - mockMaker.resetInitOptions() - }) - - it('should be initialized after Maker.at has resolved', async () => { - const maker = await Maker.at(url) - const correctInitializeResponse = new Promise((resolve) => { - const onResponse = (socket, data) => { - // Note mock maker implementation uses id '123' for initialize. - expect(data).to.be.a.JSONRpcResponse('123', true) - resolve() - } - mockMaker.setNextMessageCallback(onResponse) - }) - expect(maker.supportsProtocol('last-look-erc20')).to.equal(true) - expect(maker.supportsProtocol('request-for-quote-erc20')).to.equal(false) - await correctInitializeResponse - }) - - it('should call subscribe with the correct params and emit pricing', async () => { - const maker = await Maker.at(url) - - // Ensure subscribe method is correct format. - const onSubscribe = (socket, data) => { - expect(data).to.be.a.JSONRpcRequest('subscribePricingERC20', [ - samplePairs, - ]) - socket.send(JSON.stringify(createResponse(data.id, samplePricing))) - } - mockMaker.setNextMessageCallback(onSubscribe, true) - const pricing = nextEvent(maker, 'pricing-erc20') - maker.subscribePricingERC20(samplePairs) - - // Ensure pricing is emitted and has the correct values. - expect(await pricing).to.eql(samplePricing) - - const updatedPricing = nextEvent(maker, 'pricing-erc20') - const latestPricing = [ - [ - { - baseToken: '0xbase1', - quoteToken: '0xquote1', - bid: [ - ['100', '0.00055'], - ['1000', '0.00064'], - ['10000', '0.0008'], - ], - ask: [ - ['100', '0.00056'], - ['1000', '0.00068'], - ['10000', '0.0009'], - ], - }, - ], - ] - - const updatePricingRequestId = '456' - // Ensure client responds to maker correctly when pricing is updated - const correctUpdatePricingResponse = new Promise((resolve) => { - const onResponse = (socket, data) => { - expect(data).to.be.a.JSONRpcResponse(updatePricingRequestId, true) - resolve() - } - mockMaker.setNextMessageCallback(onResponse) - }) - - // Ensure setPricingERC20 is correctly called and causes pricing to be emitted - mockMaker.emit( - 'message', - JSON.stringify( - createRequest('setPricingERC20', latestPricing, updatePricingRequestId) - ) - ) - expect(await updatedPricing).to.eql(latestPricing[0]) - await correctUpdatePricingResponse - }) - - it('should call considerOrderERC20 with the correct parameters', async () => { - const maker = await Maker.at(url) - const onConsider = (socket, data) => { - expect(data).to.be.a.JSONRpcRequest('considerOrderERC20', fakeOrder) - socket.send(JSON.stringify(createResponse(data.id, true))) - } - mockMaker.setNextMessageCallback(onConsider, true) - const result = await maker.considerOrderERC20(fakeOrder) - expect(result).to.equal(true) - }) - - fancy - .nock('https://' + URL, mockHttpMaker) - .it( - 'should use HTTP for consider when senderMaker is provided', - async () => { - mockMaker.initOptions = { - lastLook: '1.0.0', - params: { - swapContract: '0x1234', - senderWallet: '0x2345', - senderMaker: URL, - }, - } - - const maker = await Maker.at(url) - const result = await maker.considerOrderERC20(fakeOrder) - expect(result).to.equal(true) - } - ) - - it('should call unsubscribe with the correct parameters', async () => { - const maker = await Maker.at(url) - const onUnsubscribe = (socket, data) => { - expect(data).to.be.a.JSONRpcRequest('unsubscribePricingERC20', [ - samplePairs, - ]) - socket.send(JSON.stringify(createResponse(data.id, true))) - } - mockMaker.setNextMessageCallback(onUnsubscribe, true) - const result = await maker.unsubscribePricingERC20(samplePairs) - expect(result).to.equal(true) - }) - - it('should call subscribeAll and unsubscribeAll correctly', async () => { - const maker = await Maker.at(url) - const onSubscribeAll = (socket, data) => { - expect(data).to.be.a.JSONRpcRequest('subscribeAllPricingERC20') - socket.send(JSON.stringify(createResponse(data.id, true))) - } - const onUnsubscribeAll = (socket, data) => { - expect(data).to.be.a.JSONRpcRequest('unsubscribeAllPricingERC20') - socket.send(JSON.stringify(createResponse(data.id, true))) - } - mockMaker.setNextMessageCallback(onSubscribeAll, true) - const subscribeResult = await maker.subscribeAllPricingERC20() - expect(subscribeResult).to.equal(true) - mockMaker.setNextMessageCallback(onUnsubscribeAll, true) - const unsubscribeResult = await maker.unsubscribeAllPricingERC20() - expect(unsubscribeResult).to.equal(true) - }) - - it("should throw if the maker doesn't initialize within timeout", async () => { - const fakeTimers = useFakeTimers() - // prevent maker from initializing - mockMaker.initOptions = null - const initializePromise = Maker.at(url) - // This is the default timeout. - fakeTimers.tick(REQUEST_TIMEOUT) - try { - await initializePromise - throw new Error('Maker.at should not resolve before initialize') - } catch (e) { - expect(e).to.equal('Maker did not call setProtocols in time') - } - fakeTimers.restore() - }) - - it('should correctly indicate support for protocol versions', async () => { - // Protocol is supported if the major version is the same, - // and minor and patch versions are the same or greater than requried - mockMaker.initOptions = { lastLook: '1.2.3' } - const maker = await Maker.at(url) - expect(maker.supportsProtocol('last-look-erc20')).to.be.true - expect(maker.supportsProtocol('request-for-quote-erc20')).to.be.false - expect(maker.supportsProtocol('last-look-erc20', '0.9.1')).to.be.false - expect(maker.supportsProtocol('last-look-erc20', '1.0.0')).to.be.true - expect(maker.supportsProtocol('last-look-erc20', '1.1.1')).to.be.true - expect(maker.supportsProtocol('last-look-erc20', '1.2.3')).to.be.true - expect(maker.supportsProtocol('last-look-erc20', '1.2.4')).to.be.false - expect(maker.supportsProtocol('last-look-erc20', '1.3.0')).to.be.false - expect(maker.supportsProtocol('last-look-erc20', '2.2.3')).to.be.false - }) - - it('should reject when calling a method from an unsupported protocol', async () => { - const maker = await Maker.at(url) - try { - await maker.getSignerSideOrderERC20( - '0', - ADDRESS_ZERO, - ADDRESS_ZERO, - ADDRESS_ZERO - ) - throw new Error('expected getSignerSideOrder method to reject') - } catch (e) { - expect(e.message).to.match(/support/) - } - }) - - it('should not initialize if setProtocols is called with bad params', async () => { - mockMaker.initOptions = null - const responseReceived = new Promise((resolve) => { - const onInitializeResponse = () => { - resolve() - } - mockMaker.setNextMessageCallback(onInitializeResponse) - }) - mockMaker.on('connection', (socket) => { - socket.send( - JSON.stringify( - createRequest('setProtocols', [{ bad: 'params' }], 'abc') - ) - ) - }) - Maker.at(url).catch(() => { - /* this is expected, maker won't init */ - }) - - await responseReceived - }) - - it('should respond with an error if pricing is called with bad params', async () => { - await Maker.at(url) - const initResponseReceived = new Promise((resolve) => { - mockMaker.setNextMessageCallback(() => resolve()) - }) - await initResponseReceived - const responseReceived = new Promise((resolve) => { - const onPricingReponse = (socket, data) => { - expect(data).to.be.a.JSONRpcError('abc', { - code: JsonRpcErrorCodes.INVALID_PARAMS, - message: - 'Received invalid param format or values for method "setPricingERC20": {"bad":"pricing"}', - }) - resolve() - } - mockMaker.setNextMessageCallback(onPricingReponse) - }) - - mockMaker.emit( - 'message', - JSON.stringify( - createRequest('setPricingERC20', [{ bad: 'pricing' }], 'abc') - ) - ) - - await responseReceived - }) - - it('should return the correct sender wallet', async () => { - mockMaker.initOptions = { - lastLook: '1.2.3', - params: { - senderWallet: '0xmySender', - }, - } - const maker = await Maker.at(url) - expect(maker.getSenderWallet()).to.equal('0xmySender') - }) - - afterEach(() => { - mockMaker.close() - }) - after(() => { - MockSocketServer.stopMockingWebSocket() - }) -}) diff --git a/tools/libraries/test/Server.test.ts b/tools/libraries/test/Server.test.ts new file mode 100644 index 000000000..f552bd06d --- /dev/null +++ b/tools/libraries/test/Server.test.ts @@ -0,0 +1,518 @@ +import { fancy } from 'fancy-test' +import chai, { expect } from 'chai' +import sinonChai from 'sinon-chai' +import { useFakeTimers } from 'sinon' +import { ethers } from 'ethers' + +import { + createOrder, + createOrderERC20, + createOrderERC20Signature, + createOrderSignature, + isValidFullOrder, + isValidFullOrderERC20, +} from '@airswap/utils' +import { ADDRESS_ZERO, ChainIds, Protocols } from '@airswap/constants' + +import { Server } from '../index' +import { toSortField, toSortOrder } from '../index' +import { + addJSONRPCAssertions, + createRequest, + createResponse, + MockSocketServer, + nextEvent, +} from './test-utils' +import { OrderERC20, SortField, SortOrder } from '@airswap/types' +import { JsonRpcErrorCodes } from '@airswap/jsonrpc-client-websocket' + +addJSONRPCAssertions() +declare global { + // External library defines a namespace so ignore this rule. + // eslint-disable-next-line @typescript-eslint/no-namespace + export namespace Chai { + interface Assertion { + JSONRpcRequest(method: string, params?: any): void + JSONRpcResponse(id: string, result: any): void + JSONRpcError(id: string, error: any): void + } + } +} + +const USDC = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' +const USDT = '0xdac17f958d2ee523a2206206994597c13d831ec7' + +const REQUEST_TIMEOUT = 4000 +const URL = 'server.example.com' +const signerPrivateKey = + '0x4934d4ff925f39f91e3729fbce52ef12f25fdf93e014e291350f7d314c1a096b' +const wallet = new ethers.Wallet(signerPrivateKey) + +chai.use(sinonChai) + +function mockHttpServer(api) { + api.post('/').reply(200, async (uri, body) => { + const params = body['params'] + let res + switch (body['method']) { + case 'getProtocols': + res = [Protocols.Discovery, Protocols.RequestForQuoteERC20] + break + case 'getTokens': + res = [USDC, USDT] + break + case 'getSignerSideOrderERC20': + res = createOrderERC20({ + signerToken: params.signerToken, + senderToken: params.senderToken, + senderAmount: params.senderAmount, + senderWallet: params.senderWallet, + }) + console.log(params.proxyingFor) + break + case 'getOrdersERC20': + const unsignedOrderERC20 = createOrderERC20({}) + const signatureERC20 = await createOrderERC20Signature( + unsignedOrderERC20, + wallet.privateKey, + ADDRESS_ZERO, + 1 + ) + res = { + orders: [ + { + order: { + ...unsignedOrderERC20, + ...signatureERC20, + chainId: ChainIds.MAINNET, + swapContract: ADDRESS_ZERO, + }, + }, + ], + } + break + case 'getOrders': + if (params[0]['page']) { + expect(params[0]['page']).to.equal(1) + expect(params[0]['signerAddress']).to.equal(ADDRESS_ZERO) + } + res = await forgeFullOrder() + break + case 'considerOrderERC20': + res = true + break + } + return { + jsonrpc: '2.0', + id: body['id'], + result: res, + } + }) +} + +describe('HTTPServer', () => { + fancy + .nock('https://' + URL, mockHttpServer) + .it('Server getProtocols()', async () => { + const server = await Server.at(URL) + const result = await server.getProtocols() + expect(result[0]).to.be.equal(Protocols.Discovery) + expect(result[1]).to.be.equal(Protocols.RequestForQuoteERC20) + }) + fancy + .nock('https://' + URL, mockHttpServer) + .it('Server getTokens()', async () => { + const server = await Server.at(URL) + const result = await server.getTokens() + expect(result[0]).to.be.equal(USDC) + expect(result[1]).to.be.equal(USDT) + }) + fancy + .nock('https://' + URL, mockHttpServer) + .it('Server getSignerSideOrderERC20()', async () => { + const server = await Server.at(URL) + const order = await server.getSignerSideOrderERC20( + '0', + ADDRESS_ZERO, + ADDRESS_ZERO, + ADDRESS_ZERO + ) + expect(order.signerToken).to.equal(ADDRESS_ZERO) + }) + fancy + .nock('https://' + URL, mockHttpServer) + .it('Server getOrdersERC20()', async () => { + const server = await Server.at(URL) + const result = await server.getOrdersERC20() + expect(isValidFullOrderERC20(result.orders[0].order)).to.be.true + }) + fancy + .nock('https://' + URL, mockHttpServer) + .it('Server getOrders()', async () => { + const server = await Server.at(URL) + const result = await server.getOrders() + expect(isValidFullOrder(result.orders[0].order)).to.be.true + }) + fancy + .nock('https://' + URL, mockHttpServer) + .it('Server getOrdersBy()', async () => { + const server = await Server.at(URL) + const result = await server.getOrdersBy({ + page: 1, + signerAddress: ADDRESS_ZERO, + }) + expect(isValidFullOrder(result.orders[0].order)).to.be.true + }) +}) + +const samplePairs = [ + { + baseToken: '0xbase1', + quoteToken: '0xquote1', + }, + { + baseToken: '0xbase2', + quoteToken: '0xquote2', + }, +] +const samplePricing = [ + { + baseToken: '0xbase1', + quoteToken: '0xquote1', + bid: [ + ['100', '0.00053'], + ['1000', '0.00061'], + ['10000', '0.0007'], + ], + ask: [ + ['100', '0.00055'], + ['1000', '0.00067'], + ['10000', '0.0008'], + ], + }, + { + baseToken: '0xbase2', + quoteToken: '0xquote2', + bid: [ + ['100', '0.00053'], + ['1000', '0.00061'], + ['10000', '0.0007'], + ], + ask: [ + ['100', '0.00055'], + ['1000', '0.00067'], + ['10000', '0.0008'], + ], + }, +] +const fakeOrder: OrderERC20 = { + nonce: '1', + expiry: '1234', + signerWallet: '0xsigner', + signerToken: '0xtokena', + signerAmount: '100', + senderToken: '0xtokenb', + senderAmount: '200', + v: 'v', + r: 'r', + s: 's', +} + +describe('WebSocketServer', () => { + const url = `ws://server.com:1234/` + let mockServer: MockSocketServer + before(() => { + MockSocketServer.startMockingWebSocket() + }) + + beforeEach(async () => { + mockServer = new MockSocketServer(url) + mockServer.resetInitOptions() + }) + + it('should be initialized after Server.at has resolved', async () => { + const server = await Server.at(url) + const correctInitializeResponse = new Promise((resolve) => { + const onResponse = (socket, data) => { + // Note mock server implementation uses id '123' for initialize. + expect(data).to.be.a.JSONRpcResponse('123', true) + resolve() + } + mockServer.setNextMessageCallback(onResponse) + }) + expect(server.supportsProtocol(Protocols.LastLookERC20)).to.equal(true) + expect(server.supportsProtocol(Protocols.RequestForQuoteERC20)).to.equal( + false + ) + await correctInitializeResponse + }) + + it('should call subscribe with the correct params and emit pricing', async () => { + const server = await Server.at(url) + + // Ensure subscribe method is correct format. + const onSubscribe = (socket, data) => { + expect(data).to.be.a.JSONRpcRequest('subscribePricingERC20', [ + samplePairs, + ]) + socket.send(JSON.stringify(createResponse(data.id, samplePricing))) + } + mockServer.setNextMessageCallback(onSubscribe, true) + const pricing = nextEvent(server, 'pricing-erc20') + server.subscribePricingERC20(samplePairs) + + // Ensure pricing is emitted and has the correct values. + expect(await pricing).to.eql(samplePricing) + + const updatedPricing = nextEvent(server, 'pricing-erc20') + const latestPricing = [ + [ + { + baseToken: '0xbase1', + quoteToken: '0xquote1', + bid: [ + ['100', '0.00055'], + ['1000', '0.00064'], + ['10000', '0.0008'], + ], + ask: [ + ['100', '0.00056'], + ['1000', '0.00068'], + ['10000', '0.0009'], + ], + }, + ], + ] + + const updatePricingRequestId = '456' + // Ensure client responds to server correctly when pricing is updated + const correctUpdatePricingResponse = new Promise((resolve) => { + const onResponse = (socket, data) => { + expect(data).to.be.a.JSONRpcResponse(updatePricingRequestId, true) + resolve() + } + mockServer.setNextMessageCallback(onResponse) + }) + + // Ensure updatePricing is correctly called and causes pricing to be emitted + mockServer.emit( + 'message', + JSON.stringify( + createRequest('setPricingERC20', latestPricing, updatePricingRequestId) + ) + ) + expect(await updatedPricing).to.eql(latestPricing[0]) + await correctUpdatePricingResponse + }) + + it('should call considerOrderERC20 with the correct parameters', async () => { + const server = await Server.at(url) + const onConsider = (socket, data) => { + expect(data).to.be.a.JSONRpcRequest('considerOrderERC20', fakeOrder) + socket.send(JSON.stringify(createResponse(data.id, true))) + } + mockServer.setNextMessageCallback(onConsider, true) + const result = await server.considerOrderERC20(fakeOrder) + expect(result).to.equal(true) + }) + + fancy + .nock('https://' + URL, mockHttpServer) + .it( + 'should use HTTP for consider when senderServer is provided', + async () => { + mockServer.initOptions = { + lastLook: '1.0.0', + params: { + swapContract: '0x1234', + senderWallet: '0x2345', + senderServer: URL, + }, + } + + const server = await Server.at(url) + const result = await server.considerOrderERC20(fakeOrder) + expect(result).to.equal(true) + } + ) + + it('should call unsubscribe with the correct parameters', async () => { + const server = await Server.at(url) + const onUnsubscribe = (socket, data) => { + expect(data).to.be.a.JSONRpcRequest('unsubscribePricingERC20', [ + samplePairs, + ]) + socket.send(JSON.stringify(createResponse(data.id, true))) + } + mockServer.setNextMessageCallback(onUnsubscribe, true) + const result = await server.unsubscribePricingERC20(samplePairs) + expect(result).to.equal(true) + }) + + it('should call subscribeAll and unsubscribeAll correctly', async () => { + const server = await Server.at(url) + const onSubscribeAll = (socket, data) => { + expect(data).to.be.a.JSONRpcRequest('subscribeAllPricingERC20') + socket.send(JSON.stringify(createResponse(data.id, true))) + } + const onUnsubscribeAll = (socket, data) => { + expect(data).to.be.a.JSONRpcRequest('unsubscribeAllPricingERC20') + socket.send(JSON.stringify(createResponse(data.id, true))) + } + mockServer.setNextMessageCallback(onSubscribeAll, true) + const subscribeResult = await server.subscribeAllPricingERC20() + expect(subscribeResult).to.equal(true) + mockServer.setNextMessageCallback(onUnsubscribeAll, true) + const unsubscribeResult = await server.unsubscribeAllPricingERC20() + expect(unsubscribeResult).to.equal(true) + }) + + it("should throw if the server doesn't initialize within timeout", async () => { + const fakeTimers = useFakeTimers() + // prevent server from initializing + mockServer.initOptions = null + const initializePromise = Server.at(url) + // This is the default timeout. + fakeTimers.tick(REQUEST_TIMEOUT) + try { + await initializePromise + throw new Error('Server.at should not resolve before initialize') + } catch (e) { + expect(e).to.equal('Server did not call setProtocols in time') + } + fakeTimers.restore() + }) + + it('should reject when calling a method from an unsupported protocol', async () => { + const server = await Server.at(url) + try { + await server.getSignerSideOrderERC20( + '0', + ADDRESS_ZERO, + ADDRESS_ZERO, + ADDRESS_ZERO + ) + throw new Error('expected getSignerSideOrder method to reject') + } catch (e) { + expect(e.message).to.match(/support/) + } + }) + + it('should not initialize if initialize is called with bad params', async () => { + mockServer.initOptions = {} + const responseReceived = new Promise((resolve) => { + const onInitializeResponse = () => { + resolve() + } + mockServer.setNextMessageCallback(onInitializeResponse) + }) + mockServer.on('connection', (socket) => { + socket.send( + JSON.stringify( + createRequest('setProtocols', [{ bad: 'params' }], 'abc') + ) + ) + }) + Server.at(url).catch(() => { + /* this is expected, server won't init */ + }) + + await responseReceived + }) + + it('should respond with an error if pricing is called with bad params', async () => { + await Server.at(url) + const initResponseReceived = new Promise((resolve) => { + mockServer.setNextMessageCallback(() => resolve()) + }) + await initResponseReceived + const responseReceived = new Promise((resolve) => { + const onPricingReponse = (socket, data) => { + expect(data).to.be.a.JSONRpcError('abc', { + code: JsonRpcErrorCodes.INVALID_PARAMS, + message: + 'Received invalid param format or values for method "setPricingERC20": {"bad":"pricing"}', + }) + resolve() + } + mockServer.setNextMessageCallback(onPricingReponse) + }) + + mockServer.emit( + 'message', + JSON.stringify( + createRequest('setPricingERC20', [{ bad: 'pricing' }], 'abc') + ) + ) + + await responseReceived + }) + + it('should return the correct sender wallet', async () => { + mockServer.initOptions = { + lastLook: '1.2.3', + params: { + senderWallet: '0xmySender', + }, + } + const server = await Server.at(url) + expect(server.getSenderWallet()).to.equal('0xmySender') + }) + + afterEach(() => { + mockServer.close() + }) + after(() => { + MockSocketServer.stopMockingWebSocket() + }) +}) + +describe('Storage', () => { + it('sort field: should match value', () => { + expect(toSortField('SENDER_AMOUNT')).to.equal(SortField.SENDER_AMOUNT) + expect(toSortField('sender_amount')).to.equal(SortField.SENDER_AMOUNT) + expect(toSortField('SIGNER_AMOUNT')).to.equal(SortField.SIGNER_AMOUNT) + expect(toSortField('signer_amount')).to.equal(SortField.SIGNER_AMOUNT) + expect(toSortField('EXPIRY')).to.equal(SortField.EXPIRY) + expect(toSortField('expiry')).to.equal(SortField.EXPIRY) + }) + + it('sort field: should return undefined', () => { + expect(toSortField('')).to.equal(undefined) + expect(toSortField('aze')).to.equal(undefined) + }) + + it('sort order: should match value', () => { + expect(toSortOrder('ASC')).to.equal(SortOrder.ASC) + expect(toSortOrder('asc')).to.equal(SortOrder.ASC) + expect(toSortOrder('DESC')).to.equal(SortOrder.DESC) + expect(toSortOrder('desc')).to.equal(SortOrder.DESC) + }) + + it('sort order: should return undefined', () => { + expect(toSortOrder('')).to.equal(undefined) + expect(toSortOrder('aze')).to.equal(undefined) + }) +}) + +async function forgeFullOrder() { + const unsignedOrder = createOrder({}) + const signature = await createOrderSignature( + unsignedOrder, + wallet.privateKey, + ADDRESS_ZERO, + 1 + ) + return { + orders: [ + { + order: { + ...unsignedOrder, + ...signature, + chainId: ChainIds.MAINNET, + swapContract: ADDRESS_ZERO, + }, + }, + ], + } +} diff --git a/tools/libraries/test/test-utils.ts b/tools/libraries/test/test-utils.ts index 94565f963..103bcdaa0 100644 --- a/tools/libraries/test/test-utils.ts +++ b/tools/libraries/test/test-utils.ts @@ -6,6 +6,7 @@ import { } from '@airswap/jsonrpc-client-websocket' import mock from 'mock-require' import { WebSocket, Server as BaseMockSocketServer } from 'mock-socket' +import { Protocols } from '@airswap/constants' export function addJSONRPCAssertions(): void { chai.Assertion.addMethod( @@ -122,13 +123,13 @@ export class MockSocketServer extends BaseMockSocketServer { if (this._initOptions) { if (this._initOptions.lastLook) protocols.push({ - name: 'last-look-erc20', + name: Protocols.LastLookERC20, version: this._initOptions.lastLook, params: this._initOptions.params, }) if (this._initOptions.rfq) protocols.push({ - name: 'request-for-quote-erc20', + name: Protocols.RequestForQuoteERC20, version: this._initOptions.rfq, params: this._initOptions.params, }) diff --git a/tools/libraries/tsconfig.json b/tools/libraries/tsconfig.json index b22de25e3..3271011f0 100644 --- a/tools/libraries/tsconfig.json +++ b/tools/libraries/tsconfig.json @@ -1,16 +1,7 @@ { + "extends": "../../tsconfig.json", "compilerOptions": { - "target": "es5", - "module": "commonjs", - "moduleResolution": "node", - "lib": ["es2019", "dom"], - "esModuleInterop": true, - "skipLibCheck": false, - "resolveJsonModule": true, - "suppressImplicitAnyIndexErrors": true, - "sourceMap": true, - "declaration": true, + "lib": ["es2021", "dom"], "outDir": "./build" - }, - "exclude": ["**/test/", "**/build/"] -} \ No newline at end of file + } +} diff --git a/tools/metadata/README.md b/tools/metadata/README.md index c03b6cf1a..db253568a 100644 --- a/tools/metadata/README.md +++ b/tools/metadata/README.md @@ -25,8 +25,8 @@ Import into your application: ```TypeScript import { getKnownTokens } from '@airswap/metadata' -import { chainIds } from '@airswap/constants' -const { errors, tokens } = await getKnownTokens(chainIds.MAINNET) +import { ChainIds } from '@airswap/constants' +const { errors, tokens } = await getKnownTokens(ChainIds.MAINNET) ``` ## Commands diff --git a/tools/metadata/constants.ts b/tools/metadata/constants.ts index ba7e047db..1278ac671 100644 --- a/tools/metadata/constants.ts +++ b/tools/metadata/constants.ts @@ -1,35 +1,32 @@ -import { chainIds } from '@airswap/constants' +import { ChainIds } from '@airswap/constants' -export const tokenListURLs = { - [chainIds.MAINNET]: [ +export const tokenListURLs: Record = { + [ChainIds.MAINNET]: [ 'https://raw.githubusercontent.com/compound-finance/token-list/master/compound.tokenlist.json', - 'https://umaproject.org/uma.tokenlist.json', 'https://raw.githubusercontent.com/SetProtocol/uniswap-tokenlist/main/set.tokenlist.json', 'https://app.tryroll.com/tokens.json', 'https://tokens.coingecko.com/uniswap/all.json', - 'https://zapper.fi/api/token-list', 'https://tokenlist.aave.eth.link', 'https://tokens.coingecko.com/ethereum/all.json', ], - [chainIds.RSK]: [ + [ChainIds.RSK]: [ 'https://raw.githubusercontent.com/enkryptcom/dynamic-data/main/tokenlists/rsk.json', ], - [chainIds.BSC]: [ + [ChainIds.BSC]: [ 'https://raw.githubusercontent.com/ApeSwapFinance/apeswap-token-lists/main/lists/apeswap.json', 'https://tokens.pancakeswap.finance/pancakeswap-top-100.json', 'https://tokens.pancakeswap.finance/pancakeswap-extended.json', ], - [chainIds.POLYGON]: [ + [ChainIds.POLYGON]: [ 'https://unpkg.com/quickswap-default-token-list@1.2.9/build/quickswap-default.tokenlist.json', 'https://storageapi.fleek.co/tomafrench-team-bucket/polygon.vetted.tokenlist.json', ], - [chainIds.OPTIMISM]: ['https://static.optimism.io/optimism.tokenlist.json'], - [chainIds.ARBITRUM]: [ + [ChainIds.ARBITRUM]: [ 'https://bridge.arbitrum.io/token-list-42161.json', 'https://tracer.finance/tokens', 'https://storageapi.fleek.co/tomafrench-team-bucket/arbitrum.vetted.tokenlist.json', ], - [chainIds.AVALANCHE]: [ + [ChainIds.AVALANCHE]: [ 'https://matcha.xyz/tokenlists/43114.json', 'https://raw.githubusercontent.com/pangolindex/tokenlists/main/defi.tokenlist.json', 'https://raw.githubusercontent.com/pangolindex/tokenlists/main/stablecoin.tokenlist.json', diff --git a/tools/metadata/index.ts b/tools/metadata/index.ts index 84356fc12..206d0120d 100644 --- a/tools/metadata/index.ts +++ b/tools/metadata/index.ts @@ -1,5 +1,5 @@ import axios from 'axios' -import * as ethers from 'ethers' +import { ethers } from 'ethers' import { TokenInfo, CollectionTokenInfo, @@ -8,10 +8,11 @@ import { } from '@airswap/types' import { defaults, tokenListURLs } from './constants' import { - tokenKinds, + TokenKinds, chainNames, stakingTokenAddresses, } from '@airswap/constants' +// @ts-ignore import validUrl from 'valid-url' const AIRSWAP_LOGO_URI = @@ -27,7 +28,7 @@ import { abi as ERC1155_ABI } from '@openzeppelin/contracts/build/contracts/ERC1 export async function getKnownTokens( chainId: number ): Promise<{ tokens: TokenInfo[]; errors: string[] }> { - const errors = [] + const errors: Array = [] let tokens = [] tokens.push(...defaults) if (tokenListURLs[chainId]) { @@ -39,7 +40,7 @@ export async function getKnownTokens( return data.tokens } return { url, message: 'Invalid token list' } - } catch (e) { + } catch (e: any) { return { url, message: e.message } } }) @@ -78,10 +79,12 @@ export async function getKnownTokens( export function findTokenByAddress( address: string, tokens: TokenInfo[] -): TokenInfo { - return tokens.find((token) => { - return token.address.toLowerCase() === address.toLowerCase() - }) +): TokenInfo | null { + return ( + tokens.find((token) => { + return token.address.toLowerCase() === address.toLowerCase() + }) || null + ) } export function findTokensBySymbol( @@ -96,10 +99,12 @@ export function findTokensBySymbol( export function firstTokenBySymbol( symbol: string, tokens: TokenInfo[] -): TokenInfo { - return tokens.find((token) => { - return token.symbol === symbol - }) +): TokenInfo | null { + return ( + tokens.find((token) => { + return token.symbol === symbol + }) || null + ) } export function getStakingTokens(): TokenInfo[] { @@ -123,23 +128,23 @@ export function getStakingTokens(): TokenInfo[] { } export async function getTokenKind( - provider: ethers.providers.BaseProvider, + provider: ethers.providers.Provider, address: string ): Promise { const contract = new ethers.Contract(address, ERC165_ABI, provider) let supportsERC165 = true - let tokenKind = tokenKinds.ERC20 + let tokenKind = TokenKinds.ERC20 try { - if (await contract.supportsInterface(tokenKinds.ERC721)) { - tokenKind = tokenKinds.ERC721 + if (await contract.supportsInterface(TokenKinds.ERC721)) { + tokenKind = TokenKinds.ERC721 } } catch (e) { supportsERC165 = false } if (supportsERC165) { - if (tokenKind === tokenKinds.ERC20) { - if (await contract.supportsInterface(tokenKinds.ERC1155)) { - tokenKind = tokenKinds.ERC1155 + if (tokenKind === TokenKinds.ERC20) { + if (await contract.supportsInterface(TokenKinds.ERC1155)) { + tokenKind = TokenKinds.ERC1155 } } } @@ -147,7 +152,7 @@ export async function getTokenKind( } export async function getTokenInfo( - provider: ethers.providers.BaseProvider, + provider: ethers.providers.Provider, address: string ): Promise { if (!ethers.utils.isAddress(address)) { @@ -176,7 +181,7 @@ export async function getTokenInfo( } export async function getCollectionTokenInfo( - provider: ethers.providers.BaseProvider, + provider: ethers.providers.Provider, address: string, id: string ): Promise { @@ -193,31 +198,31 @@ export async function getCollectionTokenInfo( } try { switch (tokenKind) { - case tokenKinds.ERC721: + case TokenKinds.ERC721: uri = await new ethers.Contract(address, ERC721_ABI, provider).tokenURI( id ) metadata = transformERC721ToCollectionToken(await fetchMetaData(uri)) break - case tokenKinds.ERC1155: + case TokenKinds.ERC1155: uri = await new ethers.Contract(address, ERC1155_ABI, provider).uri(id) metadata = transformERC1155ToCollectionToken(await fetchMetaData(uri)) break } - } catch (e) { + } catch (e: any) { throw `Unable to fetch token metadata: ${e.message}` } return { chainId: (await provider.getNetwork()).chainId, kind: tokenKind, address: address.toLowerCase(), - id, + id: Number(id), uri, ...metadata, } } -async function fetchMetaData(uri) { +async function fetchMetaData(uri: string) { if (validUrl.isUri(uri)) { if (uri.startsWith('ipfs')) { uri = `https://cloudflare-ipfs.com/${uri.replace('://', '/')}` diff --git a/tools/metadata/package.json b/tools/metadata/package.json index dcdb74263..2dc470ef9 100644 --- a/tools/metadata/package.json +++ b/tools/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/metadata", - "version": "4.0.3", + "version": "4.0.4", "description": "AirSwap: Token Metadata for Developers", "repository": { "type": "git", @@ -18,12 +18,12 @@ "scripts": { "clean": "rm -rf ./build", "compile": "yarn clean && tsc -b", - "test": "yarn compile && yarn mocha -r ts-node/register test/metadata.ts" + "test": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" }, "dependencies": { "@airswap/constants": "^4.0.0", "@airswap/types": "^4.0.0", - "@openzeppelin/contracts": "^4.8.1", + "@openzeppelin/contracts": "^4.8.3", "@uniswap/token-lists": "^1.0.0-beta.24", "axios": "^0.21.4", "eth-contract-metadata": "^1.12.1", diff --git a/tools/metadata/test/metadata.ts b/tools/metadata/test/metadata.ts index dabf73c36..ef66cca53 100644 --- a/tools/metadata/test/metadata.ts +++ b/tools/metadata/test/metadata.ts @@ -1,46 +1,27 @@ import { expect } from 'chai' -import { - getKnownTokens, - findTokenByAddress, - findTokensBySymbol, - firstTokenBySymbol, -} from '../index' -import { - chainIds, - wrappedTokenAddresses, - ADDRESS_ZERO, -} from '@airswap/constants' +import { getKnownTokens, findTokenByAddress } from '../index' +import { ChainIds, ADDRESS_ZERO } from '@airswap/constants' describe('Metadata: Ethereum', async () => { - let result + let result: any + it('fetches all known tokens', async () => { - result = await getKnownTokens(chainIds.MAINNET) + result = await getKnownTokens(ChainIds.MAINNET) expect(result.tokens.length).to.not.equal(0) }) it('checks that ETH does not exist', async () => { - expect(findTokenByAddress(ADDRESS_ZERO, result.tokens)).to.be.undefined + expect(findTokenByAddress(ADDRESS_ZERO, result.tokens)).to.be.equal(null) }) }) describe('Metadata: Goerli', async () => { - let result + let result: any it('fetches all known tokens', async () => { - result = await getKnownTokens(chainIds.MAINNET) + result = await getKnownTokens(ChainIds.MAINNET) expect(result.tokens.length).to.not.equal(0) }) it('checks that ETH does not exist', async () => { - expect(findTokenByAddress(ADDRESS_ZERO, result.tokens)).to.be.undefined - }) - it('checks that WETH exists', async () => { - expect( - findTokenByAddress(wrappedTokenAddresses[chainIds.MAINNET], result.tokens) - ).to.not.be.undefined - expect(findTokensBySymbol('WETH', result.tokens)[0].address).to.equal( - wrappedTokenAddresses[chainIds.MAINNET] - ) - expect(firstTokenBySymbol('WETH', result.tokens).address).to.equal( - wrappedTokenAddresses[chainIds.MAINNET] - ) + expect(findTokenByAddress(ADDRESS_ZERO, result.tokens)).to.be.equal(null) }) }) diff --git a/tools/types/index.ts b/tools/types/index.ts index dd796974f..eeb07ef9a 100644 --- a/tools/types/index.ts +++ b/tools/types/index.ts @@ -1,2 +1,3 @@ export * from './src/eip712' export * from './src/typescript' +export * from './src/server' diff --git a/tools/types/package.json b/tools/types/package.json index 64078b324..b7c99b152 100644 --- a/tools/types/package.json +++ b/tools/types/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/types", - "version": "4.0.2", + "version": "4.0.3", "description": "AirSwap: Types for Developers", "repository": { "type": "git", diff --git a/tools/types/src/server.ts b/tools/types/src/server.ts new file mode 100644 index 000000000..255f569d8 --- /dev/null +++ b/tools/types/src/server.ts @@ -0,0 +1,73 @@ +export type ServerOptions = { + chainId?: number + swapContract?: string + initializeTimeout?: number +} + +export type SupportedProtocolInfo = { + name: string + version: string + params?: any +} + +export enum SortField { + SIGNER_AMOUNT = 'SIGNER_AMOUNT', + SENDER_AMOUNT = 'SENDER_AMOUNT', + EXPIRY = 'EXPIRY', +} + +export enum SortOrder { + ASC = 'ASC', + DESC = 'DESC', +} + +export type RequestFilterERC20 = { + signerTokens?: string[] + senderTokens?: string[] + minSignerAmount?: bigint + maxSignerAmount?: bigint + minSenderAmount?: bigint + maxSenderAmount?: bigint + page: number + sortField?: SortField + sortOrder?: SortOrder + maxAddedDate?: number +} + +export type RequestFilter = { + sortField?: SortField + sortOrder?: SortOrder + signerAddress?: string + senderAddress?: string + page: number +} + +export type FiltersResponse = { + signerToken: Record + senderToken: Record +} + +export type AmountLimitFilterResponse = { + min: string + max: string +} + +export type IndexedOrder = { + hash?: string | undefined + order: Type + addedOn: number +} + +export type OrderResponse = { + orders: Record> + pagination: Pagination + filters?: FiltersResponse | undefined + ordersForQuery: number +} + +export type Pagination = { + first: string + last: string + prev?: string | undefined + next?: string | undefined +} diff --git a/tools/types/src/typescript.ts b/tools/types/src/typescript.ts index 2fde6af8e..825320a5d 100644 --- a/tools/types/src/typescript.ts +++ b/tools/types/src/typescript.ts @@ -81,7 +81,7 @@ export type Token = { decimals: number } -export { TokenInfo } from '@uniswap/token-lists' +export type { TokenInfo } from '@uniswap/token-lists' export interface CollectionTokenAttribute { label: string @@ -89,10 +89,10 @@ export interface CollectionTokenAttribute { } export type CollectionTokenMetadata = { - name: string - image: string - description: string - attributes: CollectionTokenAttribute[] + name?: string + image?: string + description?: string + attributes?: CollectionTokenAttribute[] createdBy?: string } diff --git a/tools/utils/index.ts b/tools/utils/index.ts index 5abf7923e..27f4f850c 100644 --- a/tools/utils/index.ts +++ b/tools/utils/index.ts @@ -1,21 +1,18 @@ import { ethers, BigNumber as BigNumberEthers } from 'ethers' import * as url from 'url' -import { etherscanDomains } from '@airswap/constants' +import { explorerUrls } from '@airswap/constants' export * from './src/pool' export * from './src/pricing' export * from './src/swap' export * from './src/swapERC20' -export function getEtherscanURL(chainId: number, hash: string): string { - return `https://${etherscanDomains[chainId]}/tx/${hash}` +export function getReceiptUrl(chainId: number, hash: string): string { + return `${explorerUrls[chainId]}/tx/${hash}` } -export function getEtherscanWalletURL( - chainId: number, - address: string -): string { - return `https://${etherscanDomains[chainId]}/address/${address}` +export function getAccountUrl(chainId: number, address: string): string { + return `${explorerUrls[chainId]}/address/${address}` } export function checkResultToErrors( @@ -38,6 +35,22 @@ export function numberToBytes32(number: number): string { return `0x${hexString.padStart(64, '0')}` } +export function getInterfaceId(functions: string[]): string { + const _interface = new ethers.utils.Interface(functions) + const interfaceId = ethers.utils.arrayify( + _interface.getSighash(_interface.fragments[0]) + ) + for (let i = 1; i < _interface.fragments.length; i++) { + const hash = ethers.utils.arrayify( + _interface.getSighash(_interface.fragments[i]) + ) + for (let j = 0; j < hash.length; j++) { + interfaceId[j] = interfaceId[j] ^ hash[j] + } + } + return ethers.utils.hexlify(interfaceId) +} + export function parseUrl(locator: string): url.UrlWithStringQuery { if (!/(http|ws)s?:\/\//.test(locator)) { locator = `https://${locator}` diff --git a/tools/utils/package.json b/tools/utils/package.json index 278a2de2d..b763e5564 100644 --- a/tools/utils/package.json +++ b/tools/utils/package.json @@ -1,6 +1,6 @@ { "name": "@airswap/utils", - "version": "4.0.3", + "version": "4.0.4", "description": "AirSwap: Utilities for Developers", "repository": { "type": "git", @@ -19,7 +19,7 @@ "clean": "rm -rf ./build", "compile": "yarn clean && tsc -b", "test": "yarn test:unit", - "test:unit": "yarn compile && yarn mocha -r ts-node/register test/utils.ts" + "test:unit": "TS_NODE_COMPILER_OPTIONS='{\"strict\":false}' yarn mocha -r ts-node/esm test/*.ts" }, "dependencies": { "@airswap/constants": "^4.0.0", @@ -28,15 +28,9 @@ "bignumber.js": "^9.0.1", "ethereumjs-util": "^7.1.5", "ethers": "^5.6.9", - "lz-string": "^1.4.4" + "lz-string": "^1.5.0" }, "publishConfig": { "access": "public" - }, - "devDependencies": { - "@types/mocha": "^10.0.1", - "@types/node": "^18.14.6", - "ts-node": "^10.9.1", - "typescript": "^4.8.4" } } diff --git a/tools/utils/src/pricing.ts b/tools/utils/src/pricing.ts index eefbe435b..7549c7565 100644 --- a/tools/utils/src/pricing.ts +++ b/tools/utils/src/pricing.ts @@ -1,7 +1,7 @@ import BigNumber from 'bignumber.js' import { ethers } from 'ethers' -import { OrderERC20, Levels, Formula, Pricing } from '@airswap/types' +import { Levels, Formula, Pricing } from '@airswap/types' export function getCostFromPricing( side: 'buy' | 'sell', @@ -60,64 +60,6 @@ export function calculateCostFromLevels(amount: string, levels: Levels) { return totalCost.decimalPlaces(6).toFixed() } -function getLowest(objects: Array, key: string): any { - let best: any - let bestAmount - let amount - for (const obj of objects) { - if (!obj[key]) continue - if (obj[key].amount != undefined) { - // if its a quote, it has .amount - amount = ethers.BigNumber.from(obj[key].amount) - } else { - // if its an order, it has .data - amount = ethers.BigNumber.from(obj[key].data.slice(0, 66)) - } - if (!best || amount.lt(bestAmount)) { - bestAmount = amount - best = obj - } - } - return best -} - -function getHighest(objects: Array, key: string): any { - let best: any - let bestAmount - let amount - for (const obj of objects) { - if (!obj[key]) continue - if (obj[key].amount != undefined) { - // if its a quote, it has .amount - amount = ethers.BigNumber.from(obj[key].amount) - } else { - // if its an order, it has .data - amount = ethers.BigNumber.from(obj[key].data.slice(0, 66)) - } - if (!best || amount.gt(bestAmount)) { - bestAmount = amount - best = obj - } - } - return best -} - -export function getBestByLowestSenderAmount(objects: Array): any { - return getLowest(objects, 'sender') -} - -export function getBestByLowestSignerAmount(objects: Array): any { - return getLowest(objects, 'signer') -} - -export function getBestByHighestSignerAmount(objects: Array): any { - return getHighest(objects, 'signer') -} - -export function getBestByHighestSenderAmount(objects: Array): any { - return getHighest(objects, 'sender') -} - export function toDecimalString( value: string | ethers.BigNumber, decimals: string | number diff --git a/tools/utils/src/swap.ts b/tools/utils/src/swap.ts index f35be3f0a..d67b952fa 100644 --- a/tools/utils/src/swap.ts +++ b/tools/utils/src/swap.ts @@ -8,7 +8,7 @@ import { import { lowerCaseAddresses } from '../index' import { - chainIds, + ChainIds, SECONDS_IN_DAY, ADDRESS_ZERO, DOMAIN_VERSION_SWAP, @@ -20,6 +20,8 @@ import { OrderParty, Signature, EIP712Swap, + Order, + FullOrder, } from '@airswap/types' const defaultParty: OrderParty = { @@ -30,6 +32,47 @@ const defaultParty: OrderParty = { amount: '0', } +function isValidString(value: string): boolean { + return typeof value === 'string' && value.length > 0 +} +function isBytesLike(value: string): boolean { + return typeof value === 'string' && ethers.utils.isBytesLike(value) +} +function isValidOrderParty(orderParty: OrderParty): boolean { + return ( + !!orderParty && + isValidString(orderParty['wallet']) && + isValidString(orderParty['token']) && + isValidString(orderParty['kind']) && + isValidString(orderParty['id']) && + isValidString(orderParty['amount']) + ) +} + +export function isValidOrder(order: Order): boolean { + return ( + !!order && + isValidString(order['nonce']) && + isValidString(order['expiry']) && + isValidString(order['protocolFee']) && + isValidString(order['affiliateWallet']) && + isValidString(order['affiliateAmount']) && + isBytesLike(order['r']) && + isBytesLike(order['s']) && + isValidString(order['v']) && + isValidOrderParty(order['signer']) && + isValidOrderParty(order['sender']) + ) +} + +export function isValidFullOrder(fullOrder: FullOrder) { + return ( + isValidOrder(fullOrder as Order) && + ethers.utils.isAddress(fullOrder['swapContract']) && + typeof fullOrder['chainId'] == 'number' + ) +} + export function createOrder({ nonce = Date.now(), expiry = Math.round(Date.now() / 1000 + SECONDS_IN_DAY).toString(), @@ -54,7 +97,7 @@ export async function createOrderSignature( unsignedOrder: UnsignedOrder, signer: ethers.VoidSigner | string, swapContract: string, - chainId = chainIds.MAINNET, + chainId = ChainIds.MAINNET, version = DOMAIN_VERSION_SWAP, name = DOMAIN_NAME_SWAP ): Promise { diff --git a/tools/utils/src/swapERC20.ts b/tools/utils/src/swapERC20.ts index d50e8f265..3ba86b012 100644 --- a/tools/utils/src/swapERC20.ts +++ b/tools/utils/src/swapERC20.ts @@ -8,7 +8,7 @@ import { } from '@metamask/eth-sig-util' import { - chainIds, + ChainIds, SECONDS_IN_DAY, ADDRESS_ZERO, DOMAIN_VERSION_SWAP_ERC20, @@ -51,7 +51,7 @@ export async function createOrderERC20Signature( unsignedOrder: UnsignedOrderERC20, signer: ethers.VoidSigner | string, swapContract: string, - chainId = chainIds.MAINNET, + chainId = ChainIds.MAINNET, version = DOMAIN_VERSION_SWAP_ERC20, name = DOMAIN_NAME_SWAP_ERC20 ): Promise { diff --git a/tools/utils/test/utils.ts b/tools/utils/test/utils.ts index e589ee1e4..5714576e4 100644 --- a/tools/utils/test/utils.ts +++ b/tools/utils/test/utils.ts @@ -1,7 +1,11 @@ import { assert, expect } from 'chai' import { ethers } from 'ethers' -import { ADDRESS_ZERO, SECONDS_IN_DAY } from '@airswap/constants' -import { Levels, FullOrderERC20 } from '@airswap/types' +import { + ADDRESS_ZERO, + SECONDS_IN_DAY, + protocolInterfaces, +} from '@airswap/constants' +import { Levels, FullOrderERC20, UnsignedOrderERC20 } from '@airswap/types' import { isValidFullOrderERC20, @@ -14,15 +18,15 @@ import { compressFullOrderERC20, decompressFullOrderERC20, calculateCostFromLevels, -} from '@airswap/utils' + getInterfaceId, +} from '../index' const signerPrivateKey = '0x4934d4ff925f39f91e3729fbce52ef12f25fdf93e014e291350f7d314c1a096b' -const provider = ethers.getDefaultProvider('goerli') -const wallet = new ethers.Wallet(signerPrivateKey, provider) +const wallet = new ethers.Wallet(signerPrivateKey) describe('Utils', async () => { - let unsignedOrder + let unsignedOrder: UnsignedOrderERC20 before(async () => { unsignedOrder = { nonce: Date.now().toString(), @@ -37,6 +41,14 @@ describe('Utils', async () => { } }) + it('Generates correct interfaceIds', async () => { + for (const interfaceId in protocolInterfaces) { + expect(getInterfaceId(protocolInterfaces[interfaceId])).to.be.equal( + interfaceId + ) + } + }) + it('Signs and validates an order', async () => { const { v, r, s } = await createOrderERC20Signature( unsignedOrder, @@ -57,7 +69,7 @@ describe('Utils', async () => { }) it('isValidFullOrder : returns true only if fields are present', async () => { - const unsignedOrder = { + const unsignedOrder: UnsignedOrderERC20 = { nonce: Date.now().toString(), expiry: Math.round(Date.now() / 1000 + SECONDS_IN_DAY).toString(), signerWallet: ADDRESS_ZERO, diff --git a/tsconfig.json b/tsconfig.json index d8cf6b9e9..187a011a2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,14 +3,14 @@ "target": "es5", "module": "commonjs", "moduleResolution": "node", - "lib": ["es2019", "dom"], + "lib": ["es2021"], "esModuleInterop": true, "skipLibCheck": false, + "strict": true, "resolveJsonModule": true, - "suppressImplicitAnyIndexErrors": true, "sourceMap": true, "declaration": true, "outDir": "./build" }, - "exclude": ["**/test/", "**/build/"] + "exclude": ["**/test/", "**/node_modules/", "**/build/", "**/src/"] } diff --git a/yarn.lock b/yarn.lock index cee9609f7..1d6c9042d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,16 +10,16 @@ get-parameter-names "^0.3.0" "@babel/code-frame@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" "@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/highlight@^7.18.6": version "7.18.6" @@ -42,7 +42,14 @@ dependencies: "@chainsafe/as-sha256" "^0.3.1" -"@chainsafe/ssz@0.9.4": +"@chainsafe/persistent-merkle-tree@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" + integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/ssz@0.9.4", "@chainsafe/ssz@^0.9.2": version "0.9.4" resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== @@ -51,6 +58,14 @@ "@chainsafe/persistent-merkle-tree" "^0.4.2" case "^1.6.3" +"@chainsafe/ssz@^0.10.0": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" + integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.5.0" + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -74,29 +89,26 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.2" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" + eslint-visitor-keys "^3.3.0" -"@eslint/eslintrc@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.0.tgz#943309d8697c52fc82c076e90c1c74fbbe69dbff" - integrity sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A== +"@eslint-community/regexpp@^4.4.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" + integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== + +"@eslint/eslintrc@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" + integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" + espree "^9.5.1" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -104,10 +116,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.35.0": - version "8.35.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.35.0.tgz#b7569632b0b788a0ca0e438235154e45d42813a7" - integrity sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw== +"@eslint/js@8.38.0": + version "8.38.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892" + integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g== "@ethereum-waffle/chai@^3.4.4": version "3.4.4" @@ -191,22 +203,7 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" -"@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" - integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== - dependencies: - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.7.0": +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -221,20 +218,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" - integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.3" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/web" "^5.6.1" - -"@ethersproject/abstract-provider@^5.7.0": +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== @@ -247,18 +231,7 @@ "@ethersproject/transactions" "^5.7.0" "@ethersproject/web" "^5.7.0" -"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" - integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/abstract-signer@^5.7.0": +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== @@ -269,18 +242,7 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/address@5.6.1", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" - integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.1" - -"@ethersproject/address@^5.7.0": +"@ethersproject/address@5.7.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== @@ -291,29 +253,14 @@ "@ethersproject/logger" "^5.7.0" "@ethersproject/rlp" "^5.7.0" -"@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" - integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - -"@ethersproject/base64@^5.7.0": +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== dependencies: "@ethersproject/bytes" "^5.7.0" -"@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" - integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/basex@^5.7.0": +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== @@ -321,16 +268,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/properties" "^5.7.0" -"@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" - integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - bn.js "^5.2.1" - -"@ethersproject/bignumber@^5.7.0": +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== @@ -339,65 +277,37 @@ "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" - integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/bytes@^5.7.0": +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/constants@5.6.1", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" - integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - -"@ethersproject/constants@^5.7.0": +"@ethersproject/constants@5.7.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: "@ethersproject/bignumber" "^5.7.0" -"@ethersproject/contracts@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" - integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== - dependencies: - "@ethersproject/abi" "^5.6.3" - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.2" - -"@ethersproject/hash@5.6.1", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" - integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/hash@^5.7.0": +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -412,52 +322,44 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" - integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/basex" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/wordlists" "^5.6.1" - -"@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" - integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hdnode" "^5.6.2" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - aes-js "3.0.0" - scrypt-js "3.0.1" +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" -"@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" - integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== dependencies: - "@ethersproject/bytes" "^5.6.1" - js-sha3 "0.8.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" -"@ethersproject/keccak256@^5.7.0": +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== @@ -465,79 +367,34 @@ "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/logger@^5.7.0": +"@ethersproject/logger@5.7.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" - integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/networks@^5.7.0": +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" - integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/sha2" "^5.6.1" - -"@ethersproject/properties@5.6.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: - "@ethersproject/logger" "^5.6.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" -"@ethersproject/properties@^5.7.0": +"@ethersproject/properties@5.7.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" -"@ethersproject/providers@5.6.8": - version "5.6.8" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" - integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/base64" "^5.6.1" - "@ethersproject/basex" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.3" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/rlp" "^5.6.1" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/web" "^5.6.1" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/providers@^5.7.2": +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== @@ -563,15 +420,7 @@ bech32 "1.1.4" ws "7.4.6" -"@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" - integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/random@^5.7.0": +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== @@ -579,15 +428,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" - integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/rlp@^5.7.0": +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== @@ -595,16 +436,7 @@ "@ethersproject/bytes" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" - integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - hash.js "1.1.7" - -"@ethersproject/sha2@^5.7.0": +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== @@ -613,19 +445,7 @@ "@ethersproject/logger" "^5.7.0" hash.js "1.1.7" -"@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" - integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/signing-key@^5.7.0": +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== @@ -637,28 +457,19 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/solidity@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" - integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/strings@5.6.1", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" - integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" -"@ethersproject/strings@^5.7.0": +"@ethersproject/strings@5.7.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -667,22 +478,7 @@ "@ethersproject/constants" "^5.7.0" "@ethersproject/logger" "^5.7.0" -"@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" - integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== - dependencies: - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - -"@ethersproject/transactions@^5.7.0": +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== @@ -697,48 +493,37 @@ "@ethersproject/rlp" "^5.7.0" "@ethersproject/signing-key" "^5.7.0" -"@ethersproject/units@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" - integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/wallet@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" - integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/hdnode" "^5.6.2" - "@ethersproject/json-wallets" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/wordlists" "^5.6.1" - -"@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" - integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== - dependencies: - "@ethersproject/base64" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/web@^5.7.0": +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== @@ -749,18 +534,18 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" - integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" -"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": +"@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== @@ -774,15 +559,6 @@ debug "^4.1.1" minimatch "^3.0.5" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" @@ -803,15 +579,22 @@ resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -821,738 +604,137 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@lerna/add@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-5.2.0.tgz#b9d3c728e059eea67f5757ee4b8e9550295f0be6" - integrity sha512-BKTWhii4i1JUKqmOXkauD2rTGabo83gnqYYsORobmquKFG02tFD2upqkP73DmP6xgmovpBQ8NpPO/75r1MbtIQ== - dependencies: - "@lerna/bootstrap" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/filter-options" "5.2.0" - "@lerna/npm-conf" "5.2.0" - "@lerna/validation-error" "5.2.0" - dedent "^0.7.0" - npm-package-arg "^8.1.0" - p-map "^4.0.0" - pacote "^13.6.1" - semver "^7.3.4" - -"@lerna/bootstrap@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-5.2.0.tgz#2e2fd307274e0d0fcd5ab2f3830a6e743fbd8346" - integrity sha512-4GMpgqT2F3E+LlD6iIAoJSFtvbXR7A8iX27mCv7fEFR8aPyxGxa6lC+sKIHLoH7s6X7/5aEI2sZCZ3p1v6QNUg== - dependencies: - "@lerna/command" "5.2.0" - "@lerna/filter-options" "5.2.0" - "@lerna/has-npm-version" "5.2.0" - "@lerna/npm-install" "5.2.0" - "@lerna/package-graph" "5.2.0" - "@lerna/pulse-till-done" "5.2.0" - "@lerna/rimraf-dir" "5.2.0" - "@lerna/run-lifecycle" "5.2.0" - "@lerna/run-topologically" "5.2.0" - "@lerna/symlink-binary" "5.2.0" - "@lerna/symlink-dependencies" "5.2.0" - "@lerna/validation-error" "5.2.0" - "@npmcli/arborist" "5.2.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^6.0.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - -"@lerna/changed@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-5.2.0.tgz#6a9eec17f63311f0c166fc839f1491242ce7076c" - integrity sha512-xbvMuUsmELZmmENsSX5KpG6OAeO1kZkPiXw5P8mdZVqzSz3/tO0v5SKV1TBYlWYM+/IumO/F+HTVL+GwnjMsww== - dependencies: - "@lerna/collect-updates" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/listable" "5.2.0" - "@lerna/output" "5.2.0" - -"@lerna/check-working-tree@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-5.2.0.tgz#c664fb62e78a96e95f4d234f03cd1687b14b79b6" - integrity sha512-MM+I+7+PyQGz5rzt4jnC7m2J3WhEjfetE895Ut/YwobOhng4kThzxmscJuCGY+2jZigwFMSugc0/JjTNZ0Hg5A== - dependencies: - "@lerna/collect-uncommitted" "5.2.0" - "@lerna/describe-ref" "5.2.0" - "@lerna/validation-error" "5.2.0" - -"@lerna/child-process@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-5.2.0.tgz#5c43fe5eb8a81667a5dfaeb6e1a310a0825bbd06" - integrity sha512-UY1W3+MdYZmCzvyi0C2SvDKwbXrm6HlZKzyWoxDhqR/GqPa0CBeOBa+lSslM1+yltI+4IHQpqLQAdZIYGjeCUw== +"@lerna/child-process@6.6.1": + version "6.6.1" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.6.1.tgz#e31bc411ad6d474cf7b676904da6f77f58fd64eb" + integrity sha512-yUCDCcRNNbI9UUsUB6FYEmDHpo5Tn/f0q5D7vhDP4i6Or8kBj82y7+e31hwfLvK2ykOYlDVs2MxAluH/+QUBOQ== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-5.2.0.tgz#e1534b8e84402441f1abcfb4a0b33400b39ece92" - integrity sha512-9/gJBBPvISICRfv2Y5KjGcUgZykpXZqAk6txHrl7eTZ0XHAnu9SxxLq3xCEq5IPNkevu++bOSYJ7BFTYzPxAgw== - dependencies: - "@lerna/command" "5.2.0" - "@lerna/filter-options" "5.2.0" - "@lerna/prompt" "5.2.0" - "@lerna/pulse-till-done" "5.2.0" - "@lerna/rimraf-dir" "5.2.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - -"@lerna/cli@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-5.2.0.tgz#821ce8e657cfc5966c006503e5e75c8f7e37434f" - integrity sha512-bn6L317xjTeJ+60bj+wNvmwnDEOKH0T45yO14u1TNNs7cVUv9ZtHYohuKSbanUogthEDu2m680RwgdvikyyCLQ== - dependencies: - "@lerna/global-options" "5.2.0" - dedent "^0.7.0" - npmlog "^6.0.2" - yargs "^16.2.0" - -"@lerna/collect-uncommitted@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-5.2.0.tgz#d6aa4eb41eed13a941e3fa4771828048559d25ad" - integrity sha512-LlTY08RhTnrynvuqK1wNbq+H8FFWAMNiTOUJcxMo+bMlLrjPy3xCLhcDcKApVZvZnkE+kWLyQRROs0ZEY78MaQ== - dependencies: - "@lerna/child-process" "5.2.0" - chalk "^4.1.0" - npmlog "^6.0.2" - -"@lerna/collect-updates@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-5.2.0.tgz#1bbbb1a23e70d8c856ced4faba6356385778013b" - integrity sha512-thENc95GHPEt3N18u0WOtkVDRjTWM2rLld8SiFDtecqlV7F2pN0pILY5mNDTS2kYZDwxACQ+XLCinBmb8VET5Q== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/describe-ref" "5.2.0" - minimatch "^3.0.4" - npmlog "^6.0.2" - slash "^3.0.0" - -"@lerna/command@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-5.2.0.tgz#4034b2f2bde407ef85b4a807b56f2d61cc0cbb32" - integrity sha512-QJLpOp6z/6NlSuqhl9IiSBq4SVcgcC4nJh5dZme+6hRCkcaAG0WEhe809xcx6pehYJdbbMHtmSWp7dk/GujWxw== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/package-graph" "5.2.0" - "@lerna/project" "5.2.0" - "@lerna/validation-error" "5.2.0" - "@lerna/write-log-file" "5.2.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^6.0.2" - -"@lerna/conventional-commits@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-5.2.0.tgz#af14e0a9cf1ac24cda5ba967e7609a2eabb239f8" - integrity sha512-sI3QVV0kHqbFhHJy8dTNhrJdIWSGv1t7dfYyHiyGdlttSFWd6b+jGYZtAfIie2iC26+Z1ZksGW/0mdyAD55Zig== - dependencies: - "@lerna/validation-error" "5.2.0" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.4" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - npm-package-arg "^8.1.0" - npmlog "^6.0.2" - pify "^5.0.0" - semver "^7.3.4" - -"@lerna/create-symlink@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-5.2.0.tgz#8c451a1c510d948b10a09b8af087c6736848cda6" - integrity sha512-0+WwJWZUAp6nIbOL0fxTCVyt37VmpkqCJs8aK3//DgjS8u5hSlPQjj3oWjVFMFtfSdoA7HieohBS86FZ4Tkg0w== - dependencies: - cmd-shim "^4.1.0" - fs-extra "^9.1.0" - npmlog "^6.0.2" - -"@lerna/create@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-5.2.0.tgz#955e8cfcfadb31f3c6bc19e7229c01d4ad50f36e" - integrity sha512-6KuamMSIgLWm0TuLre8hTUSvr8LGw8ex/XoXNhSUJUGbUAIpkS+F8YKLSTLKBw/odFXRW7rgxv/ik6T0qqjLqw== +"@lerna/create@6.6.1": + version "6.6.1" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.6.1.tgz#fc20f09e10b612d424a576775ad6eefe6aa96517" + integrity sha512-GDmHFhQ0mr0RcXWXrsLyfMV6ch/dZV/Ped1e6sFVQhsLL9P+FFXX1ZWxa/dQQ90VWF2qWcmK0+S/L3kUz2xvTA== dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/npm-conf" "5.2.0" - "@lerna/validation-error" "5.2.0" + "@lerna/child-process" "6.6.1" dedent "^0.7.0" fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" + init-package-json "^3.0.2" + npm-package-arg "8.1.1" p-reduce "^2.1.0" pacote "^13.6.1" pify "^5.0.0" semver "^7.3.4" slash "^3.0.0" validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" + validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-5.2.0.tgz#a6c6c033bff77269dc3d5eb8cb350c310d1cdb04" - integrity sha512-ZSdVWzPpgz8tcJ2rLpKAi1q2WLv4lP+Qdjr0QpblcM0y4+QM9GU5bVayDXRNl+fVeaFpftr4Vou8/hVzzb2fTQ== +"@lerna/legacy-package-management@6.6.1": + version "6.6.1" + resolved "https://registry.yarnpkg.com/@lerna/legacy-package-management/-/legacy-package-management-6.6.1.tgz#1f44af40098b9396a4f698514ff2b87016b1ee3d" + integrity sha512-0EYxSFr34VgeudA5rvjGJSY7s4seITMVB7AJ9LRFv9QDUk6jpvapV13ZAaKnhDTxX5vNCfnJuWHXXWq0KyPF/Q== dependencies: - "@lerna/child-process" "5.2.0" - npmlog "^6.0.2" + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + execa "5.0.0" + file-url "3.0.0" + find-up "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + inquirer "8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + libnpmpublish "6.0.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "14.0.3" + npmlog "6.0.2" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-waterfall "2.1.1" + pacote "13.6.2" + pify "5.0.0" + pretty-format "29.4.3" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + semver "7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + tempy "1.0.0" + upath "2.0.1" + uuid "8.3.2" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" -"@lerna/diff@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-5.2.0.tgz#3ce5ac66ead67b88463a693ffc09f7ad649e8a71" - integrity sha512-RIp/PeigKoC0xoCYGk6G9hSFiw8bMGcTL9+ii1628DALh8j/ddt3Fi7kCPO9b03ALkPUVQlLIDe/Wzry4ME1BA== +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/validation-error" "5.2.0" - npmlog "^6.0.2" - -"@lerna/exec@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-5.2.0.tgz#f554551c8b1046be9ded9ce967eac80aabe6acff" - integrity sha512-MyTe+YRIbibkjZ6VYGI0c5In1+lDrPE5fgR1G4cOI8RN7nx6fBi6I3w7rSISRuMf3npVDKLU1/LRW7qjxISdJw== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/filter-options" "5.2.0" - "@lerna/profiler" "5.2.0" - "@lerna/run-topologically" "5.2.0" - "@lerna/validation-error" "5.2.0" - p-map "^4.0.0" + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" -"@lerna/filter-options@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-5.2.0.tgz#9cc44c7ad180128e3326c4c690645264888e9abf" - integrity sha512-gbX/ksk/kKmhEPPXWTvRAYLBFmDcpWQOfJiE+JybRgTaIAKrAVo8mHzw1j2ZsWJcxvbOOPvSGAy+54MILBr3Xw== +"@metamask/eth-sig-util@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" + integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== dependencies: - "@lerna/collect-updates" "5.2.0" - "@lerna/filter-packages" "5.2.0" - dedent "^0.7.0" - npmlog "^6.0.2" + "@ethereumjs/util" "^8.0.0" + bn.js "^4.11.8" + ethereum-cryptography "^1.1.2" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" -"@lerna/filter-packages@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-5.2.0.tgz#93135ba5b38c949627e2d25dbbe90a26fdbd9690" - integrity sha512-G1RolCWUIc45vfu/o6v3SBYb3FflfYyUfUtHMteE3frJsgDIIOuERmlDp0hl6k7DBxdBvi6AK5bvEMt+FE3h0A== +"@morgan-stanley/ts-mocking-bird@^0.6.2": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz#2e4b60d42957bab3b50b67dbf14c3da2f62a39f7" + integrity sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA== dependencies: - "@lerna/validation-error" "5.2.0" - multimatch "^5.0.0" - npmlog "^6.0.2" + lodash "^4.17.16" + uuid "^7.0.3" -"@lerna/get-npm-exec-opts@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-5.2.0.tgz#ad80e9f2b7eae672d74fc3639cdd4a5baeca9d09" - integrity sha512-ZGWBcrynGNbPOhJkwJfGQS+UqmwT/9K6cD6rnK3ddDlj2UBcjcTgPTCLRseFO3j/4m36N4CQh9jy9tsXO8VeDg== - dependencies: - npmlog "^6.0.2" - -"@lerna/get-packed@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-5.2.0.tgz#f96c5ca61a6e08981517dfe51b5a059260cb384f" - integrity sha512-wuFex+v6Nk8BqsZCml56+8Uextpu4fhk3bjz/3DBrNHaGHrg/VKGhZ6kqCCTWpUyclm3RzZfg63/5bXW/SDmiw== - dependencies: - fs-extra "^9.1.0" - ssri "^8.0.1" - tar "^6.1.0" - -"@lerna/github-client@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-5.2.0.tgz#5f7aab6c5e430c5f6a38f91e426ca324404b65ac" - integrity sha512-tFl0DWv53MhJ4x2978MtdGzcwL94mAVOQueAU0/MU0O+nWgC0l+va7WSE4d04OuIj2veadZoqYiT0LYdVx3cLQ== - dependencies: - "@lerna/child-process" "5.2.0" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^19.0.3" - git-url-parse "^12.0.0" - npmlog "^6.0.2" - -"@lerna/gitlab-client@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-5.2.0.tgz#49b5573e0ab8e5e58a6505c29c3489a0f7388a80" - integrity sha512-Mz+tOHwzuZCVV4ThV2ZsYFd2Pz9JM1gsND/e1FYG2RuOVSPksuOaBXj+sD6AJZ98jYeOGxJ9lUTHesTDomqaww== - dependencies: - node-fetch "^2.6.1" - npmlog "^6.0.2" - whatwg-url "^8.4.0" - -"@lerna/global-options@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-5.2.0.tgz#a68e2309559a500bbbd089ef275b987116a4ee1f" - integrity sha512-AXbuQN50K4PZKTtgTLTH1Wia7kkIVg3k6JPCdPehgQbULFUs5vwGIDRlgaW2iOXRtRLnvFj73BCFTAnI8rNDtw== - -"@lerna/has-npm-version@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-5.2.0.tgz#80feb9b334e9dc2ec953ec9571fd9bc04617946a" - integrity sha512-RRnJUVJpR4VAuDhH+yLJP3O85p2Uhxp/kurNzbIkGP56Vi/tvoSlbCbNWL7hLznnCjkdvNS1cf+LuZyGD4FNZw== - dependencies: - "@lerna/child-process" "5.2.0" - semver "^7.3.4" - -"@lerna/import@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-5.2.0.tgz#9b5bc76b9e4f9a49f77073f0267fd56804637caf" - integrity sha512-33BrWs6HNulx+wVR6FFF/DNLCHvL5u/8Tr8GPISUOMIXFdvLiMCyMIeM5g2BU/e044W6TzrCKcRxsTjXqhimVA== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/prompt" "5.2.0" - "@lerna/pulse-till-done" "5.2.0" - "@lerna/validation-error" "5.2.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" - -"@lerna/info@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-5.2.0.tgz#d95e0daedaee209cac2463d2a6a6df76112c437d" - integrity sha512-GraI2Z+bmNEt3vatvYdE/oajk1/yNM1ULR1loaF0IemZ6S5GYHAJXgT2qNl/Jt0qh+oRM2a5ITtLTjCrtzAkVg== - dependencies: - "@lerna/command" "5.2.0" - "@lerna/output" "5.2.0" - envinfo "^7.7.4" - -"@lerna/init@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-5.2.0.tgz#208e49eda705f50ecefa5caf0faebe7c587ee837" - integrity sha512-a8VupVxsjxknDIUHM5nT6i9CJkr2MjKuR/QnQcI6eVtKP26mppd/GwZQ2XtnkULRtHWfajbksVODuOwwssroqQ== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/project" "5.2.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" - -"@lerna/link@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-5.2.0.tgz#01599f185a0ea570509e24cbbba12ddda21bc72e" - integrity sha512-DnfiIyl6f2hrv0qyRH8ZzcDCrcxsWBoaAxlOTgCUggiIq1eLMBBqQu6cQt3k0zSb40jFwIsggdYsffvV/GkLXQ== - dependencies: - "@lerna/command" "5.2.0" - "@lerna/package-graph" "5.2.0" - "@lerna/symlink-dependencies" "5.2.0" - p-map "^4.0.0" - slash "^3.0.0" - -"@lerna/list@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-5.2.0.tgz#f41e5f512653258232a9c7ef581457fd4e2b0716" - integrity sha512-HlRLjYFYs7Sy78jp+J2z/yGhRhHHf4AjwHN6ZkAvroHSdZLHfOVUcdGAxSwuFmJ9ULb32ydtyCWwtMS4z6JICg== - dependencies: - "@lerna/command" "5.2.0" - "@lerna/filter-options" "5.2.0" - "@lerna/listable" "5.2.0" - "@lerna/output" "5.2.0" - -"@lerna/listable@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-5.2.0.tgz#c02e032fc102561ee939deafdecc045a2925c005" - integrity sha512-CEUR4i3Ws9H7iS1IlLrW5MIPWxp2Tx4gnzn43CN9diWVkCo1wdC/mwGirqaHMK6jpSIhfUHkJqCUqSOszg7+fg== - dependencies: - "@lerna/query-graph" "5.2.0" - chalk "^4.1.0" - columnify "^1.6.0" - -"@lerna/log-packed@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-5.2.0.tgz#065fcba4903e5dd56f413e22e9492b864a874458" - integrity sha512-6BOgHPWBNyZvNv4DjKZc5yqBgvkYwjIZqYXvGRgFLWqGtNK71HyDW6ybw/msKzWu6nRygx/2oz/q79NJT1xb8A== - dependencies: - byte-size "^7.0.0" - columnify "^1.6.0" - has-unicode "^2.0.1" - npmlog "^6.0.2" - -"@lerna/npm-conf@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-5.2.0.tgz#8fb3a3f1042cbfb8041359a99e3e220a31c208dc" - integrity sha512-fJ73bVQgt4gFzvpxBeZhigfR+f02vlI+wJA9otLXkkigz/R4OGBurKNBvwtvt5P99cNH5xaxQlneKmYlXd858Q== - dependencies: - config-chain "^1.1.12" - pify "^5.0.0" - -"@lerna/npm-dist-tag@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-5.2.0.tgz#072d0e7d0bc85b6cb13f4c5c80bae298f21aae9a" - integrity sha512-blBVl8rbFQFtI41Y1UKcz9qFRfAJUHt680Jp8XECWEKvZijY+Sm16yNk9L3k0IwH8pQkDN0ZIxHaIHSJ+qYPvQ== - dependencies: - "@lerna/otplease" "5.2.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^6.0.2" - -"@lerna/npm-install@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-5.2.0.tgz#b5803a6807a18be23e6b0638fc389e98ca9e8963" - integrity sha512-1pNgN0Px2acEPoF3Hme7d6U0JuhMKHN3L9UjdRu28H1anR3Li+ZJQtAtV4pL7DY26csGOOhd6+rjCxzlb1ihqQ== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/get-npm-exec-opts" "5.2.0" - fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^6.0.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" - -"@lerna/npm-publish@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-5.2.0.tgz#febb446a0bf680d802f464dcdb6abc037aa7eec8" - integrity sha512-vNPwa4aU8IBm+c6sXGmV2ampkYFXKPxCXpURZWKiXYZ0pigEg0CX3YnOJMQ1ax8U97CISVoIdLY+RKi3nSJm3w== - dependencies: - "@lerna/otplease" "5.2.0" - "@lerna/run-lifecycle" "5.2.0" - fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^6.0.2" - pify "^5.0.0" - read-package-json "^3.0.0" - -"@lerna/npm-run-script@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-5.2.0.tgz#27bb196660135cf81c32ca84fbfaf9197b05a27d" - integrity sha512-Fxl9BByoKxm7QyIaIxhjGzGQXsTwUwk+1gFtO6OlQBH5/Y971nHG604Pmv25nZKBD3lE+3Qk2IK/XtE39ruHRg== - dependencies: - "@lerna/child-process" "5.2.0" - "@lerna/get-npm-exec-opts" "5.2.0" - npmlog "^6.0.2" - -"@lerna/otplease@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-5.2.0.tgz#34def8f7c7a6fab79f2032247cd2c028f326ba84" - integrity sha512-vsFB1N+s9KGwF4wreRFYJlhDrQnSYyxgCt8atC0iUs+32Bx9zdtmOIgBnGwuqPVSOhEj+wxbuVRtopAWRWCBFw== - dependencies: - "@lerna/prompt" "5.2.0" - -"@lerna/output@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-5.2.0.tgz#b9ed21ea2bc09b38a530660469479b3f0c10878c" - integrity sha512-afls4I7ei09lab5WEb34/AKumpBxt8MgQnr8b9pKC6fy5GMXCSOZ9Qb/xRKhepJ4qvQRsfKWptX4UT2VB8PGeg== - dependencies: - npmlog "^6.0.2" - -"@lerna/pack-directory@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-5.2.0.tgz#af1b4f94c3683d5b7e78aab179a0293c76032556" - integrity sha512-wirOo/6hs3yWMPTw/ZU7ApQKiCyXGrxDu8PWGnVggKcD8PnwrtQoJMSEIeFbHJEw7ny7RE46oy6Q8DPCEYJNxg== - dependencies: - "@lerna/get-packed" "5.2.0" - "@lerna/package" "5.2.0" - "@lerna/run-lifecycle" "5.2.0" - "@lerna/temp-write" "5.2.0" - npm-packlist "^5.1.1" - npmlog "^6.0.2" - tar "^6.1.0" - -"@lerna/package-graph@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-5.2.0.tgz#09426a09f0de4a63c8f37006e8de032c957ab022" - integrity sha512-KAjbO83EmBzxEKVX6eyelp/xA9eztIF6BqJuPv7m9iexHh/qCIuKhnQSmgh3xDlCZ7e5FUXC3Rzvq17TLJWPfw== - dependencies: - "@lerna/prerelease-id-from-version" "5.2.0" - "@lerna/validation-error" "5.2.0" - npm-package-arg "^8.1.0" - npmlog "^6.0.2" - semver "^7.3.4" - -"@lerna/package@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-5.2.0.tgz#733ca4e03ca2c597364869243730a01bde88a7d1" - integrity sha512-zHDHnDNVeEmYIReSjecCpwQmF9yrK8oZLRUnVe2jI91y2D9iipHBQj5LVvJKwflpQy60vZFiavvlqi/gqPzpVA== - dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" - -"@lerna/prerelease-id-from-version@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-5.2.0.tgz#a5cd2c4bb53e6e80f6ffe8ecff734bfdfeaacb36" - integrity sha512-PpvTllFUcAPbZUGYjXGalGwaRfFZZCzNKMKF+lck2qmkvLYSRQhPz+iN7NpvZgnXEWds0dV78MkbLcTf4rEThw== - dependencies: - semver "^7.3.4" - -"@lerna/profiler@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-5.2.0.tgz#4c1971a066a34595a4caaf4977e2e376f2b41baa" - integrity sha512-vKhbmeZCCSU6QRPJdJlcyUuAGD1b/Vz7SYDM/D2o0M5nyOnc5V9fom1pTR9KuJUg0dWt/g+8COOiHNYg3rCDsA== - dependencies: - fs-extra "^9.1.0" - npmlog "^6.0.2" - upath "^2.0.1" - -"@lerna/project@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-5.2.0.tgz#b50a4673d1bacaee07eaf210a7b410abcd13ac50" - integrity sha512-qE4I0tXl8IoqqR1bgDyr5YTYy2qcO2o8QrQ8PfJnm3Mp2ffRWG5E5MMiA2QXG09yk9YUq0q9cwGCr55wJcZRrw== - dependencies: - "@lerna/package" "5.2.0" - "@lerna/validation-error" "5.2.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^6.0.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" - -"@lerna/prompt@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-5.2.0.tgz#f516da9bb011715d392df590236b9c0e99e3538e" - integrity sha512-XPB7F3JpUnNsCrgvo90gSfYrnUBK2F4GFQ189K9WtwvuFQ774WfsqLbBlOVh9HRDCNGHx1xq6wXYkQN6s/Kblw== - dependencies: - inquirer "^8.2.4" - npmlog "^6.0.2" - -"@lerna/publish@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-5.2.0.tgz#79374cb6a5a57b35af619dec4aded93f1f867819" - integrity sha512-pfxRn/6zAk/QHDxCgKXWkUOk+SxSQipqyEuJLzFwW/KBJHl3MdvS8yuODx0WqZuydwvBIz29YUarK7xYW9JamQ== - dependencies: - "@lerna/check-working-tree" "5.2.0" - "@lerna/child-process" "5.2.0" - "@lerna/collect-updates" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/describe-ref" "5.2.0" - "@lerna/log-packed" "5.2.0" - "@lerna/npm-conf" "5.2.0" - "@lerna/npm-dist-tag" "5.2.0" - "@lerna/npm-publish" "5.2.0" - "@lerna/otplease" "5.2.0" - "@lerna/output" "5.2.0" - "@lerna/pack-directory" "5.2.0" - "@lerna/prerelease-id-from-version" "5.2.0" - "@lerna/prompt" "5.2.0" - "@lerna/pulse-till-done" "5.2.0" - "@lerna/run-lifecycle" "5.2.0" - "@lerna/run-topologically" "5.2.0" - "@lerna/validation-error" "5.2.0" - "@lerna/version" "5.2.0" - fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^6.0.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^13.6.1" - semver "^7.3.4" - -"@lerna/pulse-till-done@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-5.2.0.tgz#6d6243a0a6a5a427d241d6490d8751855a76fb44" - integrity sha512-WfM5GGw19ymnzsC5SqLKvW/mXdpIuF3KZttqGfMRV4xjAuxaNA0o9yFBjAWeQ47S8AFGT+PPmDlBvpe/Q4geyw== - dependencies: - npmlog "^6.0.2" - -"@lerna/query-graph@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-5.2.0.tgz#bed8ca8d6a689e6531ff7222d1d9c0286f9d9732" - integrity sha512-tfW1RubB/vjRp3Q6Kchh4pdSsmjiz4cMTtyHqVwcm4bWAV5+kSRsa0rZp6jzMZlwFlMtchBjOeC2UPzo+G6vLA== - dependencies: - "@lerna/package-graph" "5.2.0" - -"@lerna/resolve-symlink@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-5.2.0.tgz#7c2cc96b361131f593ef936e1874cc1703144e84" - integrity sha512-sW7yQXvgi2HstJP00Ptyclh1cfDyyd1tbRGO+M8t53GEh+SG+y/k/1m6TdclQDpR51JCq65WZOBspUe0qtBAgA== - dependencies: - fs-extra "^9.1.0" - npmlog "^6.0.2" - read-cmd-shim "^2.0.0" - -"@lerna/rimraf-dir@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-5.2.0.tgz#18274710870b1f7fa07461a09f4daecd946ce1a3" - integrity sha512-fC8HnVAabmKT30x/kRQ7Zb5lHyVAX8KLcs/CYLE/BXnlfQ6T6WhMZAUTJXQ9LJiww4bY7qYoLX5agBmJXe2TgA== - dependencies: - "@lerna/child-process" "5.2.0" - npmlog "^6.0.2" - path-exists "^4.0.0" - rimraf "^3.0.2" - -"@lerna/run-lifecycle@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-5.2.0.tgz#8f1606555290be3f429a2a6acb545327c186666b" - integrity sha512-8wC/oNQo4/x8vujkodY7llz+7ZhBpYVR5tGqi42r5nA29GnzbLpmEd1GMpzlAvdsu5JdT2SSP2FN3t2vvjeUuQ== - dependencies: - "@lerna/npm-conf" "5.2.0" - "@npmcli/run-script" "^3.0.2" - npmlog "^6.0.2" - -"@lerna/run-topologically@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-5.2.0.tgz#8d0cc2382d50a8f6e4538655aab3d9dd8980509e" - integrity sha512-7WpsuWVzZgHm08H0grWFXVYSQtFA8ZYel/9uRnjppNJv7jfEnfMYpny1Mry6aTwR5Sz2sxoMddkQx4nHBrbE2Q== - dependencies: - "@lerna/query-graph" "5.2.0" - p-queue "^6.6.2" - -"@lerna/run@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-5.2.0.tgz#ab0d8fd5a365e5f0338622f48aeb11143687ce3c" - integrity sha512-KIkDlM6U4BGtyC2jRV/ndFP7J0auUWZyjk8GCaM2FkeU6ZRKGtlFCKPO8t4UJqTsvkg5mLAU9adyOfgag3fOWg== - dependencies: - "@lerna/command" "5.2.0" - "@lerna/filter-options" "5.2.0" - "@lerna/npm-run-script" "5.2.0" - "@lerna/output" "5.2.0" - "@lerna/profiler" "5.2.0" - "@lerna/run-topologically" "5.2.0" - "@lerna/timer" "5.2.0" - "@lerna/validation-error" "5.2.0" - p-map "^4.0.0" - -"@lerna/symlink-binary@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-5.2.0.tgz#b77a37755a96b005087755db188a7d5ad9bbc340" - integrity sha512-sWTN215WarE+wuBuWhgLOnTtEem7RjiVUwSH7tOvLCX0TyCny/3NjXJkjdNzPxyYO809C3sDTtH7d3DnmYYAGQ== - dependencies: - "@lerna/create-symlink" "5.2.0" - "@lerna/package" "5.2.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - -"@lerna/symlink-dependencies@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-5.2.0.tgz#da52ff859a212b340f0dfb4a30b5eadbcfdc3ca9" - integrity sha512-2MbkZnyn2M7Ng4ebrkMFO4yPwX814+IhLA74ZDSLnPle+2AafSk4xnOq+qTLSUfHoIxFDdCyWAvvEFSdDKSuRA== - dependencies: - "@lerna/create-symlink" "5.2.0" - "@lerna/resolve-symlink" "5.2.0" - "@lerna/symlink-binary" "5.2.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - -"@lerna/temp-write@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-5.2.0.tgz#ecaa29b343e22d4d289be4895ab2a2ef838b3399" - integrity sha512-kvkFMVZbguhRr26svSdTcE29Iwyvv2l5g3VXYg0weD1J+k+UKGxTmeCCIxXIDAUM6+GN3FAH08Bj6Tyu3O1TsA== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^8.3.2" - -"@lerna/timer@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-5.2.0.tgz#c711116d090bb1bda0ab89f754f57e183a5360b7" - integrity sha512-LZM5lzoAhMx86eISENdsXHhjIu/hwiQp9jgPbPU+FEZOFFeNCSNtpD0zOViXFJnIeASs/e6dgYc2iRefOp4+dw== - -"@lerna/validation-error@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-5.2.0.tgz#0156d76b2ec6bf742359e349430cc638ae8cc09f" - integrity sha512-9Mlciy2rraha7e/PuZlSfbAEAOgHtepxLFPbdxfkb/K793EUGoQGWt6X4SdbMsISP+dgx08HwigT2asOTz1eYw== - dependencies: - npmlog "^6.0.2" - -"@lerna/version@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-5.2.0.tgz#1af161853548d97e3e56b4e73690fd748436da1c" - integrity sha512-2ilAzMidA4o74jHrU9KN3sGTe7wiZmme82fKSAT4RoYfkfTk6KO98Z6ZTXPTYfHkrb7/e02NuYNy0OQAt66UBA== - dependencies: - "@lerna/check-working-tree" "5.2.0" - "@lerna/child-process" "5.2.0" - "@lerna/collect-updates" "5.2.0" - "@lerna/command" "5.2.0" - "@lerna/conventional-commits" "5.2.0" - "@lerna/github-client" "5.2.0" - "@lerna/gitlab-client" "5.2.0" - "@lerna/output" "5.2.0" - "@lerna/prerelease-id-from-version" "5.2.0" - "@lerna/prompt" "5.2.0" - "@lerna/run-lifecycle" "5.2.0" - "@lerna/run-topologically" "5.2.0" - "@lerna/temp-write" "5.2.0" - "@lerna/validation-error" "5.2.0" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^6.0.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - write-json-file "^4.3.0" - -"@lerna/write-log-file@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.2.0.tgz#412ec9801792a333ea79117a97d5a9ce1fc939ea" - integrity sha512-qFUjCAXfkCTyH94zVWc86ipqlpJN0Pjr0l4qZDfOdelQoYFXz6WsP+ogAN1ka8m744vhYqSM1o+e9dpnCbES8A== - dependencies: - npmlog "^6.0.2" - write-file-atomic "^3.0.3" - -"@metamask/eth-sig-util@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" - integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^6.2.1" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - -"@metamask/eth-sig-util@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-5.0.2.tgz#c518279a6e17a88135a13d53a0b970f145ff8bce" - integrity sha512-RU6fG/H6/UlBol221uBkq5C7w3TwLK611nEZliO2u+kO0vHKGBXnIPlhI0tzKUigjhUeOd9mhCNbNvhh0LKt9Q== - dependencies: - "@ethereumjs/util" "^8.0.0" - bn.js "^4.11.8" - ethereum-cryptography "^1.1.2" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - -"@morgan-stanley/ts-mocking-bird@^0.6.2": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz#2e4b60d42957bab3b50b67dbf14c3da2f62a39f7" - integrity sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA== - dependencies: - lodash "^4.17.16" - uuid "^7.0.3" - -"@noble/hashes@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" - integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== - -"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" - integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== - -"@noble/hashes@~1.1.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.3.tgz#360afc77610e0a61f3417e497dcf36862e4f8111" - integrity sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A== - -"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" - integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" @@ -1580,29 +762,31 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomicfoundation/ethereumjs-block@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz#fdd5c045e7baa5169abeed0e1202bf94e4481c49" - integrity sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA== - 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-block@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.0.tgz#f27a3df0a796e2af7df4bd226d14748c303d105b" + integrity sha512-DfhVbqM5DjriguuSv6r3TgOpyXC76oX8D/VEODsSwJQ1bZGqu4xLLfYPPTacpCAYOnewzJsZli+Ao9TBTAo2uw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-trie" "6.0.0" + "@nomicfoundation/ethereumjs-tx" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" ethereum-cryptography "0.1.3" + ethers "^5.7.1" -"@nomicfoundation/ethereumjs-blockchain@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz#1a8c243a46d4d3691631f139bfb3a4a157187b0c" - integrity sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw== - 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" +"@nomicfoundation/ethereumjs-blockchain@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.0.tgz#7f5aa889f96d43361aa21ec04f8dc1734e2fc818" + integrity sha512-cVRCrXZminZr0Mbx2hm0/109GZLn1v5bf0/k+SIbGn50yZm6YCdQt9CgGT0Gk56N2vy8NhXD4apo167m4LWk6Q== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.0" + "@nomicfoundation/ethereumjs-common" "4.0.0" + "@nomicfoundation/ethereumjs-ethash" "3.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-trie" "6.0.0" + "@nomicfoundation/ethereumjs-tx" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" abstract-level "^1.0.3" debug "^4.3.3" ethereum-cryptography "0.1.3" @@ -1610,275 +794,265 @@ lru-cache "^5.1.1" memory-level "^1.0.0" -"@nomicfoundation/ethereumjs-common@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz#f6bcc7753994555e49ab3aa517fc8bcf89c280b9" - integrity sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA== +"@nomicfoundation/ethereumjs-common@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.0.tgz#23c97adbbb2b660da03467308821c83e314694e9" + integrity sha512-UPpm5FAGAf2B6hQ8aVgO44Rdo0k73oMMCViqNJcKMlk1s9l3rxwuPTp1l20NiGvNO2Pzqk3chFL+BzmLL2g4wQ== dependencies: - "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" crc-32 "^1.2.0" -"@nomicfoundation/ethereumjs-ethash@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz#11539c32fe0990e1122ff987d1b84cfa34774e81" - integrity sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew== +"@nomicfoundation/ethereumjs-ethash@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.0.tgz#b03586948c5bd106c230dbb1c4dc2be5740d774c" + integrity sha512-6zNv5Y3vNIsxjrsbKjMInVpo8cmR0c7yjZbBpy7NYuIMtm0JKhQoXsiFN56t/1sfn9V3v0wgrkAixo5v6bahpA== dependencies: - "@nomicfoundation/ethereumjs-block" "^4.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" abstract-level "^1.0.3" bigint-crypto-utils "^3.0.23" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-evm@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz#99cd173c03b59107c156a69c5e215409098a370b" - integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== +"@nomicfoundation/ethereumjs-evm@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.0.tgz#9023e42d0c5807720c42cf01218123c7d3a5c403" + integrity sha512-D+tr3M9sictopr3E20OVgme7YF/d0fU566WKh+ofXwmxapz/Dd8RSLSaVeKgfCI2BkzVA+XqXY08NNCV8w8fWA== dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" - "@types/async-eventemitter" "^0.2.1" - async-eventemitter "^0.2.4" + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.0" + "@nomicfoundation/ethereumjs-tx" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" debug "^4.3.3" ethereum-cryptography "0.1.3" mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/ethereumjs-rlp@^4.0.0", "@nomicfoundation/ethereumjs-rlp@^4.0.0-beta.2": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz#d9a9c5f0f10310c8849b6525101de455a53e771d" - integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== +"@nomicfoundation/ethereumjs-rlp@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.0.tgz#eececfc6b0758e0f8cf704c8128063e16d1c41cf" + integrity sha512-U1A0y330PtGb8Wft4yPVv0myWYJTesi89ItGoB0ICdqz7793KmUhpfQb2vJUXBi98wSdnxkIABO/GmsQvGKVDw== -"@nomicfoundation/ethereumjs-statemanager@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz#14a9d4e1c828230368f7ab520c144c34d8721e4b" - integrity sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ== +"@nomicfoundation/ethereumjs-statemanager@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.0.tgz#d935c7dc96fd4b83106e86ac6a1cc7d3a6e7278c" + integrity sha512-tgXtsx8yIDlxWMN+ThqPtGK0ITAuITrDy+GYIgGrnT6ZtelvXWM7SUYR0Mcv578lmGCoIwyHFtSBqOkOBYHLjw== 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.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" debug "^4.3.3" ethereum-cryptography "0.1.3" - functional-red-black-tree "^1.0.1" + ethers "^5.7.1" + js-sdsl "^4.1.4" -"@nomicfoundation/ethereumjs-trie@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz#dcfbe3be53a94bc061c9767a396c16702bc2f5b7" - integrity sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A== +"@nomicfoundation/ethereumjs-trie@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.0.tgz#71880ee6f5bc3dec296662dafa101778915fed01" + integrity sha512-YqPWiNxrZvL+Ef7KHqgru1IlaIGXhu78wd2fxNFOvi/NAQBF845dVfTKKXs1L9x0QBRRQRephgxHCKMuISGppw== dependencies: - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" + "@types/readable-stream" "^2.3.13" ethereum-cryptography "0.1.3" readable-stream "^3.6.0" -"@nomicfoundation/ethereumjs-tx@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz#59dc7452b0862b30342966f7052ab9a1f7802f52" - integrity sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w== - dependencies: - "@nomicfoundation/ethereumjs-common" "^3.0.0" - "@nomicfoundation/ethereumjs-rlp" "^4.0.0" - "@nomicfoundation/ethereumjs-util" "^8.0.0" +"@nomicfoundation/ethereumjs-tx@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.0.tgz#e421063090b9a1fac4796be97aef2329af5a0ea7" + integrity sha512-LTyxI+zBJ+HuEBblUGbxvfKl1hg1uJlz2XhnszNagiBWQSgLb1vQCa1QaXV5Q8cUDYkr/Xe4NXWiUGEvH4e6lA== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-util@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz#deb2b15d2c308a731e82977aefc4e61ca0ece6c5" - integrity sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A== +"@nomicfoundation/ethereumjs-util@9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.0.tgz#980f6793278929f8f27f97d29cacd890459ac2b3" + integrity sha512-9EG98CsEC9BnI7AY27F4QXZ8Vf0re8R9XoxQ0//KWF+B7quu6GQvgTq1RlNUjGh/XNCCJNf8E3LOY9ULR85wFQ== dependencies: - "@nomicfoundation/ethereumjs-rlp" "^4.0.0-beta.2" + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" ethereum-cryptography "0.1.3" -"@nomicfoundation/ethereumjs-vm@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz#2bb50d332bf41790b01a3767ffec3987585d1de6" - integrity sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w== - 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-vm@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.0.tgz#d1a511deccd1d2cf55c7d48de761749b1a86f422" + integrity sha512-eHkEoe/4r4+g+fZyIIlQjBHEjCPFs8CHiIEEMvMfvFrV4hyHnuTg4LH7l92ok7TGZqpWxgMG2JOEUFkNsXrKuQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.0" + "@nomicfoundation/ethereumjs-blockchain" "7.0.0" + "@nomicfoundation/ethereumjs-common" "4.0.0" + "@nomicfoundation/ethereumjs-evm" "2.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-statemanager" "2.0.0" + "@nomicfoundation/ethereumjs-trie" "6.0.0" + "@nomicfoundation/ethereumjs-tx" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" 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" "@nomicfoundation/hardhat-network-helpers@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.7.tgz#9103be2b359899a8b7996f54df12a1b7977367e3" - integrity sha512-X+3mNvn8B7BY5hpIaLO+TrfzWq12bpux+ajGGdmdcfC78NXmYmOZkAtiz1QZx1YIZGMS1LaXzPXyBExxKFpCaw== + version "1.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz#e4fe1be93e8a65508c46d73c41fa26c7e9f84931" + integrity sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q== dependencies: ethereumjs-util "^7.1.4" -"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz#83a7367342bd053a76d04bbcf4f373fef07cf760" - integrity sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw== +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== -"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz#1225f7da647ae1ad25a87125664704ecc0af6ccc" - integrity sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA== +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== -"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz#dbc052dcdfd50ae50fd5ae1788b69b4e0fa40040" - integrity sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg== +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== -"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz#e6b2eea633995b557e74e881d2a43eab4760903d" - integrity sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ== +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== -"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz#af81107f5afa794f19988a368647727806e18dc4" - integrity sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w== +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== -"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz#6877e1da1a06a9f08446070ab6e0a5347109f868" - integrity sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw== +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== -"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz#bb6cd83a0c259eccef4183796b6329a66cf7ebd9" - integrity sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg== +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== -"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz#9d4bca1cc9a1333fde985675083b0b7d165f6076" - integrity sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw== +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== -"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz#0db5bfc6aa952bea4098d8d2c8947b4e5c4337ee" - integrity sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw== +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== -"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz#2e0f39a2924dcd77db6b419828595e984fabcb33" - integrity sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA== +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== "@nomicfoundation/solidity-analyzer@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz#e5ddc43ad5c0aab96e5054520d8e16212e125f50" - integrity sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg== + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== optionalDependencies: - "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.0" - "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.0" - "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.0" - "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.0" - "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.0" + "@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" "@nomiclabs/hardhat-ethers@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.1.0.tgz#9b7dc94d669ad9dc286b94f6f2f1513118c7027b" - integrity sha512-vlW90etB3675QWG7tMrHaDoTa7ymMB7irM4DAQ98g8zJoe9YqEggeDnbO6v5b+BLth/ty4vN6Ko/kaqRN1krHw== + version "2.2.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== "@nomiclabs/hardhat-etherscan@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.0.tgz#7137554862b3b1c914f1b1bf110f0529fd2dec53" - integrity sha512-JroYgfN1AlYFkQTQ3nRwFi4o8NtZF7K/qFR2dxDUgHbCtIagkUseca9L4E/D2ScUm4XT40+8PbCdqZi+XmHyQA== + version "3.1.7" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz#72e3d5bd5d0ceb695e097a7f6f5ff6fcbf062b9a" + integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ== dependencies: "@ethersproject/abi" "^5.1.2" "@ethersproject/address" "^5.0.2" - cbor "^5.0.2" + cbor "^8.1.0" 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" + undici "^5.14.0" "@nomiclabs/hardhat-waffle@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1" - integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== - dependencies: - "@types/sinon-chai" "^3.2.3" - "@types/web3" "1.0.19" + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.5.tgz#97c217f1db795395c04404291937edb528f3f218" + integrity sha512-U1RH9OQ1mWYQfb+moX5aTgGjpVVlOcpiFI47wwnaGG4kLhcTy90cNiapoqZenxcRAITVbr0/+QSduINL5EsUIQ== -"@npmcli/arborist@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.2.0.tgz#ee40dfe1f81ae1524819ee39c8f3e7022b0d6269" - integrity sha512-zWV7scFGL0SmpvfQyIWnMFbU/0YgtMNyvJiJwR98kyjUSntJGWFFR0O600d5W+TrDcTg0GyDbY+HdzGEg+GXLg== +"@npmcli/arborist@6.2.3": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.2.3.tgz#31f8aed2588341864d3811151d929c01308f8e71" + integrity sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA== dependencies: "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^2.0.3" - "@npmcli/metavuln-calculator" "^3.0.1" - "@npmcli/move-file" "^2.0.0" - "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^2.0.0" - "@npmcli/package-json" "^2.0.0" - "@npmcli/run-script" "^3.0.0" - bin-links "^3.0.0" - cacache "^16.0.6" + "@npmcli/fs" "^3.1.0" + "@npmcli/installed-package-contents" "^2.0.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^5.0.0" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^3.0.0" + "@npmcli/query" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + bin-links "^4.0.1" + cacache "^17.0.4" common-ancestor-path "^1.0.1" - json-parse-even-better-errors "^2.3.1" + hosted-git-info "^6.1.1" + json-parse-even-better-errors "^3.0.0" json-stringify-nice "^1.1.4" - mkdirp "^1.0.4" - mkdirp-infer-owner "^2.0.0" - nopt "^5.0.0" - npm-install-checks "^5.0.0" - npm-package-arg "^9.0.0" - npm-pick-manifest "^7.0.0" - npm-registry-fetch "^13.0.0" - npmlog "^6.0.2" - pacote "^13.0.5" - parse-conflict-json "^2.0.1" - proc-log "^2.0.0" + minimatch "^6.1.6" + nopt "^7.0.0" + npm-install-checks "^6.0.0" + npm-package-arg "^10.1.0" + npm-pick-manifest "^8.0.1" + npm-registry-fetch "^14.0.3" + npmlog "^7.0.1" + pacote "^15.0.8" + parse-conflict-json "^3.0.0" + proc-log "^3.0.0" promise-all-reject-late "^1.0.0" promise-call-limit "^1.0.1" - read-package-json-fast "^2.0.2" - readdir-scoped-modules "^1.1.0" - rimraf "^3.0.2" + read-package-json-fast "^3.0.2" semver "^7.3.7" - ssri "^9.0.0" - treeverse "^2.0.0" + ssri "^10.0.1" + treeverse "^3.0.0" walk-up-path "^1.0.0" -"@npmcli/ci-detect@^1.0.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" - integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== - -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== dependencies: - "@gar/promisify" "^1.0.1" + "@gar/promisify" "^1.1.3" semver "^7.3.5" -"@npmcli/fs@^2.1.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.1.tgz#c0c480b03450d8b9fc086816a50cb682668a48bf" - integrity sha512-1Q0uzx6c/NVNGszePbr5Gc2riSU1zLpNlo/1YWntH+eaPmMgBssAW0qXofCVkpdj3ce4swZtlDYQu+NKiYcptg== +"@npmcli/fs@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.0.tgz#233d43a25a91d68c3a863ba0da6a3f00924a173e" + integrity sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w== dependencies: - "@gar/promisify" "^1.1.3" semver "^7.3.5" "@npmcli/git@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.1.tgz#049b99b1381a2ddf7dc56ba3e91eaf76ca803a8d" - integrity sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== dependencies: "@npmcli/promise-spawn" "^3.0.0" lru-cache "^7.4.4" @@ -1890,6 +1064,20 @@ semver "^7.3.5" which "^2.0.2" +"@npmcli/git@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.0.4.tgz#cdf74f21b1d440c0756fb28159d935129d9daa33" + integrity sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg== + dependencies: + "@npmcli/promise-spawn" "^6.0.0" + lru-cache "^7.4.4" + npm-pick-manifest "^8.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^3.0.0" + "@npmcli/installed-package-contents@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" @@ -1898,58 +1086,63 @@ npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -"@npmcli/map-workspaces@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.3.tgz#2d3c75119ee53246e9aa75bc469a55281cd5f08f" - integrity sha512-X6suAun5QyupNM8iHkNPh0AHdRC2rb1W+MTdMvvA/2ixgmqZwlq5cGUBgmKHUHT2LgrkKJMAXbfAoTxOigpK8Q== +"@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz#bfd817eccd9e8df200919e73f57f9e3d9e4f9e33" + integrity sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ== dependencies: - "@npmcli/name-from-folder" "^1.0.1" - glob "^8.0.1" - minimatch "^5.0.1" - read-package-json-fast "^2.0.3" + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" -"@npmcli/metavuln-calculator@^3.0.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz#9359bd72b400f8353f6a28a25c8457b562602622" - integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== +"@npmcli/map-workspaces@^3.0.2": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.3.tgz#476944b63cd1f65bf83c6fdc7f4ca7be56906b1f" + integrity sha512-HlCvFuTzw4UNoKyZdqiNrln+qMF71QJkxy2dsusV8QQdoa89e2TF4dATCzBxbl4zzRzdDoWWyP5ADVrNAH9cRQ== dependencies: - cacache "^16.0.0" - json-parse-even-better-errors "^2.3.1" - pacote "^13.0.3" - semver "^7.3.5" + "@npmcli/name-from-folder" "^2.0.0" + glob "^9.3.1" + minimatch "^7.4.2" + read-package-json-fast "^3.0.0" -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== +"@npmcli/metavuln-calculator@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz#426b3e524c2008bcc82dbc2ef390aefedd643d76" + integrity sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q== dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" + cacache "^17.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^15.0.0" + semver "^7.3.5" "@npmcli/move-file@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.0.tgz#417f585016081a0184cef3e38902cd917a9bbd02" - integrity sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== dependencies: mkdirp "^1.0.4" rimraf "^3.0.2" -"@npmcli/name-from-folder@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" - integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== "@npmcli/node-gyp@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== -"@npmcli/package-json@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-2.0.0.tgz#3bbcf4677e21055adbe673d9f08c9f9cde942e4a" - integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-3.0.0.tgz#c9219a197e1be8dbf43c4ef8767a72277c0533b6" + integrity sha512-NnuPuM97xfiCpbTEJYtEuKz6CFbpUHtaT0+5via5pQeI25omvQDFbp1GcGJ/c4zvL/WX0qbde6YiLgfZbWFgvg== dependencies: - json-parse-even-better-errors "^2.3.1" + json-parse-even-better-errors "^3.0.0" "@npmcli/promise-spawn@^3.0.0": version "3.0.0" @@ -1958,20 +1151,35 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^3.0.0", "@npmcli/run-script@^3.0.2": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-3.0.3.tgz#66afa6e0c4c3484056195f295fa6c1d1a45ddf58" - integrity sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q== +"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" + integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== + dependencies: + which "^3.0.0" + +"@npmcli/query@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.0.0.tgz#51a0dfb85811e04f244171f164b6bc83b36113a7" + integrity sha512-MFNDSJNgsLZIEBVZ0Q9w9K7o07j5N4o4yjtdz2uEpuCZlXGMuPENiRaFYk0vRqAA64qVuUQwC05g27fRtfUgnA== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/run-script@4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" + integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== dependencies: "@npmcli/node-gyp" "^2.0.0" "@npmcli/promise-spawn" "^3.0.0" - node-gyp "^8.4.1" + node-gyp "^9.0.0" read-package-json-fast "^2.0.3" + which "^2.0.2" "@npmcli/run-script@^4.1.0": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" - integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== + version "4.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== dependencies: "@npmcli/node-gyp" "^2.0.0" "@npmcli/promise-spawn" "^3.0.0" @@ -1979,74 +1187,151 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@14.4.3": - version "14.4.3" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.4.3.tgz#3d949e0da32e3af9f285ec376ec4f06314339716" - integrity sha512-9WzOOXgdf9YJxqte5e8KNkM3NWOuBgM7hz9jEOyw53Ht1Y2H8xLDPVkqDTS9kROgcyMQxHIjIcw80wZNaZL8Mw== +"@npmcli/run-script@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.0.tgz#f89e322c729e26ae29db6cc8cc76559074aac208" + integrity sha512-ql+AbRur1TeOdl1FY+RAwGW9fcr4ZwiVKabdvm93mujGREVuVLbdkXRJDrkTXSdCjaxYydr1wlA2v67jxWG5BQ== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^3.0.0" + +"@nrwl/cli@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.9.2.tgz#82537d3d85410b0143d37a3b4fade09675356084" + integrity sha512-QoCmyrcGakHAYTJaNBbOerRQAmqJHMYGCdqtQidV+aP9p1Dy33XxDELfhd+IYmGqngutXuEWChNpWNhPloLnoA== dependencies: - nx "14.4.3" + nx "15.9.2" -"@nrwl/tao@14.4.3": - version "14.4.3" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.4.3.tgz#08b86a81cb71574f491e9254104eaea1f7c6c5fd" - integrity sha512-sHlnqTlJ/XEc/lv0MIKYI1R643CWFvYL6QyZD7f38FvP1RblZ6eVqvOJcrkpwcvRWcZNEY+GrQpb1Io1ZvMEmQ== +"@nrwl/devkit@>=15.5.2 < 16": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.9.2.tgz#482b89f1bf88d3600b11f8b7e3e4452c5766eca4" + integrity sha512-2DvTstVZb91m+d4wqUJMBHQ3elxyabdmFE6/3aXmtOGeDxTyXyDzf/1O6JvBBiL8K6XC3ZYchjtxUHgxl/NJ5A== dependencies: - nx "14.4.3" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nrwl/nx-darwin-arm64@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.2.tgz#612d8d714ec876cafd6f1483bf5565704d1b75be" + integrity sha512-Yv+OVsQt3C/hmWOC+YhJZQlsyph5w1BHfbp4jyCvV1ZXBbb8NdvwxgDHPWXxKPTc1EXuB7aEX3qzxM3/OWEUJg== + +"@nrwl/nx-darwin-x64@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.2.tgz#3f77bd90dbabf4782d81f773cfb2739a443e595f" + integrity sha512-qHfdluHlPzV0UHOwj1ZJ+qNEhzfLGiBuy1cOth4BSzDlvMnkuqBWoprfaXoztzYcus2NSILY1/7b3Jw4DAWmMw== + +"@nrwl/nx-linux-arm-gnueabihf@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.2.tgz#3374a5a1692b222ce18f2213a47b4d68fb509e70" + integrity sha512-0GzwbablosnYnnJDCJvAeZv8LlelSrNwUnGhe43saeoZdAew35Ay1E34zBrg/GCGTASuz+knEEYFM+gDD9Mc6A== + +"@nrwl/nx-linux-arm64-gnu@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.2.tgz#e3ec95c6ee3285c77422886cf4cbec1f04804460" + integrity sha512-3mFIY7iUTPG45hSIRaM2DmraCy8W6hNoArAGRrTgYw40BIJHtLrW+Rt7DLyvVXaYCvrKugWOKtxC+jG7kpIZVA== + +"@nrwl/nx-linux-arm64-musl@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.2.tgz#72ce601d256083ded7380c598f1b3eb4dc2a3472" + integrity sha512-FNBnXEtockwxZa4I3NqggrJp0YIbNokJvt/clrICP+ijOacdUDkv8mJedavobkFsRsNq9gzCbRbUScKymrOLrg== + +"@nrwl/nx-linux-x64-gnu@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.2.tgz#2da6bb50cd80d699310e91c7331baa6cfc8ce197" + integrity sha512-gHWsP5lbe4FNQCa1Q/VLxIuik+BqAOcSzyPjdUa4gCDcbxPa8xiE57PgXB5E1XUzOWNnDTlXa/Ll07/TIuKuog== + +"@nrwl/nx-linux-x64-musl@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.2.tgz#39b3bda5868a53b722f1d42700dce71c5ff3f6b9" + integrity sha512-EaFUukCbmoHsYECX2AS4pxXH933yesBFVvBgD38DkoFDxDoJMVt6JqYwm+d5R7S4R2P9U3l++aurljQTRq567Q== + +"@nrwl/nx-win32-arm64-msvc@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.2.tgz#bc350be5cb7d0bfa6c2c5ced40c5af163a457a2c" + integrity sha512-PGAe7QMr51ivx1X3avvs8daNlvv1wGo3OFrobjlu5rSyjC1Y3qHwT9+wdlwzNZ93FIqWOq09s+rE5gfZRfpdAg== + +"@nrwl/nx-win32-x64-msvc@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.2.tgz#3e46c3f7af196bdbf0deb336ec4f9448c54e4a9f" + integrity sha512-Q8onNzhuAZ0l9DNkm8D4Z1AEIzJr8JiT4L2fVBLYrV/R75C2HS3q7lzvfo6oqMY6mXge1cFPcrTtg3YXBQaSWA== + +"@nrwl/tao@15.9.2": + version "15.9.2" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.9.2.tgz#e970efa8b3fb828007b02286e9e505247032b5b3" + integrity sha512-+LqNC37w9c6q6Ukdpf0z0tt1PQFNi4gwhHpJvkYQiKRETHjyrrlyqTNEPEyA7PI62RuYC6VrpVw2gzI7ufqZEA== + dependencies: + nx "15.9.2" "@octokit/auth-token@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.0.tgz#6f22c5fc56445c496628488ba6810131558fa4a9" - integrity sha512-MDNFUBcJIptB9At7HiV7VCvU3NcL4GnfCQaP8C5lrxWrRPMJBnemYtehaKSOlaM7AYxeRyj9etenu8LVpSpVaQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" + integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" "@octokit/core@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.0.4.tgz#335d9b377691e3264ce57a9e5a1f6cda783e5838" - integrity sha512-sUpR/hc4Gc7K34o60bWC7WUH6Q7T6ftZ2dUmepSyJr9PRF76/qqkWjE2SOEzCqLA5W83SaISymwKtxks+96hPQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648" + integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg== dependencies: "@octokit/auth-token" "^3.0.0" "@octokit/graphql" "^5.0.0" "@octokit/request" "^6.0.0" "@octokit/request-error" "^3.0.0" - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" before-after-hook "^2.2.0" universal-user-agent "^6.0.0" "@octokit/endpoint@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.0.tgz#be758a1236d68d6bbb505e686dd50881c327a519" - integrity sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ== + version "7.0.5" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" + integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.0.tgz#2cc6eb3bf8e0278656df1a7d0ca0d7591599e3b3" - integrity sha512-1ZZ8tX4lUEcLPvHagfIVu5S2xpHYXAmgN0+95eAOPoaVPzCfUXJtA5vASafcpWcO86ze0Pzn30TAx72aB2aguQ== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2" + integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ== dependencies: "@octokit/request" "^6.0.0" - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^12.10.0": - version "12.10.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.10.1.tgz#57b5cc6c7b4e55d8642c93d06401fb1af4839899" - integrity sha512-P+SukKanjFY0ZhsK6wSVnQmxTP2eVPPE8OPSNuxaMYtgVzwJZgfGdwlYjf4RlRU4vLEw4ts2fsE2icG4nZ5ddQ== +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + +"@octokit/openapi-types@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" + integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== -"@octokit/plugin-enterprise-rest@^6.0.1": +"@octokit/openapi-types@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-16.0.0.tgz#d92838a6cd9fb4639ca875ddb3437f1045cc625e" + integrity sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA== + +"@octokit/plugin-enterprise-rest@6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== "@octokit/plugin-paginate-rest@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.0.0.tgz#df779de686aeb21b5e776e4318defc33b0418566" - integrity sha512-fvw0Q5IXnn60D32sKeLIxgXCEZ7BTSAjJd8cFAE6QU5qUp0xo7LjFUjjX1J5D7HgN355CN4EXE4+Q1/96JaNUA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" + integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== dependencies: - "@octokit/types" "^6.39.0" + "@octokit/types" "^6.41.0" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" @@ -2054,35 +1339,35 @@ integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@^6.0.0": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.1.2.tgz#bbf55cfc43acf177514441ecd1d26031006f73ed" - integrity sha512-sAfSKtLHNq0UQ2iFuI41I6m5SK6bnKFRJ5kUjDRVbmQXiRVi4aQiIcgG4cM7bt+bhSiWL4HwnTxDkWFlKeKClA== + version "6.8.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1" + integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg== dependencies: - "@octokit/types" "^6.40.0" + "@octokit/types" "^8.1.1" deprecation "^2.3.1" "@octokit/request-error@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.0.tgz#f527d178f115a3b62d76ce4804dd5bdbc0270a81" - integrity sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^9.0.0" deprecation "^2.0.0" once "^1.4.0" "@octokit/request@^6.0.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.0.tgz#9c25606df84e6f2ccbcc2c58e1d35438e20b688b" - integrity sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q== + version "6.2.3" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4" + integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA== dependencies: "@octokit/endpoint" "^7.0.0" "@octokit/request-error" "^3.0.0" - "@octokit/types" "^6.16.1" + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^19.0.3": +"@octokit/rest@19.0.3": version "19.0.3" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== @@ -2092,17 +1377,31 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^6.0.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.40.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.40.0.tgz#f2e665196d419e19bb4265603cf904a820505d0e" - integrity sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw== +"@octokit/types@^6.41.0": + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== + dependencies: + "@octokit/openapi-types" "^12.11.0" + +"@octokit/types@^8.1.1": + version "8.2.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" + integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw== + dependencies: + "@octokit/openapi-types" "^14.0.0" + +"@octokit/types@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.0.0.tgz#6050db04ddf4188ec92d60e4da1a2ce0633ff635" + integrity sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw== dependencies: - "@octokit/openapi-types" "^12.10.0" + "@octokit/openapi-types" "^16.0.0" -"@openzeppelin/contracts@^4.8.1": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.2.tgz#d815ade0027b50beb9bcca67143c6bcc3e3923d6" - integrity sha512-kEUOgPQszC0fSYWpbh2kT94ltOJwj1qfT2DWo+zVttmGmf97JZ99LspePNaeeaLhCImaHVeBbjaQFZQn7+Zc5g== +"@openzeppelin/contracts@^4.8.3": + version "4.8.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.3.tgz#cbef3146bfc570849405f59cba18235da95a252a" + integrity sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg== "@parcel/watcher@2.0.4": version "2.0.4" @@ -2112,13 +1411,13 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" -"@relaycorp/ws-mock@^5.2.5": - version "5.2.5" - resolved "https://registry.yarnpkg.com/@relaycorp/ws-mock/-/ws-mock-5.2.5.tgz#46066bf979bdeb8ab5fcbf628d98f22242a7e5f4" - integrity sha512-7oLHoKjFGc/V15SvzZHBN3/A2oSVaxN+tOsjKxIh7E0bO1tCdylJieOc7+LPaKzCE4ZQh+MD8whSyvN5oMzsvw== +"@relaycorp/ws-mock@^5.2.6": + version "5.2.6" + resolved "https://registry.yarnpkg.com/@relaycorp/ws-mock/-/ws-mock-5.2.6.tgz#eaabaf22e4c6d607d17c9e0ca65e3c76f7f6f4e1" + integrity sha512-qgwroa5EDCCUouzdz0IKOz8odIJekzn5JXwketTLx/M7ScCtxonqpBGni1M5K7vE72v5IJc+J17vJatHakbw8Q== dependencies: buffer-to-arraybuffer "0.0.6" - ws "^8.12.1" + ws "^8.13.0" "@resolver-engine/core@^0.3.3": version "0.3.3" @@ -2162,15 +1461,6 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== -"@scure/bip32@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" - integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== - dependencies: - "@noble/hashes" "~1.1.1" - "@noble/secp256k1" "~1.6.0" - "@scure/base" "~1.1.0" - "@scure/bip32@1.1.5": version "1.1.5" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" @@ -2180,14 +1470,6 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" -"@scure/bip39@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" - integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== - dependencies: - "@noble/hashes" "~1.1.1" - "@scure/base" "~1.1.0" - "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -2264,11 +1546,26 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" +"@sigstore/protobuf-specs@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" + integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== + +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "@sinonjs/commons@^1.7.0": version "1.8.6" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" @@ -2318,10 +1615,10 @@ dependencies: antlr4ts "^0.5.0-alpha.4" -"@solidity-parser/parser@^0.15.0": - version "0.15.0" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.15.0.tgz#1d359be40be84f174dd616ccfadcf43346c6bf63" - integrity sha512-5UFJJTzWi1hgFk6aGCZ5rxG2DJkCJOzJ74qg7UkWSNCDSigW+CJLoYUb5bLiKrtI34Nr9rpFSUNHfkqtlL+N/w== +"@solidity-parser/parser@^0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.0.tgz#1fb418c816ca1fc3a1e94b08bcfe623ec4e1add4" + integrity sha512-ESipEcHyRHg4Np4SqBCfcXwyxxna1DgFVz69bgpLV8vzl/NP1DtcKsJ4dJZXWQhY/Z4J2LeKBiOkOVZn9ct33Q== dependencies: antlr4ts "^0.5.0-alpha.4" @@ -2332,10 +1629,12 @@ dependencies: defer-to-connect "^1.0.1" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" "@tootallnate/once@2": version "2.0.0" @@ -2362,6 +1661,19 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@tufjs/canonical-json@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" + integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== + +"@tufjs/models@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.2.tgz#6c1e99210ada62c057b1742b5528d85acbfe0a47" + integrity sha512-uxarDtxTIK3f8hJS4yFhW/lvTa3tsiQU5iDCRut+NCnOXvNtEul0Ct58NIIcIx9Rkt7OFEK31Ndpqsd663nsew== + dependencies: + "@tufjs/canonical-json" "1.0.0" + minimatch "^8.0.3" + "@typechain/ethers-v5@^10.2.0": version "10.2.0" resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz#68f5963efb5214cb2d881477228e4b5b315473e1" @@ -2384,18 +1696,6 @@ dependencies: fs-extra "^9.1.0" -"@types/async-eventemitter@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz#f8e6280e87e8c60b2b938624b0a3530fb3e24712" - integrity sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg== - -"@types/bn.js@*", "@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" @@ -2403,10 +1703,27 @@ dependencies: "@types/node" "*" +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + "@types/chai@*": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" - integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== + version "4.3.4" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" + integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== "@types/connect@^3.4.33": version "3.4.35" @@ -2423,27 +1740,39 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" "@types/lodash@*": - version "4.14.191" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" - integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + version "4.14.194" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" + integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== -"@types/minimatch@*", "@types/minimatch@^3.0.3": +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -2473,33 +1802,23 @@ "@types/node" "*" "@types/node-fetch@^2.5.5": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" - integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + version "2.6.3" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.3.tgz#175d977f5e24d93ad0f57602693c435c57ad7e80" + integrity sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "18.6.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.1.tgz#828e4785ccca13f44e2fb6852ae0ef11e3e20ba5" - integrity sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg== +"@types/node@*", "@types/node@^18.15.11": + version "18.15.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" + integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== "@types/node@^12.12.54", "@types/node@^12.12.6": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^18.14.2": - version "18.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.2.tgz#c076ed1d7b6095078ad3cf21dfeea951842778b1" - integrity sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA== - -"@types/node@^18.14.6": - version "18.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" - integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== - "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -2518,9 +1837,17 @@ "@types/node" "*" "@types/prettier@^2.1.1": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" "@types/resolve@^0.0.8": version "0.0.8" @@ -2529,6 +1856,13 @@ dependencies: "@types/node" "*" +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + "@types/secp256k1@^4.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" @@ -2541,14 +1875,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== -"@types/sinon-chai@^3.2.3": - version "3.2.8" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc" - integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" - "@types/sinon@*": version "10.0.13" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" @@ -2561,19 +1887,6 @@ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== -"@types/underscore@*": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== - -"@types/web3@1.0.19": - version "1.0.19" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.19.tgz#46b85d91d398ded9ab7c85a5dd57cb33ac558924" - integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== - dependencies: - "@types/bn.js" "*" - "@types/underscore" "*" - "@types/ws@^7.4.4": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" @@ -2581,209 +1894,90 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz#cae1967b1e569e6171bbc6bec2afa4e0c8efccfe" - integrity sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ== +"@typescript-eslint/eslint-plugin@^5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz#b1d4b0ad20243269d020ef9bbb036a40b0849829" + integrity sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA== dependencies: - "@typescript-eslint/scope-manager" "5.31.0" - "@typescript-eslint/type-utils" "5.31.0" - "@typescript-eslint/utils" "5.31.0" - debug "^4.3.4" - functional-red-black-tree "^1.0.1" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/eslint-plugin@^5.52.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.54.0.tgz#2c821ad81b2c786d142279a8292090f77d1881f4" - integrity sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw== - dependencies: - "@typescript-eslint/scope-manager" "5.54.0" - "@typescript-eslint/type-utils" "5.54.0" - "@typescript-eslint/utils" "5.54.0" + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.58.0" + "@typescript-eslint/type-utils" "5.58.0" + "@typescript-eslint/utils" "5.58.0" debug "^4.3.4" grapheme-splitter "^1.0.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" - regexpp "^3.2.0" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.45.1": - version "5.45.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.45.1.tgz#6440ec283fa1373a12652d4e2fef4cb6e7b7e8c6" - integrity sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA== - dependencies: - "@typescript-eslint/scope-manager" "5.45.1" - "@typescript-eslint/types" "5.45.1" - "@typescript-eslint/typescript-estree" "5.45.1" - debug "^4.3.4" - -"@typescript-eslint/parser@^5.52.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.54.0.tgz#def186eb1b1dbd0439df0dacc44fb6d8d5c417fe" - integrity sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ== - dependencies: - "@typescript-eslint/scope-manager" "5.54.0" - "@typescript-eslint/types" "5.54.0" - "@typescript-eslint/typescript-estree" "5.54.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz#f47a794ba84d9b818ab7f8f44fff55a61016c606" - integrity sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg== - dependencies: - "@typescript-eslint/types" "5.31.0" - "@typescript-eslint/visitor-keys" "5.31.0" - -"@typescript-eslint/scope-manager@5.45.1": - version "5.45.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.45.1.tgz#5b87d025eec7035d879b99c260f03be5c247883c" - integrity sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ== - dependencies: - "@typescript-eslint/types" "5.45.1" - "@typescript-eslint/visitor-keys" "5.45.1" - -"@typescript-eslint/scope-manager@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz#74b28ac9a3fc8166f04e806c957adb8c1fd00536" - integrity sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg== - dependencies: - "@typescript-eslint/types" "5.54.0" - "@typescript-eslint/visitor-keys" "5.54.0" - -"@typescript-eslint/type-utils@5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz#70a0b7201360b5adbddb0c36080495aa08f6f3d9" - integrity sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w== +"@typescript-eslint/parser@^5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.58.0.tgz#2ac4464cf48bef2e3234cb178ede5af352dddbc6" + integrity sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ== dependencies: - "@typescript-eslint/utils" "5.31.0" + "@typescript-eslint/scope-manager" "5.58.0" + "@typescript-eslint/types" "5.58.0" + "@typescript-eslint/typescript-estree" "5.58.0" debug "^4.3.4" - tsutils "^3.21.0" -"@typescript-eslint/type-utils@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.54.0.tgz#390717216eb61393a0cad2995da154b613ba7b26" - integrity sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ== +"@typescript-eslint/scope-manager@5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz#5e023a48352afc6a87be6ce3c8e763bc9e2f0bc8" + integrity sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA== dependencies: - "@typescript-eslint/typescript-estree" "5.54.0" - "@typescript-eslint/utils" "5.54.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.31.0.tgz#7aa389122b64b18e473c1672fb3b8310e5f07a9a" - integrity sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g== - -"@typescript-eslint/types@5.45.1": - version "5.45.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.45.1.tgz#8e1883041cee23f1bb7e1343b0139f97f6a17c14" - integrity sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg== + "@typescript-eslint/types" "5.58.0" + "@typescript-eslint/visitor-keys" "5.58.0" -"@typescript-eslint/types@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.0.tgz#7d519df01f50739254d89378e0dcac504cab2740" - integrity sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ== - -"@typescript-eslint/typescript-estree@5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz#eb92970c9d6e3946690d50c346fb9b1d745ee882" - integrity sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw== +"@typescript-eslint/type-utils@5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz#f7d5b3971483d4015a470d8a9e5b8a7d10066e52" + integrity sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w== dependencies: - "@typescript-eslint/types" "5.31.0" - "@typescript-eslint/visitor-keys" "5.31.0" + "@typescript-eslint/typescript-estree" "5.58.0" + "@typescript-eslint/utils" "5.58.0" debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.45.1": - version "5.45.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.1.tgz#b3dc37f0c4f0fe73e09917fc735e6f96eabf9ba4" - integrity sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng== - dependencies: - "@typescript-eslint/types" "5.45.1" - "@typescript-eslint/visitor-keys" "5.45.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" +"@typescript-eslint/types@5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.58.0.tgz#54c490b8522c18986004df7674c644ffe2ed77d8" + integrity sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g== -"@typescript-eslint/typescript-estree@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz#f6f3440cabee8a43a0b25fa498213ebb61fdfe99" - integrity sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ== +"@typescript-eslint/typescript-estree@5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz#4966e6ff57eaf6e0fce2586497edc097e2ab3e61" + integrity sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q== dependencies: - "@typescript-eslint/types" "5.54.0" - "@typescript-eslint/visitor-keys" "5.54.0" + "@typescript-eslint/types" "5.58.0" + "@typescript-eslint/visitor-keys" "5.58.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.31.0.tgz#e146fa00dca948bfe547d665b2138a2dc1b79acd" - integrity sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.31.0" - "@typescript-eslint/types" "5.31.0" - "@typescript-eslint/typescript-estree" "5.31.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/utils@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.0.tgz#3db758aae078be7b54b8ea8ea4537ff6cd3fbc21" - integrity sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw== +"@typescript-eslint/utils@5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.58.0.tgz#430d7c95f23ec457b05be5520c1700a0dfd559d5" + integrity sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ== dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.54.0" - "@typescript-eslint/types" "5.54.0" - "@typescript-eslint/typescript-estree" "5.54.0" + "@typescript-eslint/scope-manager" "5.58.0" + "@typescript-eslint/types" "5.58.0" + "@typescript-eslint/typescript-estree" "5.58.0" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.31.0": - version "5.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz#b0eca264df01ce85dceb76aebff3784629258f54" - integrity sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg== - dependencies: - "@typescript-eslint/types" "5.31.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@5.45.1": - version "5.45.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.1.tgz#204428430ad6a830d24c5ac87c71366a1cfe1948" - integrity sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ== - dependencies: - "@typescript-eslint/types" "5.45.1" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@5.54.0": - version "5.54.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz#846878afbf0cd67c19cfa8d75947383d4490db8f" - integrity sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA== +"@typescript-eslint/visitor-keys@5.58.0": + version "5.58.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz#eb9de3a61d2331829e6761ce7fd13061781168b4" + integrity sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA== dependencies: - "@typescript-eslint/types" "5.54.0" + "@typescript-eslint/types" "5.58.0" eslint-visitor-keys "^3.3.0" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - "@uniswap/lib@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-1.1.1.tgz#0afd29601846c16e5d082866cbb24a9e0758e6bc" @@ -2812,6 +2006,21 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +"@yarnpkg/parsers@^3.0.0-rc.18": + version "3.0.0-rc.42" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.42.tgz#3814e90a81bb1f9c06cc83c6a009139c55efe94d" + integrity sha512-eW9Mbegmb5bJjwawJM9ghjUjUqciNMhC6L7XrQPF/clXS5bbP66MstsgCT5hy9VlfUh/CfBT+0Wucf531dMjHA== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + JSONStream@^1.0.4, JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -2820,7 +2029,7 @@ JSONStream@^1.0.4, JSONStream@^1.3.5: jsonparse "^1.2.0" through ">=2.2.7 <3" -abbrev@1: +abbrev@1, abbrev@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -2830,6 +2039,11 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -2901,20 +2115,15 @@ acorn@^8.4.1, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -acorn@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== address@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" - integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== adm-zip@^0.4.16: version "0.4.16" @@ -2938,13 +2147,13 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" -agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== +agentkeepalive@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" + integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== dependencies: debug "^4.1.0" - depd "^1.1.2" + depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: @@ -2966,9 +2175,9 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -3235,6 +2444,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + ansi-underline@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4" @@ -3266,7 +2480,7 @@ antlr4ts@^0.5.0-alpha.4: resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== -anymatch@~3.1.1: +anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -3274,27 +2488,27 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - "aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" readable-stream "^3.6.0" +are-we-there-yet@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2" + integrity sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw== + dependencies: + delegates "^1.0.0" + readable-stream "^4.1.0" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -3358,6 +2572,14 @@ array-back@^4.0.1, array-back@^4.0.2: resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -3383,17 +2605,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - array.prototype.reduce@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" @@ -3415,11 +2626,6 @@ arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -3457,7 +2663,7 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: +async-eventemitter@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== @@ -3488,6 +2694,11 @@ async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: dependencies: lodash "^4.17.14" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3503,15 +2714,20 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axios@^0.21.4: version "0.21.4" @@ -3520,6 +2736,15 @@ axios@^0.21.4: dependencies: follow-redirects "^1.14.0" +axios@^1.0.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542" + integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -4089,38 +3314,29 @@ bech32@1.1.4: integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== bigint-crypto-utils@^3.0.23: - version "3.1.7" - resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.1.7.tgz#c4c1b537c7c1ab7aadfaecf3edfd45416bf2c651" - integrity sha512-zpCQpIE2Oy5WIQpjC9iYZf8Uh9QqoS51ZCooAcNvzv1AQ3VWdT52D0ksr1+/faeK8HVIej1bxXcP75YcqH3KPA== - dependencies: - bigint-mod-arith "^3.1.0" - -bigint-mod-arith@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz#658e416bc593a463d97b59766226d0a3021a76b1" - integrity sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ== + version "3.2.2" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz#e30a49ec38357c6981cd3da5aaa6480b1f752ee4" + integrity sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw== bignumber.js@^9.0.0, bignumber.js@^9.0.1: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== -bin-links@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.1.tgz#cc70ffb481988b22c527d3e6e454787876987a49" - integrity sha512-9vx+ypzVhASvHTS6K+YSGf7nwQdANoz7v6MTC0aCtYnOEZ87YvMf81aY737EZnGZdpbRM3sfWjO9oWkKmuIvyQ== +bin-links@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.1.tgz#afeb0549e642f61ff889b58ea2f8dca78fb9d8d3" + integrity sha512-bmFEM39CyX336ZGGRsGPlc6jZHriIoHacOQcTt72MktIjpPhZoP4te2jOyUXF3BLILmJ8aNLncoPVeIIFlrDeA== dependencies: - cmd-shim "^5.0.0" - mkdirp-infer-owner "^2.0.0" - npm-normalize-package-bin "^1.0.0" - read-cmd-shim "^3.0.0" - rimraf "^3.0.0" - write-file-atomic "^4.0.0" + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" binary-extensions@^2.0.0: version "2.2.0" @@ -4172,24 +3388,6 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0, body-parser@^1.16.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.10.3" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -4208,7 +3406,7 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.20.1: +body-parser@^1.16.0, body-parser@^1.20.1: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -4279,10 +3477,10 @@ browser-level@^1.0.1: module-error "^1.0.2" run-parallel-limit "^1.1.0" -browser-or-node@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-1.3.0.tgz#f2a4e8568f60263050a6714b2cc236bb976647a7" - integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg== +browser-or-node@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-2.1.1.tgz#738790b3a86a8fc020193fa581273fbe65eaea0f" + integrity sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg== browser-stdout@1.3.1: version "1.3.1" @@ -4411,9 +3609,9 @@ buffer@^6.0.3: ieee754 "^1.2.1" bufferutil@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== dependencies: node-gyp-build "^4.3.0" @@ -4436,10 +3634,10 @@ busboy@^1.6.0: dependencies: streamsearch "^1.1.0" -byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== +byte-size@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== bytes@3.1.2: version "3.1.2" @@ -4455,40 +3653,16 @@ bytewise-core@^1.2.2: bytewise@~1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - dependencies: - "@npmcli/fs" "^1.0.0" - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" + resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" + integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" -cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: - version "16.1.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.1.tgz#4e79fb91d3efffe0630d5ad32db55cc1b870669c" - integrity sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg== +cacache@^16.0.0, cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== dependencies: "@npmcli/fs" "^2.1.0" "@npmcli/move-file" "^2.0.0" @@ -4507,7 +3681,26 @@ cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: rimraf "^3.0.2" ssri "^9.0.0" tar "^6.1.11" - unique-filename "^1.1.1" + unique-filename "^2.0.0" + +cacache@^17.0.0, cacache@^17.0.4: + version "17.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.0.5.tgz#6dbec26c11f1f6a2b558bc11ed3316577c339ebc" + integrity sha512-Y/PRQevNSsjAPWykl9aeGz8Pr+OI6BYM9fYDNMvOkuUiG9IhG4LEmaYrZZZvioMUEQ+cBCxT0v8wrnCURccyKA== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^9.3.1" + lru-cache "^7.7.1" + minipass "^4.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" cache-base@^1.0.1: version "1.0.1" @@ -4524,6 +3717,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -4537,6 +3735,19 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + cachedown@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" @@ -4583,9 +3794,9 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30000844: - version "1.0.30001370" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz#0a30d4f20d38b9e108cc5ae7cc62df9fe66cd5ba" - integrity sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g== + version "1.0.30001478" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a" + integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw== case@^1.6.3: version "1.6.3" @@ -4602,28 +3813,14 @@ catering@^2.1.0, catering@^2.1.1: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -cbor@^5.0.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" + nofilter "^3.1.0" chai@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== - 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" - pathval "^1.1.1" - type-detect "^4.0.5" - -chai@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== @@ -4664,7 +3861,7 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4713,7 +3910,7 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.1: +chokidar@3.5.3, chokidar@^3.4.0: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -4778,14 +3975,14 @@ class-utils@^0.3.5: static-extend "^0.1.1" classic-level@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.2.0.tgz#2d52bdec8e7a27f534e67fdeb890abef3e643c27" - integrity sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" + integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== dependencies: abstract-level "^1.0.2" catering "^2.1.0" module-error "^1.0.1" - napi-macros "~2.0.0" + napi-macros "^2.2.2" node-gyp-build "^4.3.0" clean-stack@^2.0.0: @@ -4806,9 +4003,9 @@ cli-spinners@2.6.1: integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-spinners@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + version "2.8.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc" + integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== cli-width@^3.0.0: version "3.0.0" @@ -4842,17 +4039,16 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-deep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-1.0.0.tgz#b2f354444b5d4a0ce58faca337ef34da2b14a6c7" - integrity sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: - for-own "^1.0.0" - is-plain-object "^2.0.4" - kind-of "^5.0.0" - shallow-clone "^1.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" -clone-deep@^4.0.0, clone-deep@^4.0.1: +clone-deep@4.0.1, clone-deep@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== @@ -4861,6 +4057,16 @@ clone-deep@^4.0.0, clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-deep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-1.0.0.tgz#b2f354444b5d4a0ce58faca337ef34da2b14a6c7" + integrity sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw== + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^5.0.0" + shallow-clone "^1.0.0" + clone-response@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" @@ -4878,20 +4084,18 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== -cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -cmd-shim@^5.0.0: +cmd-shim@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== dependencies: mkdirp-infer-owner "^2.0.0" +cmd-shim@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.1.tgz#a65878080548e1dca760b3aea1e21ed05194da9d" + integrity sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q== + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4934,7 +4138,7 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -columnify@^1.6.0: +columnify@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== @@ -5036,10 +4240,10 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== +config-chain@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -5065,25 +4269,20 @@ content-hash@^2.5.2: multicodec "^0.5.5" multihashes "^0.4.15" -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -content-type@~1.0.5: +content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== +conventional-changelog-angular@5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== dependencies: compare-func "^2.0.0" q "^1.5.1" -conventional-changelog-core@^4.2.4: +conventional-changelog-core@4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== @@ -5143,7 +4342,7 @@ conventional-commits-parser@^3.2.0: split2 "^3.0.0" through2 "^4.0.0" -conventional-recommended-bump@^6.1.0: +conventional-recommended-bump@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== @@ -5158,11 +4357,9 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.5.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" @@ -5190,9 +4387,9 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-pure@^3.0.1: - version "3.24.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.0.tgz#10eeb90dbf0d670a6b22b081aecc7deb2faec7e1" - integrity sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA== + version "3.30.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" + integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -5217,10 +4414,10 @@ cors@^2.8.1: object-assign "^4" vary "^1" -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +cosmiconfig@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -5314,6 +4511,16 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -5344,7 +4551,7 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -5372,15 +4579,10 @@ debug@^3.0.1, debug@^3.1.0: dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: decamelize "^1.1.0" map-obj "^1.0.0" @@ -5400,25 +4602,25 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -decompress-response@^3.2.0, decompress-response@^3.3.0: +decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" -dedent@^0.7.0: +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +dedent@0.7.0, dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - deep-eql@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" @@ -5449,9 +4651,9 @@ deep-is@^0.1.3, deep-is@~0.1.3: integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" @@ -5460,6 +4662,11 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + deferred-leveldown@~1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" @@ -5481,9 +4688,9 @@ define-lazy-prop@^2.0.0: integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -5510,10 +4717,24 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== +defined@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" delay@^5.0.0: version "5.0.0" @@ -5530,16 +4751,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -depd@2.0.0: +depd@2.0.0, depd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -5570,26 +4786,13 @@ detect-indent@^5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: address "^1.0.1" - debug "^2.6.0" - -dezalgo@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" + debug "4" diff@3.5.0: version "3.5.0" @@ -5646,6 +4849,13 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== +dot-prop@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -5653,17 +4863,10 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - dotenv@^16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== dotenv@~10.0.0: version "10.0.0" @@ -5700,10 +4903,17 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +ejs@^3.1.7: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + electron-to-chromium@^1.3.47: - version "1.4.201" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.201.tgz#b018802ace20ce2567842d52b9e1c9d090fda674" - integrity sha512-87D0gEHbhLZgZxZl2e9/rC/I2BicPC/y9wR/cuaJSqvkgN41s5EImi89S7YExHc7F0OBXiKsABZt9mmb9bqFcQ== + version "1.4.363" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.363.tgz#a3d51d16169d8f212f00bafb78cf0667e24c3647" + integrity sha512-ReX5qgmSU7ybhzMuMdlJAdYnRhT90UB3k9M05O5nF5WH3wR5wgdJjXw0uDeFyKNhmglmQiOxkAbzrP0hMKM59g== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -5744,7 +4954,7 @@ encoding-down@5.0.4, encoding-down@~5.0.0: level-errors "^2.0.0" xtend "^4.0.1" -encoding@^0.1.11, encoding@^0.1.12, encoding@^0.1.13: +encoding@^0.1.11, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -5799,71 +5009,60 @@ error-symbol@^0.1.0: resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6" integrity sha512-VyjaKxUmeDX/m2lxm/aknsJ1GWDWUO2Ze2Ad8S1Pb9dykAm9TjSKp5CjrNyltYqZ5W/PO6TInAmO2/BfwMyT1g== -es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-abstract@^1.20.4: - version "1.20.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.5.tgz#e6dc99177be37cacda5988e692c3fa8b218e95d2" - integrity sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ== +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.0" get-symbol-description "^1.0.0" + globalthis "^1.0.3" gopd "^1.0.1" has "^1.0.3" has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" + is-typed-array "^1.1.10" is-weakref "^1.0.2" - object-inspect "^1.12.2" + object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.4.3" safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -5874,9 +5073,9 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.61" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" - integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: es6-iterator "^2.0.3" es6-symbol "^3.1.3" @@ -5944,14 +5143,9 @@ escodegen@1.8.x: source-map "~0.2.0" eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-config-prettier@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207" - integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== + version "8.8.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz#bfda738d412adc917fd7b038857110efe98c9348" + integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA== eslint-plugin-prettier@^4.2.1: version "4.2.1" @@ -5969,78 +5163,27 @@ eslint-scope@^5.1.1: estraverse "^4.1.1" eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== eslint@^8.20.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" - integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.34.0: - version "8.35.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.35.0.tgz#fffad7c7e326bae606f0e8f436a6158566d42323" - integrity sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw== - dependencies: - "@eslint/eslintrc" "^2.0.0" - "@eslint/js" "8.35.0" + version "8.38.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a" + integrity sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.2" + "@eslint/js" "8.38.0" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -6051,9 +5194,8 @@ eslint@^8.34.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" + eslint-visitor-keys "^3.4.0" + espree "^9.5.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -6075,28 +5217,18 @@ eslint@^8.34.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - regexpp "^3.2.0" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== - dependencies: - acorn "^8.7.1" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== +espree@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" + integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" @@ -6108,17 +5240,10 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - esquery@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.2.tgz#c6d3fee05dd665808e2ad870631f221f5617b1d1" - integrity sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng== + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -6322,17 +5447,7 @@ ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-cryptography@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" - integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== - dependencies: - "@noble/hashes" "1.1.2" - "@noble/secp256k1" "1.6.3" - "@scure/bip32" "1.1.0" - "@scure/bip39" "1.1.0" - -ethereum-cryptography@^1.1.2: +ethereum-cryptography@^1.0.3, ethereum-cryptography@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== @@ -6559,41 +5674,41 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" -ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.6.9: - version "5.6.9" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" - integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== - dependencies: - "@ethersproject/abi" "5.6.4" - "@ethersproject/abstract-provider" "5.6.1" - "@ethersproject/abstract-signer" "5.6.2" - "@ethersproject/address" "5.6.1" - "@ethersproject/base64" "5.6.1" - "@ethersproject/basex" "5.6.1" - "@ethersproject/bignumber" "5.6.2" - "@ethersproject/bytes" "5.6.1" - "@ethersproject/constants" "5.6.1" - "@ethersproject/contracts" "5.6.2" - "@ethersproject/hash" "5.6.1" - "@ethersproject/hdnode" "5.6.2" - "@ethersproject/json-wallets" "5.6.1" - "@ethersproject/keccak256" "5.6.1" - "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.4" - "@ethersproject/pbkdf2" "5.6.1" - "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.8" - "@ethersproject/random" "5.6.1" - "@ethersproject/rlp" "5.6.1" - "@ethersproject/sha2" "5.6.1" - "@ethersproject/signing-key" "5.6.2" - "@ethersproject/solidity" "5.6.1" - "@ethersproject/strings" "5.6.1" - "@ethersproject/transactions" "5.6.2" - "@ethersproject/units" "5.6.1" - "@ethersproject/wallet" "5.6.2" - "@ethersproject/web" "5.6.1" - "@ethersproject/wordlists" "5.6.1" +ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.6.9, ethers@^5.7.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" ethjs-unit@0.1.6: version "0.1.6" @@ -6626,7 +5741,7 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: +events@^3.0.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -6639,6 +5754,21 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -6661,50 +5791,13 @@ expand-brackets@^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" - -express@^4.14.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.0" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.10.3" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + 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" -express@^4.18.2: +express@^4.14.0, express@^4.18.2: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -6742,11 +5835,11 @@ express@^4.18.2: vary "~1.1.2" ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: - type "^2.5.0" + type "^2.7.2" extend-shallow@^2.0.1: version "2.0.1" @@ -6849,9 +5942,9 @@ fast-glob@3.2.7: micromatch "^4.0.4" fast-glob@^3.0.3, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -6870,9 +5963,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" @@ -6897,6 +5990,18 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-url@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" + integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -7016,16 +6121,16 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" - integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== flow-stoplight@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== -follow-redirects@^1.12.1, follow-redirects@^1.14.0: +follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.0: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -7068,6 +6173,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -7109,6 +6223,16 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -7120,10 +6244,10 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -7156,16 +6280,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -7180,6 +6294,13 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" +fs-minipass@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.1.tgz#853809af15b6d03e27638d1ab6432e6b378b085d" + integrity sha512-MhaJDcFRTuLidHrIttu0RDGyyXs/IYHVmlcxfLAEFIWjc1vdLAkdwT7Ace2u7DbitWC0toKMl5eJZRYNVreIMw== + dependencies: + minipass "^4.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -7271,6 +6392,20 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" +gauge@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.0.tgz#e270ca9d97dae84abf64e5277ef1ebddc7dd1e2f" + integrity sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + get-caller-file@^1.0.1, get-caller-file@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -7286,19 +6421,10 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -7319,15 +6445,15 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" -get-port@^5.1.1: +get-port@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== +get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== get-stream@^4.1.0: version "4.1.0" @@ -7403,20 +6529,20 @@ git-semver-tags@^4.1.1: meow "^8.0.0" semver "^6.0.0" -git-up@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-6.0.0.tgz#dbd6e4eee270338be847a0601e6d0763c90b74db" - integrity sha512-6RUFSNd1c/D0xtGnyWN2sxza2bZtZ/EmI9448n6rCZruFwV/ezeEn2fJP7XnUQGwf0RAtd/mmUCbtH6JPYA2SA== +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: is-ssh "^1.4.0" - parse-url "^7.0.2" + parse-url "^8.1.0" -git-url-parse@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-12.0.0.tgz#4ba70bc1e99138321c57e3765aaf7428e5abb793" - integrity sha512-I6LMWsxV87vysX1WfsoglXsXg6GjQRKq7+Dgiseo+h0skmp5Hp2rzmcEIRQot9CPA+uzU7x1x7jZdqvTFGnB+Q== +git-url-parse@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: - git-up "^6.0.0" + git-up "^7.0.0" gitconfiglocal@^1.0.0: version "1.0.0" @@ -7425,14 +6551,14 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1, glob-parent@^6.0.2: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -7498,7 +6624,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.0: +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -7511,9 +6637,9 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.2.0: path-is-absolute "^1.0.0" glob@^8.0.1: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -7521,6 +6647,16 @@ glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" +glob@^9.2.0, glob@^9.3.0, glob@^9.3.1: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -7545,13 +6681,6 @@ global@~4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - globals@^13.19.0: version "13.20.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" @@ -7564,6 +6693,25 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@11.1.0, globby@^11.0.1, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -7578,18 +6726,6 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.2, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -7614,31 +6750,33 @@ got@9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.6: +graceful-fs@4.2.10: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" @@ -7680,22 +6818,22 @@ hard-rejection@^2.1.0: integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== hardhat@^2.12.7: - version "2.12.7" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.7.tgz#d8de2dc32e9a2956d53cf26ef4cd5857e57a3138" - integrity sha512-voWoN6zn5d8BOEaczSyK/1PyfdeOeI3SbGCFb36yCHTJUt6OIqLb+ZDX30VhA1UsYKzLqG7UnWl3fKJUuANc6A== + version "2.13.1" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.13.1.tgz#12380aef6aa8ce67517e8ee166998be5ced8970e" + integrity sha512-ZZL7LQxHmbw4JQJsiEv2qE35nbR+isr2sIdtgZVPp0+zWqRkpr1OT7gmvhCNYfjpEPyfjZIxWriQWlphJhVPLQ== 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/ethereumjs-block" "5.0.0" + "@nomicfoundation/ethereumjs-blockchain" "7.0.0" + "@nomicfoundation/ethereumjs-common" "4.0.0" + "@nomicfoundation/ethereumjs-evm" "2.0.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.0" + "@nomicfoundation/ethereumjs-statemanager" "2.0.0" + "@nomicfoundation/ethereumjs-trie" "6.0.0" + "@nomicfoundation/ethereumjs-tx" "5.0.0" + "@nomicfoundation/ethereumjs-util" "9.0.0" + "@nomicfoundation/ethereumjs-vm" "7.0.0" "@nomicfoundation/solidity-analyzer" "^0.1.0" "@sentry/node" "^5.18.1" "@types/bn.js" "^5.1.0" @@ -7769,23 +6907,16 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -7793,7 +6924,7 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.1: +has-unicode@2.0.1, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== @@ -7890,6 +7021,13 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -7898,13 +7036,20 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: lru-cache "^6.0.0" hosted-git-info@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.0.0.tgz#df7a06678b4ebd722139786303db80fdf302ea56" - integrity sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q== + version "5.2.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== dependencies: lru-cache "^7.5.1" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== @@ -7925,15 +7070,6 @@ http-https@^1.0.0: resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -7952,6 +7088,14 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -7973,9 +7117,9 @@ humanize-ms@^1.2.1: ms "^2.0.0" husky@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" - integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== + version "8.0.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -8010,10 +7154,17 @@ ignore-walk@^5.0.1: dependencies: minimatch "^5.0.1" +ignore-walk@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.2.tgz#c48f48397cf8ef6174fcc28aa5f8c1de6203d389" + integrity sha512-ezmQ1Dg2b3jVZh2Dh+ar6Eu2MqNSTkyb32HU2MAQQQX9tKM3q/UQ/9lf03lQ5hW+fOeoMnwxwkleZ0xcNp0/qg== + dependencies: + minimatch "^7.4.2" + ignore@^5.0.4, ignore@^5.1.1, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immediate@^3.2.3: version "3.3.0" @@ -8026,9 +7177,9 @@ immediate@~3.2.3: integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== immutable@^4.0.0-rc.12: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -8084,20 +7235,20 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== +init-package-json@3.0.2, init-package-json@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== dependencies: - npm-package-arg "^8.1.5" + npm-package-arg "^9.0.1" promzard "^0.3.0" - read "~1.0.1" - read-package-json "^4.1.1" + read "^1.0.7" + read-package-json "^5.0.0" semver "^7.3.5" validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" + validate-npm-package-name "^4.0.0" -inquirer@^8.2.4: +inquirer@8.2.4: version "8.2.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== @@ -8118,12 +7269,33 @@ inquirer@^8.2.4: through "^2.3.6" wrap-ansi "^7.0.0" -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +inquirer@^8.2.4: + version "8.2.5" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - get-intrinsic "^1.1.0" + get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" @@ -8183,6 +7355,15 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -8220,27 +7401,22 @@ is-buffer@^2.0.5, is-buffer@~2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-callable@^1.2.7: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-ci@^2.0.0: +is-ci@2.0.0, is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" -is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== +is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== dependencies: has "^1.0.3" @@ -8393,12 +7569,12 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-inside@^3.0.3: +is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -8408,7 +7584,7 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: +is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== @@ -8433,11 +7609,6 @@ is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -8452,7 +7623,12 @@ is-ssh@^1.4.0: dependencies: protocols "^2.0.1" -is-stream@^1.0.0, is-stream@^1.0.1: +is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== @@ -8483,6 +7659,17 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -8559,18 +7746,20 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" -jayson@^3.2.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" - integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== +jayson@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.0.0.tgz#145a0ced46f900934c9b307e1332bcb0c7dbdb17" + integrity sha512-v2RNpDCMu45fnLzSk47vx7I+QUaOsox6f5X0CUlabAFwxoP+8MfAY0NQRFwOEYXIxm8Ih5y6OaEa5KYiQMkyAA== dependencies: "@types/connect" "^3.4.33" "@types/node" "^12.12.54" @@ -8582,14 +7771,13 @@ jayson@^3.2.0: eyes "^0.1.8" isomorphic-ws "^4.0.1" json-stringify-safe "^5.0.1" - lodash "^4.17.20" uuid "^8.3.2" ws "^7.4.5" js-sdsl@^4.1.4: - version "4.3.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" - integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" @@ -8619,7 +7807,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.x: +js-yaml@3.x, js-yaml@^3.10.0: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -8654,6 +7842,11 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -8664,6 +7857,11 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-parse-even-better-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz#2cb2ee33069a78870a0c7e3da560026b89669cf7" + integrity sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA== + json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: version "3.8.0" resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" @@ -8709,11 +7907,11 @@ json-stable-stringify-without-jsonify@^1.0.1: integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== dependencies: - jsonify "~0.0.0" + jsonify "^0.0.1" json-stringify-nice@^1.1.4: version "1.1.4" @@ -8730,17 +7928,15 @@ json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" - integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsonfile@^2.1.0: version "2.4.0" @@ -8765,10 +7961,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" @@ -8791,14 +7987,14 @@ jsprim@^1.2.2: verror "1.10.0" just-diff-apply@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.3.1.tgz#30f40809ffed55ad76dccf73fa9b85a76964c867" - integrity sha512-dgFenZnMsc1xGNqgdtgnh7DK+Oy352CE3VZLbzcbQpsBs9iI2K3M0IRrdgREZ72eItTjbl0suRyvKRdVQa9GbA== + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== -just-diff@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.0.3.tgz#4c9c514dec5526b25ab977590e3c39a0cf271554" - integrity sha512-a8p80xcpJ6sdurk5PxDKb4mav9MeKjA3zFKZpCWBIfvg8mznfnmb13MKZvlrwJ+Lhis0wM3uGAzE0ArhFHvIcg== +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== just-extend@^4.0.2: version "4.2.1" @@ -8814,9 +8010,9 @@ keccak@3.0.1: node-gyp-build "^4.2.0" keccak@^3.0.0, keccak@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== dependencies: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" @@ -8829,6 +8025,13 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -8886,30 +8089,87 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lerna@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.2.0.tgz#eac37e40e111ae1bbc2f0716718915043e0fb0a3" - integrity sha512-JbjmGhS8ja5lmTnwZhtDiFxkthR2chhA3QAyRPZDm3ptgZhZbAKsgIj4SdEQvZcepU4ixPlX9d3lIzbzlQFPAg== - dependencies: - "@lerna/add" "5.2.0" - "@lerna/bootstrap" "5.2.0" - "@lerna/changed" "5.2.0" - "@lerna/clean" "5.2.0" - "@lerna/cli" "5.2.0" - "@lerna/create" "5.2.0" - "@lerna/diff" "5.2.0" - "@lerna/exec" "5.2.0" - "@lerna/import" "5.2.0" - "@lerna/info" "5.2.0" - "@lerna/init" "5.2.0" - "@lerna/link" "5.2.0" - "@lerna/list" "5.2.0" - "@lerna/publish" "5.2.0" - "@lerna/run" "5.2.0" - "@lerna/version" "5.2.0" +lerna@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.6.1.tgz#4897171aed64e244a2d0f9000eef5c5b228f9332" + integrity sha512-WJtrvmbmR+6hMB9b5pvsxJzew0lRL6hARgW/My9BM4vYaxwPIA2I0riv3qQu5Zd7lYse7FEqJkTnl9Kn1bXhLA== + dependencies: + "@lerna/child-process" "6.6.1" + "@lerna/create" "6.6.1" + "@lerna/legacy-package-management" "6.6.1" + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-angular "5.0.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + envinfo "^7.7.4" + execa "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" import-local "^3.0.2" + init-package-json "3.0.2" + inquirer "^8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + js-yaml "^4.1.0" + libnpmaccess "6.0.3" + libnpmpublish "6.0.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.3" npmlog "^6.0.2" - nx ">=14.4.3 < 16" + nx ">=15.5.2 < 16" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "13.6.2" + pify "5.0.0" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + typescript "^3 || ^4" + upath "^2.0.1" + uuid "8.3.2" + validate-npm-package-license "3.0.4" + validate-npm-package-name "4.0.0" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + yargs-parser "20.2.4" level-codec@^9.0.0: version "9.0.2" @@ -9088,32 +8348,47 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== +libnpmaccess@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.3.tgz#473cc3e4aadb2bc713419d92e45d23b070d8cded" + integrity sha512-4tkfUZprwvih2VUZYMozL7EMKgQ5q9VW2NtRyxWtQWlkLTAWHRklcAvBN49CVqEkhUw7vTX2fNgB5LzgUucgYg== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" -libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== +libnpmpublish@6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.4.tgz#adb41ec6b0c307d6f603746a4d929dcefb8f1a0b" + integrity sha512-lvAEYW8mB8QblL6Q/PI/wMzKNvIrF7Kpujf/4fGS/32a2i3jzUXi04TNyIBcK6dQJ34IgywfaKGh+Jq4HYPFmg== dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - semver "^7.1.3" - ssri "^8.0.1" + normalize-package-data "^4.0.0" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + semver "^7.3.7" + ssri "^9.0.0" lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + +load-json-file@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -9135,16 +8410,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -9210,7 +8475,7 @@ lodash@4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -9269,9 +8534,9 @@ loose-envify@^1.0.0: js-tokens "^3.0.0 || ^4.0.0" loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" - integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== + version "2.3.6" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== dependencies: get-func-name "^2.0.0" @@ -9307,9 +8572,14 @@ lru-cache@^6.0.0: yallist "^4.0.0" lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: - version "7.13.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.13.1.tgz#267a81fbd0881327c46a81c5922606a2cfe336c4" - integrity sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ== + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +lru-cache@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.0.2.tgz#97f13c6b20532fba9bae821c39cd7d471f65119d" + integrity sha512-7zYMKApzQ9qQE13xQUzbXVY3p2C5lh+9V+bs8M9fRf1TF59id+8jkljRWtIPfBfNP4yQAol5cqh/e8clxatdXw== lru_map@^0.3.3: version "0.3.3" @@ -9326,10 +8596,17 @@ ltgt@~2.1.1: resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +make-dir@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" make-dir@^2.1.0: version "2.1.0" @@ -9339,22 +8616,15 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: - version "10.2.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.0.tgz#0bde3914f2f82750b5d48c6d2294d2c74f985e5b" - integrity sha512-OnEfCLofQVJ5zgKwGk55GaqosqKjaR6khQlJY3dBAA+hM25Bc5CmX5rKUfVut+rYA3uidA7zb7AvcglU87rPRg== + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: agentkeepalive "^4.2.1" cacache "^16.1.0" @@ -9373,48 +8643,26 @@ make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: socks-proxy-agent "^7.0.0" ssri "^9.0.0" -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" - -make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== +make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1: + version "11.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.0.tgz#f26b05e89317e960b75fd5e080e40d40f8d7b2a5" + integrity sha512-7ChuOzCb1LzdQZrTy0ky6RsCoMYeM+Fh4cY0+4zsJVhNcH5Q3OJojLY1mGkD0xAhWB29lskECVb6ZopofwjldA== dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" + lru-cache "^7.7.1" + minipass "^4.0.0" + minipass-fetch "^3.0.0" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" - negotiator "^0.6.2" + negotiator "^0.6.3" promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" map-cache@^0.2.2: version "0.2.2" @@ -9621,6 +8869,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -9672,9 +8925,30 @@ minimatch@5.0.1: brace-expansion "^2.0.1" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^6.1.6: + version "6.2.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^7.4.2: + version "7.4.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" + integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2, minimatch@^8.0.3: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== dependencies: brace-expansion "^2.0.1" @@ -9687,10 +8961,10 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass-collect@^1.0.2: version "1.0.2" @@ -9699,23 +8973,23 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== dependencies: - minipass "^3.1.0" + minipass "^3.1.6" minipass-sized "^1.0.3" - minizlib "^2.0.0" + minizlib "^2.1.2" optionalDependencies: - encoding "^0.1.12" + encoding "^0.1.13" -minipass-fetch@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.0.tgz#ca1754a5f857a3be99a9271277246ac0b44c3ff8" - integrity sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg== +minipass-fetch@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.2.tgz#2f7275ae13f2fb0f2a469cee4f78250c25c80ab3" + integrity sha512-/ZpF1CQaWYqjbhfFgKNt3azxztEpc/JUPuMkqOgrnMQqcU8CbE409AUdJYTIWryl3PP5CBaTJZT71N49MXP/YA== dependencies: - minipass "^3.1.6" + minipass "^4.0.0" minipass-sized "^1.0.3" minizlib "^2.1.2" optionalDependencies: @@ -9736,7 +9010,7 @@ minipass-json-stream@^1.0.1: jsonparse "^1.3.1" minipass "^3.0.0" -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== @@ -9758,13 +9032,23 @@ minipass@^2.6.0, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: - version "3.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" - integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" +minipass@^4.0.0, minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -9772,7 +9056,7 @@ minizlib@^1.3.3: dependencies: minipass "^2.9.0" -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -9812,10 +9096,10 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@*: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.0.tgz#758101231418bda24435c0888a91d9bd91f1372d" + integrity sha512-7+JDnNsyCvZXoUJdkMR0oUE2AmAdsNXGTmRbiOjYIwQ6q+bL6NwrozGQdPcmYaNcrhH37F50HHBUzoaBV6FITQ== mkdirp@0.5.5: version "0.5.5" @@ -9831,6 +9115,11 @@ mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: dependencies: minimist "^1.2.6" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mnemonist@^0.38.0: version "0.38.5" resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" @@ -9868,35 +9157,7 @@ mocha@7.1.2: yargs-parser "13.1.2" yargs-unparser "1.6.0" -mocha@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" - integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -mocha@^10.2.0: +mocha@^10.0.0, mocha@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== @@ -10016,7 +9277,7 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" -multimatch@^5.0.0: +multimatch@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== @@ -10064,10 +9325,10 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== natural-compare-lite@^1.4.0: version "1.4.0" @@ -10079,7 +9340,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -10155,13 +9416,20 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -10171,46 +9439,30 @@ node-fetch@~1.7.1: is-stream "^1.0.1" node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== - -node-gyp@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== node-gyp@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.1.0.tgz#c8d8e590678ea1f7b8097511dedf41fc126648f8" - integrity sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g== + version "9.3.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" + integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== dependencies: env-paths "^2.2.0" glob "^7.1.4" graceful-fs "^4.2.6" make-fetch-happen "^10.0.3" - nopt "^5.0.0" + nopt "^6.0.0" npmlog "^6.0.0" rimraf "^3.0.2" semver "^7.3.5" tar "^6.1.2" which "^2.0.2" -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== nopt@3.x: version "3.0.6" @@ -10219,12 +9471,19 @@ nopt@3.x: dependencies: abbrev "1" -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== dependencies: - abbrev "1" + abbrev "^1.0.0" + +nopt@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.1.0.tgz#91f6a3366182176e72ecab93a09c19b63b485f28" + integrity sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q== + dependencies: + abbrev "^2.0.0" normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" @@ -10236,7 +9495,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: +normalize-package-data@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== @@ -10247,15 +9506,25 @@ normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: validate-npm-package-license "^3.0.1" normalize-package-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.0.tgz#1122d5359af21d4cd08718b92b058a658594177c" - integrity sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g== + version "4.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== dependencies: hosted-git-info "^5.0.0" is-core-module "^2.8.1" semver "^7.3.5" validate-npm-package-license "^3.0.4" +normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -10273,7 +9542,7 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.1.0: +normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== @@ -10285,6 +9554,20 @@ npm-bundled@^1.1.1, npm-bundled@^1.1.2: dependencies: npm-normalize-package-bin "^1.0.1" +npm-bundled@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" + integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== + dependencies: + npm-normalize-package-bin "^2.0.0" + +npm-bundled@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.0.tgz#7e8e2f8bb26b794265028491be60321a25a39db7" + integrity sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + npm-install-checks@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" @@ -10292,31 +9575,58 @@ npm-install-checks@^5.0.0: dependencies: semver "^7.1.1" -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: +npm-install-checks@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.1.1.tgz#b459b621634d06546664207fde16810815808db1" + integrity sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-normalize-package-bin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.0.tgz#6097436adb4ef09e2628b59a7882576fe53ce485" + integrity sha512-g+DPQSkusnk7HYXr75NtzkIP4+N81i3RPsGFidF3DzHd9MT9wWngmqoeg/fnHFz5MNdtG4w03s+QnhewSLTT2Q== + +npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" + hosted-git-info "^3.0.6" + semver "^7.0.0" validate-npm-package-name "^3.0.0" +npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.0.tgz#a60e9f1e7c03e4e3e4e994ea87fff8b90b522987" - integrity sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw== + version "9.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== dependencies: hosted-git-info "^5.0.0" proc-log "^2.0.1" semver "^7.3.5" validate-npm-package-name "^4.0.0" -npm-packlist@^5.1.0, npm-packlist@^5.1.1: +npm-packlist@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== @@ -10326,32 +9636,60 @@ npm-packlist@^5.1.0, npm-packlist@^5.1.1: npm-bundled "^1.1.2" npm-normalize-package-bin "^1.0.1" +npm-packlist@^5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^2.0.0" + npm-normalize-package-bin "^2.0.0" + +npm-packlist@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" + integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== + dependencies: + ignore-walk "^6.0.0" + npm-pick-manifest@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz#76dda30a7cd6b99be822217a935c2f5eacdaca4c" - integrity sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg== + version "7.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== dependencies: npm-install-checks "^5.0.0" - npm-normalize-package-bin "^1.0.1" + npm-normalize-package-bin "^2.0.0" npm-package-arg "^9.0.0" semver "^7.3.5" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== +npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" + integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" + semver "^7.3.5" + +npm-registry-fetch@14.0.3: + version "14.0.3" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz#8545e321c2b36d2c6fe6e009e77e9f0e527f547b" + integrity sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA== dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^11.0.0" + minipass "^4.0.0" + minipass-fetch "^3.0.0" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1: - version "13.3.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.0.tgz#0ce10fa4a699a1e70685ecf41bbfb4150d74231b" - integrity sha512-10LJQ/1+VhKrZjIuY9I/+gQTvumqqlgnsCufoXETHAPFTS3+M+Z5CFhZRDHGavmJ6rOye3UvNga88vl8n1r6gg== + version "13.3.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== dependencies: make-fetch-happen "^10.0.6" minipass "^3.1.6" @@ -10361,19 +9699,18 @@ npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1: npm-package-arg "^9.0.1" proc-log "^2.0.0" -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== +npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3: + version "14.0.4" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.4.tgz#43dfa55ce7c0d0c545d625c7a916bab5b95f7038" + integrity sha512-pMS2DRkwg+M44ct65zrN/Cr9IHK1+n6weuefAo6Er4lc+/8YBCU0Czq04H3ZiSigluh7pb2rMM5JpgcytctB+Q== dependencies: - "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^11.0.0" + minipass "^4.0.0" + minipass-fetch "^3.0.0" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" npm-run-path@^4.0.1: version "4.0.1" @@ -10382,7 +9719,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.0, npmlog@^6.0.2: +npmlog@6.0.2, npmlog@^6.0.0, npmlog@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== @@ -10392,6 +9729,16 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" +npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== + dependencies: + are-we-there-yet "^4.0.0" + console-control-strings "^1.1.0" + gauge "^5.0.0" + set-blocking "^2.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -10405,16 +9752,19 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" -nx@14.4.3, "nx@>=14.4.3 < 16", nx@^14.4.3: - version "14.4.3" - resolved "https://registry.yarnpkg.com/nx/-/nx-14.4.3.tgz#27a1aea9ffaf143800c20006ed20f9a26f4610a3" - integrity sha512-XPaoEAfJI9056qdwTvkutQSwwA3iihqNDwhvk3dmgpT35j8Uzm/y67goACaCUBCjP2dIQqXfNfJVWQIpcG3MTw== +nx@15.9.2, "nx@>=15.5.2 < 16", nx@^15.9.2: + version "15.9.2" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.9.2.tgz#d7ace1e5ae64a47f1b553dc5da08dbdd858bde96" + integrity sha512-wtcs+wsuplSckvgk+bV+/XuGlo+sVWzSG0RpgWBjQYeqA3QsVFEAPVY66Z5cSoukDbTV77ddcAjEw+Rz8oOR1A== dependencies: - "@nrwl/cli" "14.4.3" - "@nrwl/tao" "14.4.3" + "@nrwl/cli" "15.9.2" + "@nrwl/tao" "15.9.2" "@parcel/watcher" "2.0.4" - chalk "4.1.0" - chokidar "^3.5.1" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" cli-cursor "3.1.0" cli-spinners "2.6.1" cliui "^7.0.2" @@ -10423,23 +9773,35 @@ nx@14.4.3, "nx@>=14.4.3 < 16", nx@^14.4.3: fast-glob "3.2.7" figures "3.2.0" flat "^5.0.2" - fs-extra "^10.1.0" + fs-extra "^11.1.0" glob "7.1.4" ignore "^5.0.4" js-yaml "4.1.0" - jsonc-parser "3.0.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" minimatch "3.0.5" npm-run-path "^4.0.1" open "^8.4.0" semver "7.3.4" string-width "^4.2.3" + strong-log-transformer "^2.1.0" tar-stream "~2.2.0" tmp "~0.2.1" - tsconfig-paths "^3.9.0" + tsconfig-paths "^4.1.2" tslib "^2.3.0" v8-compile-cache "2.3.0" - yargs "^17.4.0" - yargs-parser "21.0.1" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nrwl/nx-darwin-arm64" "15.9.2" + "@nrwl/nx-darwin-x64" "15.9.2" + "@nrwl/nx-linux-arm-gnueabihf" "15.9.2" + "@nrwl/nx-linux-arm64-gnu" "15.9.2" + "@nrwl/nx-linux-arm64-musl" "15.9.2" + "@nrwl/nx-linux-x64-gnu" "15.9.2" + "@nrwl/nx-linux-x64-musl" "15.9.2" + "@nrwl/nx-win32-arm64-msvc" "15.9.2" + "@nrwl/nx-win32-x64-msvc" "15.9.2" oauth-sign@~0.9.0: version "0.9.0" @@ -10460,10 +9822,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.0, object-inspect@^1.12.2, object-inspect@^1.9.0, object-inspect@~1.12.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.12.3, object-inspect@^1.9.0, object-inspect@~1.12.3: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-is@^1.0.1: version "1.1.5" @@ -10500,16 +9862,6 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" @@ -10520,7 +9872,7 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.0.3: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: version "2.1.5" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== @@ -10530,16 +9882,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.4" es-abstract "^1.20.4" -object.getownpropertydescriptors@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== - dependencies: - array.prototype.reduce "^1.0.4" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -10589,9 +9931,9 @@ open@^7.4.2: is-wsl "^2.1.1" open@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -10653,16 +9995,16 @@ os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -10717,24 +10059,24 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map-series@^2.1.0: +p-map-series@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== -p-map@^4.0.0: +p-map@4.0.0, p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" -p-pipe@^3.1.0: +p-pipe@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== -p-queue@^6.6.2: +p-queue@6.6.2: version "6.6.2" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== @@ -10742,18 +10084,11 @@ p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" -p-reduce@^2.0.0, p-reduce@^2.1.0: +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== - dependencies: - p-finally "^1.0.0" - p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" @@ -10771,17 +10106,17 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -p-waterfall@^2.1.1: +p-waterfall@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== dependencies: p-reduce "^2.0.0" -pacote@^13.0.3, pacote@^13.0.5, pacote@^13.6.1: - version "13.6.1" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.1.tgz#ac6cbd9032b4c16e5c1e0c60138dfe44e4cc589d" - integrity sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw== +pacote@13.6.2, pacote@^13.6.1: + version "13.6.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== dependencies: "@npmcli/git" "^3.0.0" "@npmcli/installed-package-contents" "^1.0.7" @@ -10805,6 +10140,30 @@ pacote@^13.0.3, pacote@^13.0.5, pacote@^13.6.1: ssri "^9.0.0" tar "^6.1.11" +pacote@^15.0.0, pacote@^15.0.8: + version "15.1.1" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" + integrity sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^4.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.0.0" + ssri "^10.0.0" + tar "^6.1.11" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10823,13 +10182,13 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-conflict-json@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" - integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== dependencies: - json-parse-even-better-errors "^2.3.1" - just-diff "^5.0.1" + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" just-diff-apply "^5.2.0" parse-headers@^2.0.0: @@ -10862,22 +10221,19 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-5.0.0.tgz#f933152f3c6d34f4cf36cfc3d07b138ac113649d" - integrity sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A== +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: protocols "^2.0.0" -parse-url@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-7.0.2.tgz#d21232417199b8d371c6aec0cedf1406fd6393f0" - integrity sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg== +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: - is-ssh "^1.4.0" - normalize-url "^6.1.0" - parse-path "^5.0.0" - protocols "^2.0.1" + parse-path "^7.0.0" parseurl@~1.3.3: version "1.3.3" @@ -10908,23 +10264,24 @@ patch-package@6.2.2: tmp "^0.0.33" patch-package@^6.2.2: - version "6.4.7" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" - integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== + version "6.5.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621" + integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== dependencies: "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" + chalk "^4.1.2" cross-spawn "^6.0.5" find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" + fs-extra "^9.0.0" is-ci "^2.0.0" klaw-sync "^6.0.0" - minimist "^1.2.0" + minimist "^1.2.6" open "^7.4.2" rimraf "^2.6.3" semver "^5.6.0" slash "^2.0.0" tmp "^0.0.33" + yaml "^1.10.2" path-browserify@^1.0.0: version "1.0.1" @@ -10968,6 +10325,14 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.6.1: + version "1.6.4" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.6.4.tgz#020a9449e5382a4acb684f9c7e1283bc5695de66" + integrity sha512-Qp/9IHkdNiXJ3/Kon++At2nVpnhRiPq/aSvQN+H3U1WZbvNRK0RIQK/o4HMqPoXjpuGJUEWpHSs6Mnjxqh3TQg== + dependencies: + lru-cache "^9.0.0" + minipass "^5.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -11027,6 +10392,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@5.0.0, pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -11042,11 +10412,6 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -11076,6 +10441,14 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +postcss-selector-parser@^6.0.10: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postinstall-postinstall@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" @@ -11096,11 +10469,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== - prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -11114,23 +10482,27 @@ prettier-linter-helpers@^1.0.0: fast-diff "^1.1.2" prettier-plugin-solidity@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.2.tgz#452be4df925a4b16a974a04235839c9f56c2d10d" - integrity sha512-KC5oNbFJfyBaFiO0kl56J6AXnDmr9tUlBV1iqo864x4KQrKYKaBZvW9jhT2oC0NHoNp7/GoMJNxqL8pp8k7C/g== + version "1.1.3" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" + integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== dependencies: - "@solidity-parser/parser" "^0.15.0" + "@solidity-parser/parser" "^0.16.0" semver "^7.3.8" solidity-comments-extractor "^0.0.7" -prettier@^2.1.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^2.1.2, prettier@^2.3.1, prettier@^2.8.4: + version "2.8.7" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" + integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== -prettier@^2.3.1, prettier@^2.8.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" - integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== +pretty-format@29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" + integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" private@^0.1.6, private@^0.1.8: version "0.1.8" @@ -11142,6 +10514,11 @@ proc-log@^2.0.0, proc-log@^2.0.1: resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -11158,9 +10535,9 @@ promise-all-reject-late@^1.0.0: integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== promise-call-limit@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.1.tgz#4bdee03aeb85674385ca934da7114e9bcd3c6e24" - integrity sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q== + version "1.0.2" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" + integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== promise-inflight@^1.0.1: version "1.0.1" @@ -11278,6 +10655,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -11342,9 +10724,9 @@ pull-pushable@^2.0.0: integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== + version "3.7.0" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.7.0.tgz#85de0e44ff38a4d2ad08cc43fc458e1922f9bf0b" + integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw== pull-window@^2.1.4: version "2.1.4" @@ -11372,29 +10754,29 @@ punycode@2.1.0: integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@6.11.0, qs@^6.7.0: +qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" +qs@^6.7.0: + version "6.11.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + dependencies: + side-channel "^1.0.4" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -11424,6 +10806,11 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + radio-symbol@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/radio-symbol/-/radio-symbol-2.0.0.tgz#7aa9bfc50485636d52dd76d6a8e631b290799ae1" @@ -11453,7 +10840,7 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.1, raw-body@^2.4.1: +raw-body@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== @@ -11463,7 +10850,7 @@ raw-body@2.5.1, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2: +raw-body@2.5.2, raw-body@^2.4.1: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -11473,17 +10860,22 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -read-cmd-shim@^3.0.0: +read-cmd-shim@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== -read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: +read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + +read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -11491,27 +10883,15 @@ read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.2.tgz#b444d047de7c75d4a160cb056d00c0693c1df703" - integrity sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ== +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" -read-package-json@^5.0.0: +read-package-json@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.1.tgz#1ed685d95ce258954596b13e2e0e76c7d0ab4c26" integrity sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg== @@ -11521,6 +10901,26 @@ read-package-json@^5.0.0: normalize-package-data "^4.0.0" npm-normalize-package-bin "^1.0.1" +read-package-json@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" + +read-package-json@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.1.tgz#566cb06bc05dbddefba4607e9096d5a9efbcd836" + integrity sha512-AaHqXxfAVa+fNL07x8iAghfKOds/XXsu7zoouIVsbm7PEbQ3nMWXlvjcbrNLjElnUHWQtAo4QEa0RXuvD4XlpA== + dependencies: + glob "^9.3.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -11574,7 +10974,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@1, read@~1.0.1: +read@1, read@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== @@ -11582,9 +10982,9 @@ read@1, read@~1.0.1: mute-stream "~0.0.4" readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -11601,9 +11001,9 @@ readable-stream@^1.0.33: string_decoder "~0.10.x" readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -11613,6 +11013,16 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.3.0.tgz#0914d0c72db03b316c9733bb3461d64a3cc50cba" + integrity sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + readable-stream@~1.0.15: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -11623,16 +11033,6 @@ readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" -readdir-scoped-modules@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -11680,11 +11080,11 @@ rechoir@^0.6.2: resolve "^1.1.6" recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: - minimatch "3.0.4" + minimatch "^3.0.5" redent@^3.0.0: version "3.0.0" @@ -11735,11 +11135,6 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -11834,6 +11229,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -11841,16 +11241,16 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -11868,12 +11268,12 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.8.1, resolve@~1.22.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.8.1, resolve@~1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.11.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -11884,6 +11284,13 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -11928,6 +11335,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -11968,9 +11382,9 @@ rustbn.js@~0.2.0: integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== rxjs@^7.5.5: - version "7.5.6" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" - integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== dependencies: tslib "^2.1.0" @@ -12075,22 +11489,22 @@ semver@7.3.4: dependencies: lru-cache "^6.0.0" +semver@7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.8: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.4.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318" + integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== dependencies: lru-cache "^6.0.0" @@ -12256,11 +11670,20 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +sigstore@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.2.0.tgz#ae5b31dac75c2d31e7873897e2862f0d0b205bce" + integrity sha512-Fr9+W1nkBSIZCkJQR7jDn/zI0UXNsVpp+7mDQkCnZOIxG9p6yNXBx9xntHsfUyYHE55XDkkVV3+rYbrkzAeesA== + dependencies: + "@sigstore/protobuf-specs" "^0.1.0" + make-fetch-happen "^11.0.1" + tuf-js "^1.0.0" + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -12292,6 +11715,11 @@ sinon@^14.0.0: nise "^5.1.2" supports-color "^7.2.0" +slash@3.0.0, slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -12302,11 +11730,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -12351,24 +11774,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks-proxy-agent@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" - integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -12378,10 +11783,10 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks@^2.3.3, socks@^2.6.2: - version "2.7.0" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" - integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== +socks@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== dependencies: ip "^2.0.0" smart-buffer "^4.2.0" @@ -12464,13 +11869,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -sort-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^2.0.0" - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -12528,9 +11926,9 @@ source-map@~0.2.0: amdefine ">=0.0.4" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -12549,9 +11947,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -12594,20 +11992,20 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -ssri@^9.0.0: +ssri@9.0.1, ssri@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== dependencies: minipass "^3.1.1" +ssri@^10.0.0, ssri@^10.0.1: + version "10.0.3" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.3.tgz#7f83da39058ca1d599d174e9eee4237659710bf4" + integrity sha512-lJtX/BFPI/VEtxZmLfeh7pzisIs6micwZ3eruD3+ds9aPsXKlYpwDS2Q7omD6WC42WO9+bnUSzlMmfv8uK8meg== + dependencies: + minipass "^4.0.0" + stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -12694,23 +12092,14 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.trim@~1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz#824960787db37a9e24711802ed0c1d1c0254f83e" - integrity sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== +string.prototype.trim@^1.2.7, string.prototype.trim@~1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string.prototype.trimend@^1.0.6: version "1.0.6" @@ -12721,15 +12110,6 @@ string.prototype.trimend@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - string.prototype.trimstart@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" @@ -12837,7 +12217,7 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strong-log-transformer@^2.1.0: +strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== @@ -12897,15 +12277,15 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== dependencies: bluebird "^3.5.0" buffer "^5.0.5" eth-lib "^0.1.26" fs-extra "^4.0.2" - got "^7.1.0" + got "^11.8.5" mime-types "^2.1.16" mkdirp-promise "^5.0.1" mock-fs "^4.1.0" @@ -12924,9 +12304,9 @@ table-layout@^1.0.2: wordwrapjs "^4.0.0" table@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -12935,24 +12315,24 @@ table@^6.8.0: strip-ansi "^6.0.1" tape@^4.6.3: - version "4.15.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.15.1.tgz#88fb662965a11f9be1bddb04c11662d7eceb129e" - integrity sha512-k7F5pyr91n9D/yjSJwbLLYDCrTWXxMSXbbmHX2n334lSIc2rxeXyFkaBv4UuUd2gBYMrAOalPutAiCxC6q1qbw== + version "4.16.2" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.16.2.tgz#7565e6af20426565557266e9dda7215869b297b6" + integrity sha512-TUChV+q0GxBBCEbfCYkGLkv8hDJYjMdSWdE0/Lr331sB389dsvFUHNV9ph5iQqKzt8Ss9drzcda/YeexclBFqg== dependencies: call-bind "~1.0.2" deep-equal "~1.1.1" - defined "~1.0.0" + defined "~1.0.1" dotignore "~0.1.2" for-each "~0.3.3" - glob "~7.2.0" + glob "~7.2.3" has "~1.0.3" inherits "~2.0.4" is-regex "~1.1.4" - minimist "~1.2.6" - object-inspect "~1.12.0" - resolve "~1.22.0" + minimist "~1.2.7" + object-inspect "~1.12.3" + resolve "~1.22.1" resumer "~0.0.0" - string.prototype.trim "~1.2.5" + string.prototype.trim "~1.2.7" through "~2.3.8" tar-stream@~2.2.0: @@ -12966,6 +12346,18 @@ tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" +tar@6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tar@^4.0.2: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -12979,23 +12371,39 @@ tar@^4.0.2: safe-buffer "^5.2.1" yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== +tar@^6.1.11, tar@^6.1.2: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" - minipass "^3.0.0" + minipass "^4.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" -temp-dir@^1.0.0: +temp-dir@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65" + integrity sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + terminal-paginator@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/terminal-paginator/-/terminal-paginator-2.0.2.tgz#967e66056f28fe8f55ba7c1eebfb7c3ef371c1d3" @@ -13053,7 +12461,7 @@ time-stamp@^1.0.1: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== -timed-out@^4.0.0, timed-out@^4.0.1: +timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== @@ -13146,22 +12554,15 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -treeverse@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" - integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== trim-newlines@^3.0.0: version "3.0.1" @@ -13174,9 +12575,9 @@ trim-right@^1.0.1: integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== ts-command-line-args@^2.2.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.4.2.tgz#b4815b23c35f8a0159d4e69e01012d95690bc448" - integrity sha512-mJLQQBOdyD4XI/ZWQY44PIdYde47JhV2xl380O7twPkTQ+Y5vFDHsk8LOeXKuz7dVY5aDCfAzRarNfSqtKOkQQ== + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz#7eeed3a6937b2612ea08a0794cf9d43fbbea89c4" + integrity sha512-Ff7Xt04WWCjj/cmPO9eWTJX3qpBZWuPWyQYG1vnxJao+alWWYjwJBc5aYz3h5p5dE08A6AnpkgiCtP/0KXXBYw== dependencies: "@morgan-stanley/ts-mocking-bird" "^0.6.2" chalk "^4.1.0" @@ -13233,13 +12634,12 @@ ts-node@^10.9.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths@^3.9.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" + json5 "^2.2.2" minimist "^1.2.6" strip-bom "^3.0.0" @@ -13248,10 +12648,10 @@ tslib@^1.8.1, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tsort@0.0.1: version "0.0.1" @@ -13265,6 +12665,14 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tuf-js@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.3.tgz#db3aada70fbf91fd9def9ad255645eaf81309f69" + integrity sha512-jGYi5nG/kqgfTFQSdoN6PW9eIn+XRZqdXku+fSwNk6UpWIsWaV7pzAqPgFr85edOPhoyJDyBqCS+DCnHroMvrw== + dependencies: + "@tufjs/models" "1.0.2" + make-fetch-happen "^11.0.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -13306,6 +12714,11 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -13354,10 +12767,10 @@ type@^1.0.1: resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -type@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" - integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== typechain@^3.0.0: version "3.0.0" @@ -13388,6 +12801,15 @@ typechain@^8.1.1: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -13400,10 +12822,15 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +"typescript@^3 || ^4": + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" @@ -13438,9 +12865,9 @@ typical@^5.2.0: integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== uglify-js@^3.1.4: - version "3.16.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.3.tgz#94c7a63337ee31227a18d03b8a3041c210fd1f1d" - integrity sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw== + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== ultron@~1.1.0: version "1.1.1" @@ -13462,10 +12889,10 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undici@^5.14.0, undici@^5.4.0: - version "5.19.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.19.1.tgz#92b1fd3ab2c089b5a6bd3e579dcda8f1934ebf6d" - integrity sha512-YiZ61LPIgY73E7syxCDxxa3LV2yl3sN8spnIuTct60boiiRaE1J8mNWHO8Im2Zi/sFrPusjLlmRPrsyraSqX6A== +undici@^5.14.0: + version "5.21.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.21.2.tgz#329f628aaea3f1539a28b9325dccc72097d29acd" + integrity sha512-f6pTQ9RF4DQtwoWSaC42P/NKlUjvezVvd9r155ohqkwFNRyBKM3f3pcty3ouusefNRyM25XhIQEbeQ46sZDJfQ== dependencies: busboy "^1.6.0" @@ -13479,20 +12906,41 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== dependencies: - unique-slug "^2.0.0" + unique-slug "^3.0.0" -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== dependencies: imurmurhash "^0.1.4" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -13526,7 +12974,7 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^2.0.1: +upath@2.0.1, upath@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== @@ -13543,13 +12991,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== - dependencies: - prepend-http "^1.0.1" - url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" @@ -13562,11 +13003,6 @@ url-set-query@^1.0.0: resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -13581,9 +13017,9 @@ use@^3.1.0: integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== utf-8-validate@^5.0.2: - version "5.0.9" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" @@ -13592,7 +13028,7 @@ utf8@3.0.0, utf8@^3.0.0: resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -13618,6 +13054,11 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@8.3.2, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -13628,17 +13069,12 @@ uuid@^7.0.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: +v8-compile-cache@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -13648,7 +13084,7 @@ valid-url@^1.0.9: resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -13656,6 +13092,13 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@4.0.0, validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" @@ -13663,10 +13106,10 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -validate-npm-package-name@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" - integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== +validate-npm-package-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" + integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== dependencies: builtins "^5.0.0" @@ -13958,23 +13401,10 @@ web3-utils@1.2.11: underscore "1.9.1" utf8 "3.0.0" -web3-utils@^1.0.0-beta.31: - version "1.7.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" - integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== - 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" - -web3-utils@^1.3.6: - version "1.8.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.1.tgz#f2f7ca7eb65e6feb9f3d61056d0de6bbd57125ff" - integrity sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ== +web3-utils@^1.0.0-beta.31, web3-utils@^1.3.6: + version "1.9.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.9.0.tgz#7c5775a47586cefb4ad488831be8f6627be9283d" + integrity sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ== dependencies: bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" @@ -14002,11 +13432,6 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - websocket@1.0.32: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" @@ -14044,15 +13469,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.4.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -14074,6 +13490,18 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -14088,6 +13516,13 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +which@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-3.0.0.tgz#a9efd016db59728758a390d23f1687b6e8f59f8e" + integrity sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ== + dependencies: + isexe "^2.0.0" + wide-align@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -14169,6 +13604,14 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" @@ -14178,20 +13621,10 @@ write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-file-atomic@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== +write-file-atomic@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.0.tgz#54303f117e109bf3d540261125c8ea5a7320fab0" + integrity sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" @@ -14208,19 +13641,7 @@ write-json-file@^3.2.0: sort-keys "^2.0.0" write-file-atomic "^2.4.2" -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@^4.0.0: +write-pkg@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== @@ -14234,11 +13655,6 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@7.5.9, ws@^7.4.5, ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -14255,10 +13671,15 @@ ws@^5.1.1: dependencies: async-limiter "~1.0.0" -ws@^8.12.1: - version "8.12.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" - integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== +ws@^7.4.1, ws@^7.4.5, ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== xhr-request-promise@^0.1.2: version "0.1.3" @@ -14339,7 +13760,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: +yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -14357,10 +13778,10 @@ yargs-parser@20.2.4: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@21.0.1, yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yargs-parser@21.1.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs-parser@^2.4.1: version "2.4.1" @@ -14423,18 +13844,18 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.4.0: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== +yargs@^17.6.2: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^21.0.0" + yargs-parser "^21.1.1" yargs@^4.7.1: version "4.8.1"